第三天了,今天小J准备了用车申请的完整流程和对应的操作界面说明文档,余下的非重点流程在下个星期整理。小G重新改进了模型。
我们三人内部讨论了流程和模型。明天项目组和需求部门进行将开发前的第一次讨论会。
特别的,我们再次讨论了工作流实现思路。
考虑该系统中最简单的申请单审批流程:
审批流程中有 申请人、审核人两个角色,审核工作分为部门审核、分管领导审核和主管领导审核三个任务。流转的公文只有申请单一个单据。
假设目前系统只有流程1和2两个流程:
1.本地网用车申请流程:
申请人填写申请单-生成申请单据-部门审批-审批结束,转入车辆调度流程
2.出本地网省内用车申请流程:
申请人填写申请单-生成申请单据-部门审批-分管领导审批-审批结束,转入车辆调度流程
那么对应这两种情况的申请单审批流程实现如下:
1.将每个环节对应的任务生成任务表
任务编号 | 任务名称 |
Task1 | 部门审批 |
Task2 | 分管领导审批 |
2.每个流程的固定模式表 按任务顺序将对应的任务编号填入
流程模式编号 | 第一步 | 第二步 |
Flow1 | Task1 | |
Flow2 | Task1 | Task2 |
3.申请单一经填写完毕,即生成该单据的流程实例,经过程序判断,申请单1走流程模式1,单2走流2
申请单编号 | 流程状态 | 流程模式编号 |
Sheet1 | TFFFF | Flow1 |
Sheet2 | TTFFF | Flow2 |
4.同时,流程记录表增加单据的处理记录
申请单编号 | 任务编号 | 处理结果 |
Sheet1 | Task1 | 0 |
Sheet2 | Task1 | 0 |
5.审批角色中的部门审批权限上线后,搜索流程记录表,对应的任务编号有2条未处理记录,审批结束后,流程记录表变成
申请单编号 | 任务编号 | 处理结果 |
Sheet1 | Task1 | 1 |
Sheet2 | Task1 | 1 |
Sheet2 | Task2 | 0 |
6.分管领导上线后,显示一条等待处理的申请单Sheet2,处理后流程记录表如下
申请单编号 | 任务编号 | 处理结果 |
Sheet1 | Task1 | 1 |
Sheet2 | Task1 | 1 |
Sheet2 | Task2 | 1 |
那么工作流如何能够灵活配置呢?
假设我们审批流程需要增加一个流程3,里面多了任务3-主管领导审核
对应的任务表
任务编号 | 任务名称 |
Task3 | 主管领导审批 |
对应的流程模式表
流程模式编号 | 第一步 | 第二步 |
Flow3 | Task1 | Task3 |
符合流程3的申请表3对应的流程实例记录是:
申请单编号 | 流程状态 | 流程模式编号 |
Sheet1 | TTFFF | Flow3 |
该单据经过部门审批后,流程记录表中的相关记录应是:
申请单编号 | 任务编号 | 处理结果 |
Sheet3 | Task1 | 1 |
Sheet3 | Task3 | 0 |
这样就能保证主管领导审批的界面能够调出所需要处理的单据了。
以上的简单流程是顺序的,单一的,而实际的流程中存在多种返回结果和多重判断以及流程之间的跳转。
我们将进一步讨论和完善流程配置的实现方式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义