工作流(WorkFlow)Activity的学习

  工作流简单理解,就是工作流程,工作中,有很多的流程都比较固定,可以说是有一定的模板性。就比如请假这个流程(可能不是很合理),张三请假,需要向主管申请,主管同意后,然后向人事申请,人事记录后才算请假成功。像这样,李四请假也是这个流程,王五也是这个流程。

  于是咱们开发人员就想到了,既然很多流程都有一个固定的模板,那么咱们能不能将这个流程封装起来呢,所以就多了工作流框架。比如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") //完成任务调用的方法

  模糊记录:

  还有不同的网关,可以在连线过程中设置条件,比如请假流程,请假天数小于三天那么走主管、人事即可。天数大于等于三天那么需要走主管、总经理、人事,多了一个总经理的审核。

  合并网关,请假流程,当张三发出请假之后,需要主管和经理都审核通过,才能进行下一步的操作。等等网关,等周末再熟悉的时候再进行记录。

原文地址:https://www.cnblogs.com/qcq0703/p/15208925.html