Activity子流程——嵌入式流程

         子流程时包含其他的活动、网关、事件等的活动。其本身构成一个流程,并作为更大流程的一部分。子流程完全在父流程中定义(这就时为什么经常被称作嵌入式子流程)。

子流程有两个主要的使用场景:

  • 子流程可以分层建模。很多建模工具都可以折叠子流程,隐藏子流程的所有细节,而只显示业务流程的高层端到端总览。
  • 子流程创建了新的事件范围。在子流程执行中抛出的事件,可以通过子流程边界上的边界事件捕获。因此为该事件创建了限制在子流程内的范围。

使用子流程也要注意以下几点:

  • 子流程只能有一个空启动事件,而不允许有其他类型的启动事件。请注意BPMN2.0规范允许省略子流程的启动与结束事件,然而当前的Activiti实现并不支持省略。
  • 顺序流不能跨子流程边界。

子流程标识为标准活动,即圆角矩形。若折叠了子流程,则只显示其名字与一个加号,提供了流程的高层概览:

Activity子流程——嵌入式流程_第1张图片

若展开了子流程,则子流程的所有步骤都在流程边界内显示:

Activity子流程——嵌入式流程_第2张图片

使用子流程的一个主要原因,是为特定事件定义范围,下面我们使用一个demo验证下:

1、创建子流程

Activity子流程——嵌入式流程_第3张图片

其对应的xml如下:

  
    
    
    
      
      
      
      
      
      
      
    
    
    
    
    
    
    
  

 

2、启动流程,查看当前任务表act_run_task,当前任务为“提交”:

3、查看流程实例表、流程运行表:

4、完成当前任务,流程继续往下走,再次查看当前任务表,可以看到子流程自动启动

5、查看流程实例表、流程运行表,生成了两个执行流:主流程、子流程。

Activity子流程——嵌入式流程_第4张图片

 

PS: 流程边界事件这块,因为idea提供的bpmn插件,没有找到边界事件的控件,我没有试,有了解的朋友可以告诉我下,后期我再尝试。

Activity子流程——嵌入式流程_第5张图片

 

 

 

你可能感兴趣的:(activiti)