VbWorkflowPersistenceProvider.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Abp;
  2. using Abp.Domain.Repositories;
  3. using Abp.Domain.Uow;
  4. using Abp.Linq;
  5. using VberZero.Authorization;
  6. using VberZero.Session;
  7. using VberZero.Workflow;
  8. using VberZero.Workflow.DesignInfo;
  9. using VberZero.Workflow.Persistence;
  10. using WorkflowCore.Models;
  11. namespace VberZero.Workflows;
  12. public class VbWorkflowPersistenceProvider : VberPersistenceProvider
  13. {
  14. 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)
  15. {
  16. }
  17. public new IVzSession AbpSession { get; set; }
  18. [UnitOfWork]
  19. public override async Task<string> CreateNewWorkflow(WorkflowInstance workflow, CancellationToken cancellationToken = new())
  20. {
  21. var entity = GenerateWorkflow(workflow);
  22. if (AbpSession.UserId.HasValue)
  23. {
  24. var name = AbpSession.GetClaimValue(VzClaimTypes.RealName);
  25. entity.CreateUserIdentityName = name;
  26. }
  27. await _workflowRepository.InsertAsync(entity);
  28. await CurrentUnitOfWork.SaveChangesAsync();
  29. return workflow.Id;
  30. }
  31. }