【工作流引擎】Flowable 和 Activiti
Flowable 与 Activiti 的关系
Flowable 和 Activiti 有着非常密切的关系,它们都是开源的工作流引擎,用于业务流程管理(BPM)和工作流系统。
历史渊源
-
共同起源:Flowable 实际上是从 Activiti 分离出来的一个分支。Flowable 的核心开发团队原本就是 Activiti 的原班人马。
-
创始人背景:Activiti 的创始人 Tom Baeyens 最初在 2002 年创建了基于状态机原理的 jBPM 流程引擎。后来他加入了 Alfresco 公司并开发了 Activiti。
-
分叉事件:由于 Alfresco 公司对 Activiti 的商业化策略以及发展方向存在分歧,核心开发团队离开了 Alfresco 公司,并创建了 Flowable 项目。
主要区别
-
发展路径:
- Activiti 继续由 Alfresco 公司维护,但核心开发者离职后发展不太明确
- Flowable 由原 Activiti 团队继续开发,拥有更一致的技术路线
-
功能特性:
- 两者都支持 BPMN 2.0 标准
- Flowable 在 Activiti 的基础上进行了优化和改进
- 表结构设计相似,迁移相对容易
-
社区和生态:
- 两者都有活跃的开源社区
- Flowable 在某些方面更加注重性能和稳定性
选择建议
如果您正在选择工作流引擎:
- 如果您需要一个稳定、高性能且持续维护的流程引擎,Flowable 是一个不错的选择
- 如果您已有基于 Activiti 的系统,可以考虑迁移到 Flowable,因为两者在设计上非常相似
总的来说,Flowable 可以看作是 Activiti 的一个改进分支,继承了 Activiti 的核心设计理念,并在此基础上进行了优化和扩展。
Flowable 与 Activiti 数据表的关系
ACT 开头的表
ACT 是 “Activity” 的缩写,这些表继承自 Activiti 项目:
-
ACT_GE_ - General(通用数据)
- ACT_GE_PROPERTY:存储系统属性和版本信息
- ACT_GE_BYTEARRAY:存储流程定义的二进制数据,如 BPMN 文件、流程图片等
-
ACT_RE_ - Repository(仓库)
- ACT_RE_DEPLOYMENT:流程部署信息
- ACT_RE_PROCDEF:流程定义信息
-
ACT_RU_ - Runtime(运行时)
- ACT_RU_EXECUTION:流程执行信息
- ACT_RU_TASK:任务信息
- ACT_RU_VARIABLE:流程变量
- ACT_RU_IDENTITYLINK:用户和任务的关系
-
ACT_HI_ - History(历史)
- ACT_HI_PROCINST:历史流程实例
- ACT_HI_TASKINST:历史任务实例
- ACT_HI_VARINST:历史变量
- ACT_HI_ACTINST:历史活动节点
-
ACT_ID_ - Identity(身份)
- ACT_ID_USER:用户信息
- ACT_ID_GROUP:用户组信息
- ACT_ID_MEMBERSHIP:用户和用户组关系
FLW 开头的表
FLW 是 “Flowable” 的缩写,这些表是 Flowable 特有的,用于支持额外的功能:
-
FLW_EV_DATABASECHANGELOG 等 - Liquibase 相关表
- 用于数据库版本控制和变更管理
-
FLW_ 表单相关表*
- FLW_FORM_DEPLOYMENT:表单部署
- FLW_FORM_DEFINITION:表单定义
- FLW_FORM_RESOURCE:表单资源
-
FLW_ 内容相关表*
- FLW_CONTENT_ITEM:内容项
-
FLW_ 计划相关表*
- FLW_PLAN_ITEM_INST:计划项实例(用于 CMMN)
总结
- ACT 前缀的表:继承自 Activiti,是 Flowable 的核心表,包含了流程引擎的基本功能
- FLW 前缀的表:Flowable 扩展功能表,支持额外的特性,如表单引擎、内容引擎、计划引擎等
这两类表共同构成了完整的 Flowable 数据库表结构,其中 ACT 表是核心,FLW 表提供了额外的功能扩展。