对比项\引擎 | Activiti-7.x | Flowable-6.x | Camunda- |
---|---|---|---|
商业化 | √ | √ | √ |
路线(Roadmap) | 云 | 工具型 | 轻量&工具型 |
PVM引擎 | × | × | √ |
BPMN2引擎 | √ | √ | √ |
CMMN引擎 | × | √ | × |
DMN引擎 | × | √(开源版支持不太好) | √ |
建模工具选型 | √(AngularJS) | √(AngularJS) | √(Bpmn.js&Camunda Provider) |
建模工具内容 | BPMN2 | BPMN2/CMMN/DMN | BPMN2/CMMN/DMN |
扩展节点(Mule/Http等) | × | √ | √ |
Spring Boot | √ | √ | √ |
Spring Cloud | √ | × | × |
Web控制台 | √ | √ | √ |
Rest接口 | √ | √ | √ |
历史异步归档 | × | √ | × |
异步任务全局锁 | × | √ | × |
activiti7:核心只支持BPMN2协议,流程方面较activiti6没有太大变更,近期重心放到了商业版和云上面,只用BPMN2协议,可以考虑。
flowable:功能和代码层面,是这三个里面最重的。更注重功能、扩展性和性能。也是因此与activiti分家。Flowable比较臃肿,它支持了太多的东西,以致于如果想做POC或者Demo,环境搭建这一步都够呛。但是如果你本身就想做一个扩展性强的,性能高的工作流平台(SaaS\PaaS),Flowable是不二的选择。大而全。
协议
BPMN
案例:请假流程是一个有严格流程顺序定义的执行流程,这种就类似我们项目中大部分工作流了,有严格执行顺序,并且根据任务类型,进行顺序执行等,这种就非常适合采用 BPMN 去创建
CMMD
案例:大人白天需要上班,想监控孩子每天在家里都干什么了?写作业、看电视、玩游戏、做家务,这种没有固定的顺序的就不适合采用BPMN协议去实现了,因此 CMMN协议就出来了,通过定义阶段(stage) 开始、结束事件、包含哪些任务 的形式进行流程定义 ,当规定在早上9点到晚上5点这个出发点内,阶段任务里面都执行了哪些进行定义,当孩子执行了某个事件就下发对应通知,这样就更符合我们的要求了
DMN
案例:学校的升旗手招聘,需要招聘3名符合身高180185的,体重 7580KG 的气质男生当升旗手,于是大家踊跃报名,那么此刻通过 DMN 决策流程进行条件筛选,只有符合条件的同学会进入下一轮筛选
工作流引擎使用场景
工作流在企业管理系统中是高频使用的功能,一个最常见的例子是请假加班申请与审批的过程。事实上,工作流引擎能支持的业务场景远远不止单据审批,几乎所有涉及到业务流转、多人按流程完成工作的场景背后都可以通过工作流引擎作为支撑。
基于工作流引擎,可以搭建客户关系管理系统(CRM)、运输管理系统(TMS)、仓储管理系统(WMS)、财务费用系统等多种复杂业务系统。对于达到一定规模的企业,良好的 BPM(业务流程管理,Business Process Management)体系可以支持创建公司内横跨不同部门的复杂业务流程,既提高工作效率、又可推动企业规范化发展。