1. 工作流产品
1)什么是工作流
定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完。
2)有哪些解决方案
开源的工作流方案有,JBPM工作流,activity工作流,flowable工作流等。
2. flowable工作流
1)官网
https://www.flowable.org
2)能做什么?
Flowable是一个使用Java编写的轻量级业务流程引擎,它能够完成定义流程、流程部署、创建这些流程定义的流程实例、进行查询(正在进行的)、访问运行中或历史的流程实例与相关数据等。flowable都可以对这些操作进行管理。
2) 主要引擎
流程引擎(bpmn) ProcessEngine
控制流程引擎(cmmn) CmmnEngine
决策引擎(dmn) DmnEngine
表单引擎(form) FormEngine
内容引擎(content) ContentEngine
身份识别引擎(idm) IdmEngine
Process Engine是最常见的方式,能够处理绝大多数场景。
3)flowable的架构

3. 流程引擎
1)流程引擎ProcessEngine包含的服务有:
RepositoryService定义流程和部署流程
RuntimeService开始新流程实例和查询
HistoryService流程实例历史记录
IdentityService用户相关
TaskService任务相关
FormService动态表单
ManagementService任务管理
DynamicBpmnService动态流程服务
这些服务,可以定义流程、运行流程、查询历史、查询当前任务等。这些service是对34个表操作的封装。
2)核心配置文件
BPMN 2.0流程定义文件,它是一个标准的XML文件,用XML去描述流程的定义过程。例如:

见flowable工程的”holiday-request.bpmn20.xml”,这个XML文件就是工作流的核心配置文件,这个xml文件可以用flowable工具画出来 。
3)例程
A. flowable项目的SimpleTest.java, 该例程不需要配置xml文件,主要演示表的自动创建:

数据库表简介:

B. 以官网提供的请假流程为例,见flowable项目的HolidayRequest.java
运行后,对应的数据,见数据库表act_hi_actinst。
4. 流程设计器、用户和流程管理系统
1) 下载
https://github.com/flowable/flowable-engine/releases/download/flowable-6.4.0/tomcat-flowable-6.4.0.zip下载tomcat-flowable-6.4.0.zip,在webapps目录里有四个war包:
flowable-idm:用户管理、授权
flowable-admin:实例、任务管理
flowable-modeler:设计器
flowable-task:个人任务管理
经过配置后,这些war包都能直接使用java -jar flowable-[项目].war启动。
2)启动
① 修改flowable-default.properties
依次解压,打开各个应用的classes目录,修改flowable-default.properties文件里的数据库连接信息,之后重命名文件为application.properties,如图:


② 添加mysql驱动
在lib里加入数据库驱动文件,我的是mysql-connector-java-5.1.39.jar
③ 启动并访问
最后使用/tomcat-flowable/bin/startup.bat启动,默认端口8080,各个访问地址如下:
设计器http://localhost:8080/flowable-modeler
任务管理http://localhost:8080/flowable-task
实例、任务管理http://localhost:8080/flowable-admin
用户管理、授权http://localhost:8080/flowable-idm
备注:
A. 用户名密码为admin/test
B. 必须解压idm应用否则无法进行身份认证
3)流程设计器的使用
A.登录http://localhost:8080/flowable-modeler
B.使用



备注:
开始事件:图中用细线圆圈来表示,是流程实例的开始点
箭头:表示节点之间的流转指向。
用户任务: 在图中用左上角有人的圆角矩形表示,这些是需要用户来操作的节点。图中有两个,第一个表示需要经理进行审批来同意或拒绝, 第二个表示用户来确认销假。
排它网关: 用叉形符号填充的菱形表示,从该图中出来的箭头往往有多个,但只有一个满足条件,流程会沿着满足条件的方向流转。
自动化任务 : 左上角有齿轮形状的的圆角矩形,表示自动执行的节点。图中上面的表示请假被经理同意后自动注册通知到外部系统,下面的表示请假被经理拒绝后自动发邮件通知给申请人。
结束事件: 图中用粗线圆圈表示,表示流程的结束。图中上面的结束事件表示请假成功结束,下面的表示请假失败结束。
4)其他应用的使用

用户创建、权限分配。
5.springboot+flowable工程
1)依赖

2) application.properties

备注:
flowable.async-executor-activate=false 关闭定时任务JOB.
3) 流程定义文件
src/resources/process/XXX.bpmn20.xml
4) Controller
直接注入ProcessEngine、RuntimeService、RepositoryService等对象即可,例如:






