一个内部新项目有流程审批流,大部分流程节点都不多大致都3-6个节点,总共4-6个流程。但其中两个流程节点很多(流转的节点可写死,只在于人员不同,根据不同部门其中的领导层可能少1-2层)(13-15个节点)且根据不同状态有分支(且节点需可扩展推送钉钉或企微通知),但最终都是归档。
要求实现可以退回驳回至任意节点、恢复流程、监控流程状态等功能。
之前没有过写流程系统的经验,现在的想法是基于数据库表实现这个简易的流程系统,如果能用Activiti我不会来提问的。
包含流程信息表(基本状态、节点String逗号分隔)、流程节点表(流程的每个节点)、流程修改记录表(流程状态变更记录,关联审批表)、流程审批表(真实流程requestId)。节点多的两个流程直接写死插入节点表,只变更其中的人员。
总觉得有很多地方遗漏且太过耦合,且这种流程有什么设计模式可用吗?
可以参考以下两个方案:
1、责任链模式,具体参考文章可参考链接https://juejin.cn/post/6844903512506122253
2、表结构状态设计,审批流程一般涉及当前节点、下一节点以及上一个节点,然后页面添加相应按钮,操作后更改表中的状态,每个人的数据根据状态和权限显示
无解决答案,最终还是采用我说的方案。。
基于数据库进行记录各节点状态,如果有节点前后的操作就还是先删除原有流程的所有节点,再在某节点前后加上需要进行调用的类名。
还有很多问题未解决,不过小雏形已经写完了
你的想法只能满足当前这个小需求,扩展差,网上很多工作流引擎,功能强大,完全满足你的需求;集成到项目中简单学习一下就可以用,推荐Activiti,flowable
责任链嘛,把每种流程构建一条链路;当前节点 -》 下一节点( 返回到上一节点或某一节点)
其实你的基本设计没什么问题,不过你设计的表相当于都是对流程规则进行定义的流程定义表,在加一套相应的实例表,即发起一个流程时对应的流程信息,每走一个步骤时的节点实例,以及每个节点关联的数据等信息