技术选型
对比维度
|
Activiti7
|
Flowable6
|
Camunda
|
JBPM
|
JFlow
|
---|---|---|---|---|---|
规范 | BMPN2.0、XPDL、JPDL | BMPN2.0、XPDL、JPDL | BMPN2.0、XPDL、JPDL | BMPN2.0 | BMPN2.0、Ccbpm |
成熟度 | 高 | 高 | 高 | 高 | 高 |
使用成本 | 低 | 较低 | 低 | 高 | 较低 |
技术生态 | Aifresco | Tijs Rademakers | Camunda | JBoss | 驰骋 |
开发体验 | 好,需汉化 | 好,需汉化 |
好,需汉化 |
差 | 好 |
文档 | 好 | 较少 | 较少 | 较少 | 较少 |
活跃度 | 活跃 | 活跃 | 活跃 | 活跃 | 一般 |
开源情况 | 开源 | 开源+商业 | 开源+商业 | 开源 | 开源 |
数据库持久层 | Mybatis | JPA | Hibernate | JPA | |
持久化标准 | JPA规范 | JPA规范 | JPA规范 | JPA规范 | JPA规范 |
事物管理 | Mabitas机制、Spring事务控制 | Hibernate机制、Spring事务控制 | Hibernate机制、Spring事务控制 | Bitronx、基于JTA事务管理 | |
分布式事务 | Mabitas机制、Spring事务控制 | 补偿机制,SAGA模式 | Bitronx、基于JTA事务管理 | ||
支持数据库 | H2、Mysql、Oracle、Postgers、Db2、Mssql | Mysql、Oracle、Postgers、Mssql | Mysql、Oracle、Postgers、Mssql | Mysql、Postgers | Mysql、Oracle、Mssql |
集群部署 | 支持 | 支持 | 支持 | 支持 | 支持 |
内部服务通讯 | Service间API调研 | Service间API调研 | Service间API调研 |
基于Apache Mina异步通讯 |
|
集成接口 | SOAP、Mule、RESTful | SOAP、Mule、RESTful | SOAP、Mule、RESTful | 消息通讯 | SOAP、Mule、RESTful |
引擎核心 | 去除PVM(流程虚拟机) | 去除PVM(流程虚拟机) | PVM | Drools | 自研 |
架构 | Springboot2 | Springboot1.5 | Springboot2 | Kie | Springboot2 |
技术前身 | jBPM4 | Activiti6 | Activiti5 | Drools Flow | 自研 |
二次开发难度 | 一般 | 一般 | 一般 | 较难 | 一般 |
整体架构
功能模块
触发器
- 工作表
- 时间
- 日期
- 组织人员事件
- 外部人员事件
- webhook
动作节点
- 数据处理
- 人工
- 构建
- 人员、部门、协作
- 开发者
流程管理
- 启停
- 状态管理
- 统计分析
- 监控
- 待办任务
- 已办任务
- 历史任务
网关
并行网关排他网关包含网关
工作流状态
- 草稿
- 提交
- 驳回
- 作废
- 暂存
- 转办
- 转阅
工作流操作
- 加签
- 会签
- 流转
- 驳回
- 撤回
- 结束
高级功能
- 多人会签
- 跨系统审批
- 表单数据批量处理
- 子流程
接口SDK
- 角色、用户接口
- 触发器接口
- 动作节点接口
- 流程操作接口
- 流程历史接口
与表单引擎的关系
动态表单、普通表单、外置表单
用户对接
封装通用的用户对接方法,对接系统用户。待详细调研。
其他
一个流程模板可生成多个实例(如对象实例化一样),每个实例中包含多个处理步骤,每个处理步骤中蕴含了所指定的表单(数据呈现)、处理动作、运转规则、提醒处理等。
其中处理动作主要是:草稿,提交,驳回,作废,暂存,转办,转阅。
处理规则就是根据流程的运转模型而定,顺序模式,单选模式,并行分支模式,汇聚模式,转办模式,驳回模式等
而表单,则是流程步骤处理时的数据展现形式,可理解为页面。里面的数据及呈现需根据自身业务情况而定。流程与表单的结合是一个难点。