剩下的一些组件
主要讲解Gateway,Connection,Artifacts以及Container部分的用法
Gateway
关于网关前面多多少少都有涉及。分为四种网关。下面将逐一描述。前三种网关主要以流程变量的方式做判断。
ExclusiveGateway
单行网关会执行第一个符合条件的
【官网典例】
ParallelGateway
并行网关所有通路都执行。类是java的fork join最后会聚合再执行后续步骤。
【官网典例】
InclusiveGateway
包容网关所有通路进行判断通过的话通路全部会执行。
【官网典例】
EventGateway
事件网关可以简单理解为与捕获中间事件为条件的单行网关。Activiti不支持基于事件的网关后接收任务。
- 基于事件的网关必须具有两个或更多传出序列流。
- 基于事件的网关只能连接到intermediateCatchEvent仅类型的元素。
- 一个intermediateCatchEvent连接到一个基于事件的网关必须有一个单一的进入顺序流。
【官网典例】
Connection
SequenceFlow
简而言之就是普通的连接线
MessageFlow
简而言之就是跨泳池的连接线
Association
一般可以默认为是补偿的事件连接线或者注释的连接线,叫做关联。
Artifacts
Annotation
简单来说就是注释
Container
容器的意思
Pool+Lane
泳池与泳道,主要用于流程结构的划分。
EventSubProcess
简单说就是,由事件出发的子流程
SubProcess
BPMN 2.0区分了常规子流程(通常也称为嵌入式子流程)和呼叫活动(看起来非常相似)。从概念的角度来看,当流程执行到达活动时,两者都将调用子流程。
不同之处在于,调用活动引用了流程定义外部的流程,而子流程嵌入在原始流程定义中。调用活动的主要用例是具有可从多个其他流程定义调用的可重用流程定义。
当进程执行到达调用活动时,将创建一个新执行,该执行是到达调用活动的执行的子执行。然后,该子执行用于执行子进程,可能在常规进程中创建并行子执行。超级执行一直等到子进程完全结束,然后继续原始进程。
【子流程】
子流程只能有一个无启动事件,不允许其他启动事件类型。子流程必须至少有一个结束事件。请注意,BPMN 2.0规范允许省略子流程中的开始和结束事件,但当前的Activiti实现不支持此操作。
SequenceFlow不能跨越子流程边界。
【调用活动】
调用活动在Task中
官网demo
Transaction
事务子流程是嵌入式子流程,可用于将多个活动分组到事务。事务是一个逻辑工作单元,它允许对一组单独的活动进行分组,从而使它们共同成功或失败。
执行的可能有三种不同的结果:
如果执行既未被取消也未被危险终止,则执行成功。如果事务子进程成功,则使用传出序列流保留它。如果在此过程中稍后抛出补偿事件,则可以补偿执行成功的事务。
事务是取消,如果执行到达取消结束事件。在这种情况下,所有执行都将被终止并删除。然后将单个剩余执行设置为取消边界事件,从而触发补偿。在补偿完成之后,使用取消边界事件的输出序列流来保留事务子过程。
如果抛出错误事件,则事务以危险结束,而不会在事务子流程的范围内捕获。(如果错误发生在事务子进程的边界上,这也适用。)在这种情况下,不执行补偿。
官网Demo
结语
虽然没有什么人看,也算是按照自己期望的把activiti知识都过了一遍,基本的常用Task都已经在帖子里面涉及到了,也都有提及。也算是告一段落了。