工作流简单理解,就是工作流程,工作中,有很多的流程都比较固定,可以说是有一定的模板性。就比如请假这个流程(可能不是很合理),张三请假,需要向主管申请,主管同意后,然后向人事申请,人事记录后才算请假成功。像这样,李四请假也是这个流程,王五也是这个流程。
于是咱们开发人员就想到了,既然很多流程都有一个固定的模板,那么咱们能不能将这个流程封装起来呢,所以就多了工作流框架。比如Activity。
Activity7默认有25张表,用户只需要使用流程设计器画出流程图,生成bpmn文件,bpmn本质为XML文件,因为安装了actiBPM插件,才能可视化的看到流程内容。
简单认识:
1、Activity的表说明
ACT_RE 流程定义和流程资源
ACT_RU 运行时,流程实例、任务、变量
ACT_HI 历史表
ACT_GE 通用表
2、Activity的架构、类关系图
获取流程引擎的工具类
ProcessEngines。使用默认方式获取配置文件,构造流程引擎。配置文件名字activity.cfg.xml,放在classpath下
ProcessEngineConfiguration。可以自定义配置文件名
使用上面两个工具类,都可以获得流程引擎
ProcessEngine:流程引擎,获取各种服务的接口。
服务接口:用于流程的部署、执行、管理,使用这些接口就是在操作对应的数据表
RepositoryService 资源管理类
RuntimeService 运行时管理类
TaskService 任务管理类
HistoryService 历史数据管理类
ManagementService 流程引擎管理类
3、BPNM插件
idea安装actiBPM插件
4、流程符号、画流程图
流程符号:事件Event、活动Activity,网关Gateway,流程
使用流程设计器画出流程图
5、部署流程
使用Activity提供的API把流程图的内容写入数据库中
资源类操作,使用RepositoryService
单文件部署:吧bpmn文件和png文件一个一个处理
压缩包部署:把bpmn文件和png文件打包压缩处理
Deployment deploy = repositoryService.createDeployment()
部署操作表:
act_re_deployment 部署表
act_re_procdef 流程定义表
act_ge_bytearray 资源表
6、启动流程实例
使用RuntimeService根据流程定义的Key
核心代码:
ProcessInstance instance = runtimeService.startProcessInstanceByKey("myEvection")
7、任务查询
使用TaskService,根据流程定义的Key,任务的负责人进行查询
核心代码:
List<Task> taskList = taskService.createTaskQuery()
.processDefinitionKey("myEvenction") //流程Key
.taskAssignee("张三") //要查询的负责人
.list()
8、任务完成
使用TaskService,用任务id完成任务
核心代码:
taskService.complete("2505") //完成任务调用的方法
模糊记录:
还有不同的网关,可以在连线过程中设置条件,比如请假流程,请假天数小于三天那么走主管、人事即可。天数大于等于三天那么需要走主管、总经理、人事,多了一个总经理的审核。
合并网关,请假流程,当张三发出请假之后,需要主管和经理都审核通过,才能进行下一步的操作。等等网关,等周末再熟悉的时候再进行记录。