传统的工作流使用状态值进行流程跳转,和代码是高度耦合的,即使流程需要再小的调整,都需要修改源码。因此业务流程与代码需要解耦,通过将状态值改变为状态流(数据流),将节点信息存储在数据库中,代码只需要进行业务处理,流程的流转全权交给工作流引擎进行处理。
那么流程引擎为我们做了哪些事呢?
1.解析bpmn(xml),将流程存储到数据库
2.通过数据库表驱动的方式实现自动化的流程流转
3.通过工厂+策略+代理等模式封装节点流转逻辑
4.方法加强,实现网关,并行,会签,驳回,触发器等功能
总结:使用工作流引擎是为了将业务与流程分离,实现代码的高内聚,低耦合。提高系统的健壮性与可维护性。