概念
Flowable是什么

1、 Flowable是一个流行的轻量级的采用Java开发的业务流程引擎。通过Flowable流程引擎,我们可以部署BPMN2.0的流程定义(一般为XML文件),通过流程定义创建流程实例,查询和访问流程相关的实例与数据,等等。

2、 Flowable可以灵活地添加到我们的服务、应用、架构中,可以通过引入Flowable jar包,或者直接使用Flowable的Rest API来进行业务流程引擎的操作。

3、 Flowable是基于Activity5.0的一个分支开发的,因此内部的很多概念都相似。

Flowable与Activiti
Flowable,2016年基于Activiti诞生。
1、 flowable已经支持所有的历史数据使用mongdb存储,activiti没有。

2、 flowable支持事务子流程,activiti没有。

3、 flowable支持多实例加签、减签,activiti没有。

4、 flowable支持httpTask等新的类型节点,activiti没有。

5、 flowable支持在流程中动态添加任务节点,activiti没有。

6、 flowable支持历史任务数据通过消息中间件发送,activiti没有。

7、 flowable支持java11,activiti没有。

8、 flowable支持动态脚本,,activiti没有。

9、 flowable支持条件表达式中自定义juel函数,activiti没有。

10、 flowable支持cmmn规范,activiti没有。

11、 flowable修复了dmn规范设计器,activit用的dmn设计器还是旧的框架,bug太多。

12、 flowable屏蔽了pvm,activiti6也屏蔽了pvm(因为6版本官方提供了加签功能,发现pvm设计的过于臃肿,索性直接移除,这样加签实现起来更简洁、事实确实如此,如果需要获取节点、连线等信息可以使用bpmnmodel替代)。

13、 flowable与activiti提供了新的事务监听器。activiti5版本只有事件监听器、任务监听器、执行监听器。

14、 flowable对activiti的代码大量的进行了重构。

15、 activiti以及flowable支持的数据库有h2、hsql、mysql、oracle、postgres、mssql、db2。其他数据库不支持的。使用国产数据库的可能有点失望了,需要修改源码了。

16、 flowable支持jms、rabbitmq、mongodb方式处理历史数据,activiti没有。

数据库表分析
Flowable数据库表命名规则

1、ACT_RE_* ’RE’表示repository(存储)。RepositoryService接口操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。

2、ACT_RU_* ’RU’表示runtime。(15张表)这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。flowable只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。

3、ACT_ID_* ’ID’表示identity(组织机构)。(9张表)这些表包含标识的信息,如用户,用户组,等等。

4、ACT_HI_* ’HI’表示history。(10张表)就是这些表包含着历史的相关数据,如结束的流程实例,变量,任务,等等。

5、ACT_GE_*普通数据。(2张表)各种情况都使用的数据。

6、*_ DATABASECHANGELOG liuquibase的log表(4张表)

7、*_DATABASECHANGELOGLOCK liuquibase的log表(4张表)