IWorkflowApplication.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using Hotline.FlowEngine.Definitions;
  2. using Hotline.FlowEngine.WorkflowModules;
  3. using Hotline.FlowEngine.Workflows;
  4. using Hotline.Orders;
  5. using Hotline.Share.Dtos;
  6. using Hotline.Share.Dtos.File;
  7. using Hotline.Share.Dtos.FlowEngine;
  8. using Hotline.Share.Dtos.FlowEngine.Definition;
  9. using Hotline.Share.Dtos.Order;
  10. using Hotline.Share.Dtos.Settings;
  11. using Hotline.Share.Enums.FlowEngine;
  12. using XF.Domain.Authentications;
  13. namespace Hotline.Application.FlowEngine
  14. {
  15. public interface IWorkflowApplication
  16. {
  17. /// <summary>
  18. /// 开始流程
  19. /// </summary>
  20. Task<string> StartWorkflowAsync(StartWorkflowDto dto, ISessionContext current, string externalId, DateTime? expiredTime = null,
  21. CancellationToken cancellationToken = default);
  22. /// <summary>
  23. /// 流转至下一节点(节点办理)
  24. /// </summary>
  25. Task<Workflow> NextAsync(NextWorkflowDto dto, ISessionContext current, DateTime? expiredTime = null,
  26. CancellationToken cancellationToken = default);
  27. /// <summary>
  28. /// 退回(返回前一节点)
  29. /// </summary>
  30. Task PreviousAsync(PreviousWorkflowDto dto, CancellationToken cancellationToken);
  31. /// <summary>
  32. /// 工单退回(返回前一节点)
  33. /// </summary>
  34. Task PreviousAsync(PreviousWorkflowDto dto, string userId, CancellationToken cancellationToken);
  35. /// <summary>
  36. /// 撤回至任意节点
  37. /// </summary>
  38. Task RecallAsync(RecallDto dto, DateTime? expiredTime, CancellationToken cancellationToken);
  39. /// <summary>
  40. /// 跳转至结束节点(无视流程模板配置直接跳至结束节点)
  41. /// </summary>
  42. Task HandleToEndAsync(ISessionContext current, string workflowId, string opinion, List<FileDto> file,
  43. EReviewResult? reviewResult = EReviewResult.Unknown, CancellationToken cancellationToken = default);
  44. ////////
  45. /// <summary>
  46. /// 查询开始流程的下一步待选节点
  47. /// </summary>
  48. Task<NextStepsDto<NextStepOption>> GetStartStepsAsync(string moduleCode, CancellationToken cancellationToken);
  49. /// <summary>
  50. /// 查询办理流程的下一步待选节点
  51. /// </summary>
  52. Task<NextStepsWithOpinionDto<NextStepOption>> GetNextStepsAsync(string workflowId, CancellationToken cancellationToken);
  53. /// <summary>
  54. /// 查询撤回可选节点
  55. /// </summary>
  56. Task<NextStepsDto<RecallStepOption>> GetRecallStepsAsync(string workflowId, CancellationToken cancellationToken);
  57. /// <summary>
  58. /// 否决
  59. /// </summary>
  60. Task RejectAsync(RejectDto dto, CancellationToken cancellationToken);
  61. /// <summary>
  62. /// 获取流程模板信息
  63. /// </summary>
  64. /// <param name="code"></param>
  65. /// <param name="cancellationToken"></param>
  66. /// <returns></returns>
  67. Task<WorkflowModule> GetWorkflowModuleAsync(string code, CancellationToken cancellationToken);
  68. /// <summary>
  69. /// 检查退回节点信息
  70. /// </summary>
  71. Task<(WorkflowStep currentStep, WorkflowStep prevStep, bool isOrgToCenter, bool isSecondToFirstOrgLevel)>
  72. GetPreviousInformationAsync(string workflowId, string operatorId, string operatorOrgId,
  73. CancellationToken cancellationToken);
  74. /// <summary>
  75. /// 开启流程直接归档
  76. /// </summary>
  77. Task StartToEndAsync(StartWorkflowDto dto, ISessionContext current, string externalId, DateTime? expiredTime = null,
  78. CancellationToken cancellationToken = default);
  79. }
  80. }