实操版本V6.7.2
一、Flowable 是什么
Flowable 是一个使用 Java 编写的轻量级业务流程引擎,使用 Apache V2 license 协议开源。2016 年 10 月,Activiti 工作流引擎的主要开发者离开 Alfresco 公司并在 Activiti 分支基础上开启了 Flowable 开源项目。基于 Activiti v6 beta4 发布的第一个 Flowable release 版本为6.0。以 JAR 形式发布使得 Flowable 可以轻易加入任何Java环境:Java SE、Tomcat、Jetty 或 Spring 之类的 servlet 容器;JBoss 或 WebSphere 之类的 Java EE 服务器等等。 另外,也可以使用 Flowable REST API 进行 HTTP 调用。
二、工作流引擎使用场景
工作流在企业管理系统中是高频使用的功能,一个最常见的例子是请假加班申请与审批的过程。事实上,工作流引擎能支持的业务场景远远不止单据审批,几乎所有涉及到业务流转、多人按流程完成工作的场景背后都可以通过工作流引擎作为支撑。基于工作流引擎,可以搭建客户关系管理系统(CRM)、运输管理系统(TMS)、仓储管理系统(WMS)、财务费用系统等多种复杂业务系统。对于达到一定规模的企业,良好的 BPM(业务流程管理,Business Process Management)体系可以支持创建公司内横跨不同部门的复杂业务流程,既提高工作效率、又可推动企业规范化发展。
三、下载flowable-6.7.2压缩包
下载地址:https://github.com/flowable/flowable-engine/releases
二、解压
获得flowable-ui.war,并将此war包拷贝到tomcat下运行
三、启动Tomcat
访问地址:http://localhost:8080/flowable-ui/
用户名:admin 密码:test
四、创建流程
五、创建应用程序
六、导出流程定义
把导出的文件放当项目的resources目录下
使用流程发起人分配(踩坑)
场景
希望用户任务直接分配给流程发起人
用法:在流程开始事件上绑定发起人变量
<startEvent flowable:initiator="INITIATOR" />
启动流程时通过代码设置用户ID,开始事件会自动将用户ID填入变量INITIATOR
try {
identityService.setAuthenticatedUserId("zhangsan");
// Authentication.setAuthenticatedUserId("wangwu");
runtimeService.startProcessInstanceByKey("someProcessKey");
} finally {
identityService.setAuthenticatedUserId(null);
// Authentication.setAuthenticatedUserId(null);
}
在用户任务上分配发起人变量
<userTask flowable:assignee="${INITIATOR}" />
如果使用flowable ui进行流程建模,并在用户任务的分配用户属性点选分配给流程发起人
可以看到生成的xml文件中分配用户变量形如
<userTask flowable:assignee="$INITIATOR" />
如果将此流程部署到独立的flowable引擎将无法正确分配发起人用户到用户任务(原因是此变量需要IDM模块支持) 直接使用固定值设置 ${INITIATOR} 即可解决
注意避坑:${myAssignee.getassignee} myAssignee的首字母必须为小写
create:创建时触发
complete:审批完毕后触发
七、表结构
1、通用数据表(2个)
act_ge_bytearray:二进制数据表,如流程定义、流程模板、流程图的字节流文件;
act_ge_property:属性数据表(不常用);
2、历史表(8个,HistoryService接口操作的表)
act_hi_actinst:历史节点表,存放流程实例运转的各个节点信息(包含开始、结束等非任务节点);
act_hi_attachment:历史附件表,存放历史节点上传的附件信息(不常用);
act_hi_comment:历史意见表;
act_hi_detail:历史详情表,存储节点运转的一些信息(不常用);
act_hi_identitylink:历史流程人员表,存储流程各节点候选、办理人员信息,常用于查询某人或部门的已办任务;
act_hi_procinst:历史流程实例表,存储流程实例历史数据(包含正在运行的流程实例);
act_hi_taskinst:历史流程任务表,存储历史任务节点;
act_hi_varinst:流程历史变量表,存储流程历史节点的变量信息;
3、用户相关表(4个,IdentityService接口操作的表)
act_id_group:用户组信息表,对应节点选定候选组信息;
act_id_info:用户扩展信息表,存储用户扩展信息;
act_id_membership:用户与用户组关系表;
act_id_user:用户信息表,对应节点选定办理人或候选人信息;
4、流程定义、流程模板相关表(3个,RepositoryService接口操作的表)
act_re_deployment:部属信息表,存储流程定义、模板部署信息;
act_re_procdef:流程定义信息表,存储流程定义相关描述信息,但其真正内容存储在act_ge_bytearray表中,以字节形式存储;
act_re_model:流程模板信息表,存储流程模板相关描述信息,但其真正内容存储在act_ge_bytearray表中,以字节形式存储;
5、流程运行时表(6个,RuntimeService接口操作的表)
act_ru_task:运行时流程任务节点表,存储运行中流程的任务节点信息,重要,常用于查询人员或部门的待办任务时使用;
act_ru_event_subscr:监听信息表,不常用;
act_ru_execution:运行时流程执行实例表,记录运行中流程运行的各个分支信息(当没有子流程时,其数据与act_ru_task表数据是一一对应的);
act_ru_identitylink:运行时流程人员表,重要,常用于查询人员或部门的待办任务时使用;
act_ru_job:运行时定时任务数据表,存储流程的定时任务信息;
act_ru_variable:运行时流程变量数据表,存储运行中的流程各节点的变量信息
参考资料:
官网地址:https://www.flowable.org/
github地址:https://github.com/flowable
Flowable 6.4.1 官方文档 https://www.flowable.org/documentation.html
https://tkjohn.github.io/flowable-userguide/
https://github.com/flowable/flowable-engine/releases