activiti工作流activiti

流程实例,任务,执行对象控制流程的执行

2019-03-11  本文已影响2人  我有一只喵喵

流程实例,任务,执行对象控制流程的执行

介绍activiti中流程实例、任务、执行对象之间的区别联系,并且介绍这三者在流程运转过程中数据库中所对应表中数据的变化。将以请假流程为例进行说明

一、流程实例,任务,执行对象相关表结构

二、请假流程实例进行说明

2.1、BPMN流程图

请假流程图

2.2 BPMN代码

  <process id="leave" name="leave process" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <userTask id="usertask1" name="组长审批" activiti:assignee="组长"></userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <userTask id="usertask2" name="主管审批" activiti:assignee="主管"></userTask>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
    <endEvent id="endevent1" name="End"></endEvent>
    <sequenceFlow id="flow3" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow>
  </process>

2.3 运行流程进行说明

1 启动流程
RuntimeService runtimeService = processEngine.getRuntimeService();
runtimeService.startProcessInstanceByKey("leave");

启动流程之后 act_ru_execution、act_hi_procinst表中会各增加一条记录


act_hi_procinst act_ru_execution

从act_ru_execution中的ACT_ID_字段可以看出,当前执行节点在userTask1。


启动流程的同时,流程流向第一个用户任务节点,在act_ru_task,act_hi_taskinst各产生一条数据


act_ru_task act_hi_taskinst

从act_hi_taskinst中END_TIME_字段可以看出,此时userTask1节点正在执行。


2 组长审批任务
        String taskId ="2505";
        taskService.complete(taskId);

当组长审批完userTask1任务之后,当前流程流转到领导审批节点:

3 领导审批任务
String taskId ="5002";
taskService.complete(taskId);

在此流程图中当领导进行审批之后,相当于走完了流程,也就意味着流程结束

4流程结束

三、总结

注意
(1)如果是单例流程,执行对象ID就是流程实例ID
(2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同
(3)一个流程中,流程实例只有1个,执行对象可以存在多个。

上一篇 下一篇

猜你喜欢

热点阅读