**
代码小白说一下,我用过的工作流的经验。
Activiti:
**
疑问:
工作流是什么,为什么用工作流,什么情况用工作流?我相信这是萦绕在大多数人的心中的问题
工作流是什么:
直译:工作流程,流水线
都对,但是我听到的这句话比较好:描述事物的执行状态的变化
运用工作流的场景:
- 多级审批,需要卡住某一节点,同时接收或处理后执行,或者什么情况走这个,什么情况走下一步,需要退回,跳转,每步都有日志处理,变量的处理
例举了个场景,该怎么和业务耦合:
一. 多级审批,需要卡住某一节点,同时接收或处理后执行,或者什么情况走这个,什么情况走下一步,需要退回,跳转,每步都有日志处理,变量的处理
大多数的做法可能是,新建张审批表,记录审批的结果,新建张节点审批表,用节点关联角色。
这个做法,没问题。
- 可读性:数据库的每行在你回导数据的时候,需要一行行找信息,如果有多个审批流程,还有过滤条件
- 如果我要在流程单独存入某些过程限制变量,还需要扩展字段,扩展字段意味着数据库映射需要变动,可扩展性基本为0,在需求不定死的前提下,基本是改 改 改
如果是工作流该怎么做:
注意:工作流是个框架,要有基本概念,基本与业务解耦,所以扩展性会比 耦合的高
1.拿到手一套流程,肯定要画流程图,把场景画出来,这样很清晰的描绘了一个整体流程是什么,并且每个节点的都可以关联表单,表单就有对应的业务数据做临时入库,而且每个任务都可以绑定变量,通过变量可以做业务数据的存储,图例上展示不出临时变量,但可以展示,desc,assign 作者,验证用户,验证组,任务名称,如果需要加需求要存储审批过程中的一些请求原因,请求地点,可以,直接setvariable 存入变量,不需要有所表的扩展
2.业务退回,跳转,代码的实现,是判断,或者内部写一套路由做状态改变的跳转,工作流的话,可以根据当前状态,在业务节点上做退回,跳转可以通过先暂时改变图的线路,然后进行跳转
工作流我发现的弊端:
1。就是它完善的体制,每步都有历史流程,历史任务,历史变量这些的产生,其次还有一些存取表单结果的JSON等数据,我觉得业务与之关联,可以着重用,不需要自己在建表,但是工作流的表要有定期去删除的机制
2.还有个弊端就是,业务的节点要是诱发性的,触发工作流的方法,相当于通知,但是,我觉得,我只是粗俗的再用,可能更为好的用是写一组监听,做一组任务表和变量关系表,做一套自动化的流程处理,进行解耦
有不对或者没描述清楚的地方,欢迎一起讨论