Activiti 5.3提供了子流程的实现,包括两种基于子流程的实现:
一种是内嵌子流程:子流程元素<subProcess>内嵌在主流程元素<process>之内,只能在该流程中使用该子流程,外部是无法访问到的。这种子流程一般作为局部通用逻辑处理,或者因为特定业务需要,使得比较复杂的单个主流程设计清晰直观;
另一种是调用子流程:首先实现一个流程,在另一个流程中可以调用该流程,通常可以定义一些通用的流程作为这种调用子流程,供其他多个流程定义复用。这种子流程使用<callActivity>元素来进行调用,间接地嵌入到主流程中,用起来比较方便。
内嵌子流程
实现的基于内嵌子流程的流程,示例如图所示:
对应的流程定义文件SubProcessTest.MySubprocess.bpmn20.xml,内容如下所示:
流程定义中,实现了3个TaskListener,对应的代码分别如下所示: