| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using Abp;
- using Abp.Domain.Repositories;
- using Abp.Domain.Uow;
- using Abp.Linq;
- using Newtonsoft.Json;
- using System.Dynamic;
- using VberZero.Authorization;
- using VberZero.Session;
- using VberZero.Tools.StringModel;
- using VberZero.Workflow;
- using VberZero.Workflow.DesignInfo;
- using VberZero.Workflow.Persistence;
- using WorkflowCore.Models;
- namespace VberZero.Workflows;
- public class VbWorkflowPersistenceProvider : VberPersistenceProvider
- {
- public VbWorkflowPersistenceProvider(IRepository<WorkflowEventInfo, string> eventRepository, IRepository<WorkflowExecutionPointerInfo, string> executionPointerRepository, IRepository<WorkflowInfo, string> workflowRepository, IRepository<WorkflowSubscriptionInfo, string> eventSubscriptionRepository, IGuidGenerator guidGenerator, IAsyncQueryableExecuter asyncQueryableExecuter, IRepository<WorkflowExecutionErrorInfo, string> executionErrorRepository, IRepository<WorkflowDefinitionInfo, string> workflowDefinitionRepository) : base(eventRepository, executionPointerRepository, workflowRepository, eventSubscriptionRepository, guidGenerator, asyncQueryableExecuter, executionErrorRepository, workflowDefinitionRepository)
- {
- }
- public new IVzSession AbpSession { get; set; }
- [UnitOfWork]
- public override async Task<string> CreateNewWorkflow(WorkflowInstance workflow, CancellationToken cancellationToken = new())
- {
- var entity = GenerateWorkflow(workflow);
- if (workflow.Reference.NotEmpty())
- {
- var customId = GetWorkflowIdFromReference(workflow.Reference);
- if (customId.NotEmpty())
- {
- entity.Id = customId;
- }
- }
- if (AbpSession.UserId.HasValue)
- {
- var name = AbpSession.GetClaimValue(VzClaimTypes.RealName);
- entity.CreateUserIdentityName = name;
- }
- await _workflowRepository.InsertAsync(entity);
- await CurrentUnitOfWork.SaveChangesAsync();
- return workflow.Id;
- }
- protected virtual string GetWorkflowIdFromReference(string reference)
- {
- try
- {
- dynamic dyObj = JsonConvert.DeserializeObject<ExpandoObject>(reference);
- return dyObj.WorkflowId.ToString();
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- return null;
- }
- }
- }
|