背景
Flowable 是一个流行的轻量级的采用 Java 开发的业务流程引擎,通过 Flowable 流程引擎,我们可以部署遵循 BPMN2.0 协议的流程定义(一般为XML文件)文件,并能创建流程实例,查询和访问流程相关的实例与数据等等。
2016 年 10 月,Activiti 工作流引擎的核心开发者 Tijs Rademakers 离开 Alfresco 公司并在 Activiti 5.22 版本分支基础上开启了 Flowable 开源项目。Flowable 项目中包括 BPMN(Business Process Model and Notation)引擎、CMMN(Case Management Model and Notation)引擎、DMN(Decision Model and Notation)引擎、表单引擎(Form Engine)等模块。
2016年10月13日,Tijs Rademakers 发布Flowable 5.22.0
2017.02.15发布Flowable 6.0,该版本基于Activiti6
......
2021.12.28发布Flowable 6.7.2 release
附 Flowable 官方地址:
Flowable 官方网站:https://www.flowable.com/
Flowable github:https://github.com/flowable
Flowable 版本发布记录:https://github.com/flowable/flowable-engine/releases?page=1
Flowable 文档:https://www.flowable.com/open-source/docs/
中文 Flowable 文档: https://tkjohn.github.io/flowable-userguide/#chapterApi
Flowable 教程:https://documentation.flowable.com/latest/howto/tutorial/first-experience
Flowable 使用
1)Flowable UI 使用
与 jBPM 的 Business Central 类似(相对来说 Business Central 功能更强大),Flowable UI 是 Flowable 官方提供给用户可初始化的流程等资源设计和管理器,使用步骤如下:
Step 1:下载 flowable-6.8.0.zip 文件,并解压在 wars 目录下找到 flowable-ui.war 文件
flowable zip 包 github 地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0
Step 2:执行 "java -jar flowable-ui.war" 命令启动 Flowable UI
Step 3:访问 http://localhost:8080/flowable-ui/,并账密(admin/test)登录
Flowable UI 登录后主要包括以下四个功能(图如上):
任务应用程序(Flowable Task):运行时任务应用,这个提供了启动流程实例、编辑任务表单、完成任务,以及查询流程实例与任务的功能。
建模器应用程序(Flowable Modeler):让具有建模权限的用户可以创建流程模型、表单、选择表与应用定义。
管理员应用程式(Flowable Admin): 管理应用。让具有管理员权限的用户可以查询流程、CMMN、APP、Form、DMN 及 Content 引擎,并提供了许多选项用于修改流程实例、任务、作业等。
身份管理应用程序(Flowable IDM):为所有 Flowable UI 应用提供单点登录认证功能,并且为拥有 IDM 管理员权限的用户提供了管理用户、组与权限的功能。
Step 4:请假流程示例 demo
其中导入的 holiday.bpmn 如下(该流程文件不能在 Flowable UI 上执行,只做建模示例使用):
<process id="holidayRequest" name="Holiday Request" isExecutable="true">
<startEvent id="startEvent"/>
<sequenceFlow sourceRef="startEvent" targetRef="approveTask"/>
<userTask id="approveTask" name="Approve or reject request" flowable:candidateGroups="managers" />
<sequenceFlow sourceRef="approveTask" targetRef="decision"/>
<exclusiveGateway id="decision"/>
<sequenceFlow sourceRef="decision" targetRef="externalSystemCall">
<conditionExpression xsi:type="tFormalExpression">
<![CDATA[
${approved}
]]>
</conditionExpression>
</sequenceFlow>
<sequenceFlow sourceRef="decision" targetRef="sendRejectionMail">
<conditionExpression xsi:type="tFormalExpression">
<![CDATA[
${!approved}
]]>
</conditionExpression>
</sequenceFlow>
<serviceTask id="externalSystemCall" name="Enter holidays in external system"
flowable:class="com.flowable.zqh.ExternalDelegateApproved"/>
<sequenceFlow sourceRef="externalSystemCall" targetRef="holidayApprovedTask"/>
<userTask id="holidayApprovedTask" name="Holiday approved" flowable:assignee="${employee}"/>
<sequenceFlow sourceRef="holidayApprovedTask" targetRef="approveEnd"/>
<serviceTask id="sendRejectionMail" name="Send out rejection email"
flowable:class="com.flowable.zqh.SendRejectionEmail"/>
<sequenceFlow sourceRef="sendRejectionMail" targetRef="rejectEnd"/>
<endEvent id="approveEnd"/>
<endEvent id="rejectEnd"/>
</process>
2)Flowable demo
以请假流程作为 Flowable 基本使用示例(流程示例同 Flowable UI):
请假流程文件 holiday.bpmn 配置
同 Flowable UI 示例中的 holiday.bpmn。
代码示例
示例源码参考 csdn 下载地址:https://download.csdn.net/download/zhuqiuhui/87462589
3)Flowable 与 Spring 集成
spring boot 与 Flowable 集成比较简单,引入以下依赖后,会自动注入 Flowable 相关核心类,直接在代码中使用即可。更详情的参考 Flowable 官方文档说明:https://www.flowable.com/open-source/docs/bpmn/ch05a-Spring-Boot
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</artifactId>
<version>${flowable.version}</version>
</dependency>
4)流程引擎对比
Flowable 相对于其他流程引擎,优点如下:
以 Flowable6.4.1版本为分水岭,大力发展其商业版产品,开源版本维护不及时,部分功能已经不再开源版发布,比如表单生成器(表单引擎)、历史数据同步至其他数据源、ES等
支持了流程、CMMN、APP、Form、DMN 及 Content 引擎
支持异步执行器、动态脚本等
Flowable 启动后会自动初始化 46 张数据表
......
Flowable 整体架构
使用引擎 API 是与 Flowable 交互的最常见方式,核心类是 ProcessEngine,从 ProcessEngine 中可以获取包含工作流/BPM方法的各种服务(与 Activiti5 类似,有兴趣可进一步深入)。如下图所示:
流程引擎系列文章
流程引擎之发展史及对比总结:https://blog.csdn.net/zhuqiuhui/article/details/128986403
流程引擎之KIE项目简介:https://blog.csdn.net/zhuqiuhui/article/details/129035796
流程引擎之jBPM简介:https://blog.csdn.net/zhuqiuhui/article/details/129052162
流程引擎之Activiti简介:https://blog.csdn.net/zhuqiuhui/article/details/129107741
流程引擎之Camunda简介:https://blog.csdn.net/zhuqiuhui/article/details/129107897
流程引擎之Flowable简介:https://blog.csdn.net/zhuqiuhui/article/details/129109273
流程引擎之compileflow简介:https://blog.csdn.net/zhuqiuhui/article/details/129109391