Activiti学习之task与execution的关系

一.含义

task 即待办任务

execution 即流程执行线路,或者执行环境

二.关系

从数量上来说,task是始终小于等于execution,每个task总是对应一个execution。而execution不一定对应一个task。

从级别上来说,execution相当于task的执行环境,execution是包含task的

三.执行过程中的变化

假如有这么一个流程:

<img alt=""/>

1 . 开启新流程,创建一个新的主干execution,并且主干execution对应的当前节点为A

2. A节点审批通过

a. 更新主干节点为第一个InclusiveGetway

b. 创建两个新的execution

c.创建待办B和C,分别关联对应executionB 和C

3. B节点审批通过

a.更新executionB当前节点为第二个inclusiveGetway

4.C节点审批通过

a.更新executionC 当前节点为第二个inclusiveGetway

b.删除executionB

c.删除executionC

d.更新主干execution节点为D

5.D节点审批通过

a.删除主干execution

总结

execution其实就是分支的执行线。

有的文章说task与execution是一对一的关系,这个是不准确的,应该是execution和分支是一对一的关系,有多少个分支就有多少个execution。


在Activiti中Execution和ProcessInstance都用于获取当前流程实例的相关信息。

当流程中没有分支时,Execution等同于ProcessInstance,甚至连ID也相同;
当流程中存在分支(fork, parallel gateway),则在分支口会形成子Execution,在下一个gateway才会合并(joined)