美文网首页activiti工作流activiti
流程实例,任务,执行对象控制流程的执行

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

作者: 我有一只喵喵 | 来源:发表于2019-03-11 15:42 被阅读2次

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

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

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

  • act_ru_execution 正在执行的执行对象表

  • act_hi_procinst 流程实例的历史表

  • act_ru_task 正在执行的任务表,(只有userTask任务节点,才会在此表中产生数据)

  • act_hi_taskinst 历史任务表,(只有userTask任务节点,才会在此表中产生数据)

  • act_hi_actinst 所有活动节点的历史表

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

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任务之后,当前流程流转到领导审批节点:

  • act_ru_task表数据变化
    已经完成的userTask1任务节点数据被清除,新增一条userTask2节点数据


    act_ru_task
  • act_hi_taskinst表数据变化
    已经完成的userTask1节点数据依然存在,其中END_TIME_字段为此任务节点结束时间、并且新增一条userTask2任务记录,其END_TIME_字段为NULL,表示此任务节点还在运行


    act_hi_taskinst.png
  • act_ru_execution表数据变化
    由于当前流程进行了运转,所以当前执行对象会更新当前流程执行了什么节点之上


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

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

  • act_ru_task表变化
    同userTask1节点执行,当此任务节点执行结束之后就会从此表中删除这条节点记录

  • act_hi_taskinst表数据变化
    更新此任务节点记录,更新END_TIME_字段值为任务节点结束时间

4流程结束
  • act_ru_execution表数据变化
    由于领导审批结束后,流程执行结束,也就是执行对象执行完毕,该条执行对象对应数据会被清除。

  • act_hi_procinst表数据变化
    流程执行结束,更新流程实例结束时间


    act_hi_procinst.png

三、总结

  • Execution 执行对象--按流程定义的规则执行一次的过程
    对应表:
    act_ru_execution: 正在执行的信息
    act_hi_procinst:已经执行完的历史流程实例信息
    act_hi_actinst:存放历史所有完成的活动

  • ProcessInstance 流程实例--特指流程从开始到结束的那个最大的执行分支,一个执行的流程中,流程实例只有1个

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

  • Task任务 --- 执行到某任务环节时生成的任务信息。
    对应的表:
    act_ru_task:正在执行的任务信息
    act_hi_taskinst:已经执行完的历史任务信息

相关文章

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

    流程实例,任务,执行对象控制流程的执行 介绍activiti中流程实例、任务、执行对象之间的区别联系,并且介绍这三...

  • activiti工作流任务(task)的查询

    任务分为两个部分:第一:是查询出任务 第二:查询出正在执行的流程对象,不属于个人属于流程实例的 第三:办理任务 查...

  • 04-流程控制及while循环

    流程控制 流程: 计算机执行代码的顺序,就是流程。 流程控制: 对计算机代码执行顺序的控制,就是流程控制。 流程分...

  • Activiti 流程实例、任务的执行

    09【掌握】流程实例、任务的执行 1.流程图 2.部署流程定义 3.启动流程 4.查询个人任务 5.办理任务 6....

  • 5-流程控制

    流程控制 流程 计算机执行代码的顺序就是流程 流程控制 对计算机代码执行顺序的管理就是流程控制 流程分类 流程控制...

  • 二级-2.Python流程控制

    流程控制 流程:计算机执行代码的顺序就是流程。 流程控制:对计算机代码执行顺序的管理就是流程控制。 流程控制一共分...

  • python学习_day4

    流程与控制 流程:流程就是计算机执行代码的顺序 流程控制:对计算机代码执行的顺序进行有效的管理,只有流程控制才能实...

  • NO.5 Java的基础语法(语句)

    流程控制语句:可以控制程序的执行流程(从上到下,依次执行) 流程控制语句的分类:顺序结构(从上到下,依次执行)、选...

  • JavaScript--流程控制语句、函数

    流程控制语句: 函数:被设计为执行特定任务的代码块

  • activiti流程控制

    流程实例与执行流 启动流程,会产生一个流程实例,如果没有分支的情况下,会产生一个执行流,如果存在分支,activi...

网友评论

    本文标题:流程实例,任务,执行对象控制流程的执行

    本文链接:https://www.haomeiwen.com/subject/gnhbpqtx.html