1、 Flowable是一个流行的轻量级的采用Java开发的业务流程引擎。通过Flowable流程引擎,我们可以部署BPMN2.0的流程定义(一般为XML文件),通过流程定义创建流程实例,查询和访问流程相关的实例与数据,等等。
2、 Flowable可以灵活地添加到我们的服务、应用、架构中,可以通过引入Flowable jar包,或者直接使用Flowable的Rest API来进行业务流程引擎的操作。
3、 Flowable是基于Activity5.0的一个分支开发的,因此内部的很多概念都相似。
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没有。
数据表 | 描述 |
---|---|
ACT_GE_PROPERTY | 属性表(保存流程引擎的kv键值属性)–PropertyEntityImpl |
ACT_GE_BTYEARRAY | 资源表(存储流程定义相关的资源)–ByteArrayEntityImpl |
数据表 | 描述 |
---|---|
ACT_RE_DEPLOYMENT | 流程部署表–DeploymentEntityImpl |
ACT_RE_PROCDEF | 流程定义信息表–ProcessDefinitionEntityImpl |
ACT_RE_MODEL | 模型信息表(用于Web设计器)–ModelEntityImpl |
ACT_PROCDEF_INFO | 流程定义动态改变信息表–ProcessDefinitionInfoEntityImpl |
数据表 | 描述 |
---|---|
ACT_ID_USER | 用户基本信息表–UserEntityImpl |
ACT_ID_INFO 用户扩展表–IdentityInfoEntityImpl | |
ACT_ID_GROUP | 群组表(用于Web设计器)–GroupEntityImpl |
ACT_ID_MEMBERSHIP | 用户与群主关系表–MemberShipEntityImpl |
ACT_ID_BYTEARRAY | 二进制数据表(flowable) |
ACT_ID_PRIV | 权限表(flowable) |
ACT_ID_PRIV_MAPPING | 用户或组权限关系表(flowable) |
ACT_ID_PROPERTY | 属性表(flowable) |
ACT_ID_TOKEN | 系统登录日志表(flowable) |
数据表 | 描述 |
---|---|
ACT_RU_EXECUTION | 流程实例与分支执行表–ExecutionEntityImpl |
ACT_RU_TASK | 用户任务表–TaskEntityImpl |
ACT_RU_VARIABLE | 变量信息–VariableInstanceEntityImpl |
ACT_RU_IDENTITYLINK | 参与者相关信息表–IdentityLinkEntityImpl |
ACT_RU_EVENT_SUBSCR | 事件订阅表–EventSubscriptionEntityImpl |
ACT_RU_JOB | 作业表–JobEntityImpl |
ACT_RU_TIMER_JOB | 定时器表–TimerJobEntityImpl |
ACT_RU_SUSPENDED_JOB | 暂停作业表–SuspendedJobEntityImpl |
ACT_RU_DEADLETTER_JOB | 死信表–DeadLetterJobEntityImpl |
ACT_RU_HISTORY_JOB | 历史作业表(flowable) |
数据表 | 描述 |
---|---|
ACT_HI_PROCINST | 历史流程实例表–HistoricProcessInstanceEntityImpl |
ACT_HI_ACTINST | 历史节点信息表–HistoricActivityInstanceEntityImpl |
ACT_HI_TASKINST | 历史任务表–HistoricTaskInstanceEntityImpl(只记录usertask内容) |
ACT_HI_VARINST | 历史变量–HistoricVariableInstanceEntityImpl |
ACT_HI_IDENTITYLINK | 历史参与者表–HistoricIdentityLinkEntityImpl |
ACT_HI_DETAIL | 历史的流程运行中的细节信息–HistoricDetailEntityImpl |
ACT_HI_ATTACHMENT | 附件表–AttachmentEntityImpl |
ACT_HI_COMMENT | 评论表–CommentEntityImpl |
ACT_EVT_LOG | 事件日志表–EventLogEntryEntityImpl |
act_ge_bytearray(二进制文件) |
|||||||
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
|
NO |
varchar |
64 |
PRI |
|
REV_ |
版本号 |
NULL |
YES |
int |
NULL |
|
version |
NAME_ |
名称 |
NULL |
YES |
varchar |
255 |
|
部署的文件名称,如:mail.bpmn、mail.png 、mail.bpmn20.xml |
DEPLOYMENT_ID_ |
部署ID |
NULL |
YES |
varchar |
64 |
ACT_RE_DEPLOYMENT |
|
BYTES_ |
字节(二进制数据) |
NULL |
YES |
longblob |
4294967295 |
|
|
GENERATED_ |
是否系统生成 |
NULL |
YES |
tinyint |
NULL |
|
0为用户上传, |
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
|
NO |
varchar |
64 |
PRI |
|
NAME_ |
名称 |
NULL |
YES |
varchar |
255 |
|
|
CATEGORY_ |
分类 |
NULL |
YES |
varchar |
255 |
|
|
TENANT_ID_ |
租户ID |
|
YES |
varchar |
255 |
|
|
DEPLOY_TIME_ |
部署时间 |
NULL |
YES |
timestamp |
NULL |
|
|
注: |
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
NULL |
NO |
varchar |
64 |
PRI |
|
REV_ |
版本号 |
NULL |
YES |
int |
NULL |
|
version |
CATEGORY_ |
分类 |
NULL |
YES |
varchar |
255 |
|
流程定义的Namespace就是类别 |
NAME_ |
名称 |
NULL |
YES |
varchar |
255 |
|
|
KEY_ |
标识 |
NULL |
NO |
varchar |
255 |
MUL |
|
VERSION_ |
版本 |
NULL |
NO |
int |
NULL |
|
|
DEPLOYMENT_ID_ |
部署ID |
NULL |
YES |
varchar |
64 |
|
|
RESOURCE_NAME_ |
资源名称 |
NULL |
YES |
varchar |
4000 |
|
流程bpmn文件名称 |
DGRM_RESOURCE_NAME_ |
图片资源名称 |
NULL |
YES |
varchar |
4000 |
|
|
DESCRIPTION_ |
描述 |
NULL |
YES |
varchar |
4000 |
|
|
HAS_START_FORM_KEY_ |
拥有开始表单标识 |
NULL |
YES |
tinyint |
NULL |
|
start节点是否存在formKey |
HAS_GRAPHICAL_NOTATION_ |
拥有图形信息 |
NULL |
YES |
tinyint |
NULL |
|
|
SUSPENSION_STATE_ |
挂起状态 |
NULL |
YES |
int |
NULL |
|
暂停状态 1激活 2暂停 |
TENANT_ID_ |
租户ID |
|
YES |
varchar |
255 |
|
|
注: |
总结:
流程文件部署主要涉及到3个表,分别是:ACT_GE_BYTEARRAY、ACT_RE_DEPLOYMENT、ACT_RE_PROCDEF。主要完成“部署包”-->“流程定义文件”-->“所有包内文件”的解析部署关系。从表结构中可以看出,流程定义的元素需要每次从数据库加载并解析,因为流程定义的元素没有转化成数据库表来完成,当然流程元素解析后是放在缓存中的。
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
NULL |
NO |
varchar |
64 |
PRI |
|
PROC_DEF_ID_ |
流程定义ID |
NULL |
NO |
varchar |
64 |
|
|
PROC_INST_ID_ |
流程实例ID |
NULL |
NO |
varchar |
64 |
MUL |
|
EXECUTION_ID_ |
执行实例ID |
NULL |
YES |
varchar |
64 |
|
|
ACT_ID_ |
节点ID |
NULL |
NO |
varchar |
255 |
|
|
TASK_ID_ |
任务ID |
NULL |
YES |
varchar |
64 |
|
任务实例ID 其他节点类型实例ID在这里为空 |
CALL_PROC_INST_ID_ |
调用外部的流程实例ID |
NULL |
YES |
varchar |
64 |
|
|
ACT_NAME_ |
节点名称 |
NULL |
YES |
varchar |
255 |
|
|
ACT_TYPE_ |
节点类型 |
NULL |
NO |
varchar |
255 |
|
如startEvent、userTask |
ASSIGNEE_ |
签收人 |
NULL |
YES |
varchar |
255 |
|
经办人 |
START_TIME_ |
开始时间 |
NULL |
NO |
datetime |
NULL |
MUL |
|
END_TIME_ |
结束时间 |
NULL |
YES |
datetime |
NULL |
MUL |
|
DURATION_ |
耗时 |
NULL |
YES |
bigint |
NULL |
|
毫秒值 |
TENANT_ID_ |
多租户 |
|
YES |
varchar |
255 |
|
|
注: |
act_hi_taskinst(历史任务流程实例信息) |
|||||||
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
NULL |
NO |
varchar |
64 |
PRI |
|
PROC_DEF_ID_ |
流程实例ID |
NULL |
YES |
varchar |
64 |
|
|
TASK_DEF_KEY_ |
任务节点定义ID |
NULL |
YES |
varchar |
255 |
|
任务定义标识(环节ID) |
PROC_INST_ID_ |
流程实例ID |
NULL |
YES |
varchar |
64 |
MUL |
|
EXECUTION_ID_ |
执行实例ID |
NULL |
YES |
varchar |
64 |
|
|
NAME_ |
任务名称 |
NULL |
YES |
varchar |
255 |
|
|
PARENT_TASK_ID_ |
父任务节点ID |
NULL |
YES |
varchar |
64 |
|
|
DESCRIPTION_ |
描述 |
NULL |
YES |
varchar |
4000 |
|
|
OWNER_ |
被代理人 |
NULL |
YES |
varchar |
255 |
|
委托人(默认为空,只有在委托时才有值) |
ASSIGNEE_ |
经办人 |
NULL |
YES |
varchar |
255 |
|
|
START_TIME_ |
开始时间 |
NULL |
NO |
datetime |
NULL |
|
|
CLAIM_TIME_ |
签收时间 |
NULL |
YES |
datetime |
NULL |
|
|
END_TIME_ |
结束时间 |
NULL |
YES |
datetime |
NULL |
|
|
DURATION_ |
耗时 |
NULL |
YES |
bigint |
NULL |
|
|
DELETE_REASON_ |
删除原因 |
NULL |
YES |
varchar |
4000 |
|
删除原因(completed,deleted) |
PRIORITY_ |
优先级 |
NULL |
YES |
int |
NULL |
|
|
DUE_DATE_ |
截止时间 |
NULL |
YES |
datetime |
NULL |
|
过期时间,表明任务应在多长时间内完成 |
FORM_KEY_ |
FORM表单的KEY |
NULL |
YES |
varchar |
255 |
|
desinger节点定义的 |
CATEGORY_ |
分类 |
NULL |
YES |
varchar |
255 |
|
|
TENANT_ID_ |
租户ID |
|
YES |
varchar |
255 |
|
|
注: |
注意:act_hi_taskinst只记录usertask内容。
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
NULL |
NO |
varchar |
64 |
PRI |
|
REV_ |
版本号 |
NULL |
YES |
int |
NULL |
|
version |
TYPE_ |
类型 |
NULL |
NO |
varchar |
255 |
|
见备注 |
NAME_ |
名称 |
NULL |
NO |
varchar |
255 |
|
|
EXECUTION_ID_ |
执行实例ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RU_EXECUTION) |
|
PROC_INST_ID_ |
流程实例ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RU_EXECUTION) |
|
TASK_ID_ |
任务ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RU_TASK) |
|
BYTEARRAY_ID_ |
资源ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_GE_BYTEARRAY) |
|
DOUBLE_ |
浮点值 |
NULL |
YES |
double |
NULL |
|
存储变量类型为Double |
LONG_ |
长整型 |
NULL |
YES |
bigint |
NULL |
|
存储变量类型为long |
TEXT_ |
文本值 |
NULL |
YES |
varchar |
4000 |
|
存储变量值类型为String |
TEXT2_ |
文本值 |
NULL |
YES |
varchar |
4000 |
|
|
注: |
act_hi_varinst(历史变量表) |
|||||||
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
NULL |
NO |
varchar |
64 |
PRI |
|
PROC_INST_ID_ |
流程实例ID |
NULL |
YES |
varchar |
64 |
MUL |
|
EXECUTION_ID_ |
执行实例ID |
NULL |
YES |
varchar |
64 |
|
|
TASK_ID_ |
任务ID |
NULL |
YES |
varchar |
64 |
MUL |
|
NAME_ |
名称 |
NULL |
NO |
varchar |
255 |
MUL |
|
VAR_TYPE_ |
变量类型 |
NULL |
YES |
varchar |
100 |
|
|
REV_ |
版本号 |
NULL |
YES |
int |
NULL |
|
version |
BYTEARRAY_ID_ |
字节流ID |
NULL |
YES |
varchar |
64 |
ACT_GE_BYTEARRAY |
|
DOUBLE_ |
浮点值 |
NULL |
YES |
double |
NULL |
|
存储DoubleType类型的数据 |
LONG_ |
长整型 |
NULL |
YES |
bigint |
NULL |
|
存储LongType类型的数据 |
TEXT_ |
文本值 |
NULL |
YES |
varchar |
4000 |
|
存储变量值类型为String,如此处存储持久化对象时,值jpa对象的class |
TEXT2_ |
文本值 |
NULL |
YES |
varchar |
4000 |
|
|
CREATE_TIME_ |
创建时间 |
NULL |
YES |
datetime |
NULL |
|
|
LAST_UPDATED_TIME_ |
最后更新时间 |
NULL |
YES |
datetime |
NULL |
|
|
注: |
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
NULL |
NO |
varchar |
64 |
PRI |
|
PROC_INST_ID_ |
流程实例ID |
NULL |
NO |
varchar |
64 |
UNI |
|
BUSINESS_KEY_ |
业务标识 |
NULL |
YES |
varchar |
255 |
MUL |
业务主键,业务表单的ID |
PROC_DEF_ID_ |
流程实例ID |
NULL |
NO |
varchar |
64 |
|
|
START_TIME_ |
开始时间 |
NULL |
NO |
datetime |
NULL |
|
|
END_TIME_ |
结束时间 |
NULL |
YES |
datetime |
NULL |
MUL |
|
DURATION_ |
耗时 |
NULL |
YES |
bigint |
NULL |
|
|
START_USER_ID_ |
流程发起人ID |
NULL |
YES |
varchar |
255 |
|
|
START_ACT_ID_ |
开始节点ID |
NULL |
YES |
varchar |
255 |
|
|
END_ACT_ID_ |
结束节点ID |
NULL |
YES |
varchar |
255 |
|
|
SUPER_PROCESS_INSTANCE_ID_ |
父流程实例ID |
NULL |
YES |
varchar |
64 |
|
|
DELETE_REASON_ |
删除原因 |
NULL |
YES |
varchar |
4000 |
|
|
TENANT_ID_ |
租户ID |
|
YES |
varchar |
255 |
|
|
NAME_ |
名称 |
NULL |
YES |
varchar |
255 |
|
|
注: |
act_hi_identitylink(历史流程人员表) |
|||||||
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
|
NO |
varchar |
64 |
PRI |
|
GROUP_ID_ |
用户组ID |
NULL |
YES |
varchar |
255 |
|
|
TYPE_ |
类型 |
NULL |
YES |
varchar |
255 |
|
类型,主要分为以下几种: |
USER_ID_ |
用户ID |
NULL |
YES |
varchar |
255 |
MUL |
|
TASK_ID_ |
任务ID |
NULL |
YES |
varchar |
64 |
MUL |
|
PROC_INST_ID_ |
流程实例ID |
NULL |
YES |
varchar |
64 |
MUL |
|
注: |
备注:TYPE_ :该关系数据的类型,当前提供了 个值 assignee、candidate和owner 表示流程数据的指派人(组〉、候选人(组)和拥有人
act_ru_identitylink( 运行时流程人员表) |
|||||||
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
|
NO |
varchar |
64 |
PRI |
|
REV_ |
版本号 |
NULL |
YES |
int |
NULL |
|
version |
GROUP_ID_ |
用户组ID |
NULL |
YES |
varchar |
255 |
MUL |
|
TYPE_ |
类型 |
NULL |
YES |
varchar |
255 |
|
|
USER_ID_ |
用户ID |
NULL |
YES |
varchar |
255 |
MUL |
|
TASK_ID_ |
任务ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RU_TASK) |
|
PROC_INST_ID_ |
流程实例ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RU_EXECUTION) |
|
PROC_DEF_ID_ |
流程定义ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RE_PROCDEF) |
|
注: |
act_ru_task( 运行时任务节点表) |
|||||||
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
ID_ |
主键 |
|
NO |
varchar |
64 |
PRI |
|
REV_ |
版本号 |
NULL |
YES |
int |
NULL |
|
version |
EXECUTION_ID_ |
执行实例ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RU_EXECUTION) |
|
PROC_INST_ID_ |
流程实例ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RU_EXECUTION) |
|
PROC_DEF_ID_ |
流程定义ID |
NULL |
YES |
varchar |
64 |
MUL(ACT_RE_PROCDEF) |
|
NAME_ |
名称 |
NULL |
YES |
varchar |
255 |
|
|
PARENT_TASK_ID_ |
父任务ID |
NULL |
YES |
varchar |
64 |
|
|
DESCRIPTION_ |
描述 |
NULL |
YES |
varchar |
4000 |
|
|
TASK_DEF_KEY_ |
人物定义标识 |
NULL |
YES |
varchar |
255 |
|
|
OWNER_ |
被代理人 |
NULL |
YES |
varchar |
255 |
|
(一般情况下为空,只有在委托时才有值) |
ASSIGNEE_ |
经办人 |
NULL |
YES |
varchar |
255 |
|
签收人或者委托人 |
DELEGATION_ |
委托状态 |
NULL |
YES |
varchar |
64 |
|
委托状态 PENDING |
PRIORITY_ |
优先级 |
NULL |
YES |
int |
NULL |
|
|
CREATE_TIME_ |
创建时间 |
NULL |
YES |
timestamp |
NULL |
MUL |
|
DUE_DATE_ |
截止时间 |
NULL |
YES |
datetime |
NULL |
|
|
CATEGORY_ |
分类 |
NULL |
YES |
varchar |
255 |
|
|
SUSPENSION_STATE_ |
挂起状态 |
NULL |
YES |
int |
NULL |
|
暂停状态 1激活 2暂停 |
TENANT_ID_ |
租户ID |
|
YES |
varchar |
255 |
|
|
FORM_KEY_ |
表单标识 |
NULL |
YES |
varchar |
255 |
|
|
注: |