IFlowBizHandler.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. namespace Admin.NET.Plugin.ApprovalFlow.Service;
  2. /// <summary>
  3. /// 业务流程回调处理器接口
  4. /// 每种 BizType 实现一个 Handler,注册到 DI 容器
  5. /// </summary>
  6. public interface IFlowBizHandler
  7. {
  8. /// <summary>
  9. /// 业务类型编码(与流程定义的 BizType 匹配)
  10. /// </summary>
  11. string BizType { get; }
  12. /// <summary>
  13. /// 流程发起后回调(可选:更新业务表状态为"审批中")
  14. /// </summary>
  15. Task OnFlowStarted(long bizId, long instanceId) => Task.CompletedTask;
  16. /// <summary>
  17. /// 流程结束后回调(必须:更新业务表最终状态)
  18. /// </summary>
  19. /// <param name="bizId">业务实体 Id</param>
  20. /// <param name="instanceId">审批流实例 Id(P4-17 新增,便于业务侧留痕/关联)</param>
  21. /// <param name="finalStatus">流程最终状态(Approved / Rejected / Cancelled / Terminated)</param>
  22. /// <param name="lastApproverId">
  23. /// 最后一位审批人 UserId(P4-17 新增)。
  24. /// Approved → 最后一个同意节点的操作人;
  25. /// Rejected → 驳回人(人工驳回)或 null(系统超时自动拒绝);
  26. /// Cancelled → null(系统/发起人撤回);
  27. /// Terminated → null。
  28. /// </param>
  29. Task OnFlowCompleted(long bizId, long instanceId, FlowInstanceStatusEnum finalStatus, long? lastApproverId);
  30. /// <summary>
  31. /// 单个节点审批完成回调(可选:按节点推进业务进度)
  32. /// </summary>
  33. /// <param name="bizId">业务实体 Id</param>
  34. /// <param name="instanceId">审批流实例 Id(P4-17 新增)</param>
  35. /// <param name="nodeId">节点 Id</param>
  36. /// <param name="nodeName">节点名称</param>
  37. /// <param name="approverUserId">
  38. /// 该节点最后一位审批人 UserId(P4-17 新增,系统自动动作时为 null)
  39. /// </param>
  40. Task OnNodeCompleted(long bizId, long instanceId, string nodeId, string nodeName, long? approverUserId) => Task.CompletedTask;
  41. /// <summary>
  42. /// 获取业务数据用于网关条件表达式求值(可选)
  43. /// 返回 key-value 字典,key 对应条件表达式中的变量名
  44. /// 例如: { "amount": 50000, "urgent": 1, "customLevel": 3 }
  45. /// </summary>
  46. Task<Dictionary<string, object>> GetBizData(long bizId) => Task.FromResult(new Dictionary<string, object>());
  47. }