Flowable工作流
概念
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数据库表命名规则
- ACT_RE_* ’RE’表示repository(存储)。RepositoryService接口操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
- ACT_RU_* ’RU’表示runtime。(15张表)这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。flowable只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。
- ACT_ID_* ’ID’表示identity(组织机构)。(9张表)这些表包含标识的信息,如用户,用户组,等等。
- ACT_HI_* ’HI’表示history。(10张表)就是这些表包含着历史的相关数据,如结束的流程实例,变量,任务,等等。
- ACT_GE_*普通数据。(2张表)各种情况都使用的数据。
- *_ DATABASECHANGELOG liuquibase的log表(4张表)
- *_DATABASECHANGELOGLOCK liuquibase的log表(4张表)
数据库表结构
通用数据库
数据表 | 描述 |
---|---|
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
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表:act_re_deployment
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
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 |
|
|
注: |
流程表:act_re_procdef
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
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。主要完成“部署包”–>“流程定义文件”–>“所有包内文件”的解析部署关系。从表结构中可以看出,流程定义的元素需要每次从数据库加载并解析,因为流程定义的元素没有转化成数据库表来完成,当然流程元素解析后是放在缓存中的。
历史节点表:act_hi_actinst
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
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
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内容。
流程变量数据表:act_ru_variable
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
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 |
|
|
注: CustomVariableType、date、double、integer、long、null、short、string |
历史变量表:act_hi_varinst
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 |
|
|
注: |
流程实例历史:act_hi_procinst
字段 |
字段名称 |
字段默认值 |
是否允许为空 |
数据类型 |
字段长度 |
键 |
备注 |
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
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
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
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 |
|
|
注: |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10586.html