整体架构与目录
大约 2 分钟约 573 字
整体架构与目录
本文说明当前工作流插件和业务模块的代码边界。后续新增业务流程时,目录和接入方式以本文为准。
核心职责
工作流插件负责流程设计、发布、实例启动、待办生成、审批推进、流程结束通知和回调调度。业务模块负责自己的业务数据、业务状态、权限校验、提交规则和审批完成后的状态回写。
前端工作流页面负责流程设计和审批处理。业务页面负责创建业务单据,并通过统一的业务流程发起弹窗提交审批。
后端目录
Admin.NET/
├─ Admin.NET.Application/
│ ├─ Const/BusinessModuleConst.cs
│ ├─ Entity/Leave.cs
│ └─ Service/Workflow/Leave/
│ ├─ LeaveService.cs
│ └─ Dto/LeaveDto.cs
└─ Plugins/Admin.NET.Plugin.WorkFlow/
├─ Configuration/WorkFlow.json
├─ Entity/
├─ Enum/
├─ Service/Workflow/
├─ Service/Workflow/Dtos/
├─ Attribute/WorkflowFieldAttribute.cs
└─ doc/业务模块代码放在 Admin.NET.Application。工作流插件代码放在 Admin.NET.Plugin.WorkFlow,不要把业务模块的接口、DTO、实体塞进插件目录。
前端目录
Web/src/
├─ api/
│ ├─ demo/leave.ts
│ └─ workflow/
├─ views/demo/leave/
│ ├─ index.vue
│ └─ LeaveDetail.vue
└─ views/workFlow/
├─ components/
│ ├─ BusinessWorkflowStartDialog.vue
│ ├─ BusinessModuleDetail.vue
│ └─ FormRender.vue
├─ processDesign/
├─ pendingTasks/
├─ myInitiatedTasks/
├─ completedTasks/
├─ utils/businessModuleConfig.ts
└─ workflowForm/
├─ index.ts
├─ types.ts
├─ leave.ts
└─ expense.ts当前业务模块前端注册点是 Web/src/views/workFlow/workflowForm/*.ts。workflowForm/index.ts 会自动聚合配置,utils/businessModuleConfig.ts 会基于这些配置生成业务模块选项、API 适配和详情组件加载器。
关键链路
flowchart LR
A["业务页面<br/>Web/src/views/demo/leave/index.vue"] --> B["BusinessWorkflowStartDialog"]
B --> C["业务模块 submit API<br/>/api/demo/leave/submit"]
C --> D["WorkflowInstanceService.StartWorkflow"]
D --> E["WorkflowInstance / FormRecord / Todo"]
E --> F["审批人处理待办"]
F --> G["WorkflowApprovalService 推进流程"]
G --> H{"IWorkflowCompletedHandler<br/>匹配 BusinessModule?"}
H -- 是 --> I["依赖注入处理器 HandleAsync"]
H -- 否 --> J["HTTP 回调<br/>/api/demo/leave/workflow/callback"]
I --> K["回写业务状态"]
J --> K当前有效规则
- 流程设计时要选择业务模块,例如
Leave。 - 前端业务模块
value必须与后端BusinessModuleConst常量值一致,大小写敏感。 - 业务页面提交审批时使用
BusinessWorkflowStartDialog,弹窗会按businessModule加载可用流程。 - 弹窗优先调用业务模块自己的
submitApi。只有没有注册业务模块配置时才会兜底调用/api/workflow/startWorkflow。 - 审批完成或拒绝后,
WorkflowApprovalService会按WorkFlow:BusinessModuleCallbackRouteTemplate回调业务模块。
历史目录说明
Web/src/views/workFlow/dataApproval 是旧版设计器和旧表单相关目录,只作为历史兼容参考。新增业务流程不要再按旧文档把配置写到 dataApproval 或手动维护零散映射。