子流程是用于将逻辑相关步骤封装在父流程中的选项。子流程中的步骤可以直接访问来自父流程的业务对象(变量)。无需任何数据映射。但是,与链接流程不同,只能从父 BPD 来访问子流程和将其实例化,并且它无法供任何其他流程或子流程复用。
子流程表示包含在父流程中的逻辑相关步骤的集合。您可以将子流程视为单个活动,从而提供父流程的简化高级视图,或者也可以钻取到该子流程中以获取其内容的更详细视图。
子流程可以嵌入在另一个子流程中。要向下钻取到折叠的子流程中并查看内容,请双击父级中的子流程活动。要从子流程或事件子流程中回到父流程,请使用图的左上角的导航。要从链接流程返回到父流程,请使用画布上方的菜单。
子流程可以包含与父流程截然不同的泳道。例如,子流程中的活动可以由一组参与者来执行,该组参与者不同于执行父流程中的活动的一组参与者。
与其他活动类似,可以通过在父流程中的子流程活动元素上配置循环行为来将子流程配置为在父流程的执行中多次运行。
有三种类型的子流程可在 BPD 中进行建模。 下表描述了其特征。
| 实现 | 描述 | 特征 | 变量作用域 |
|---|---|---|---|
| 子流程 | 仅在父流程中存在的不可复用子流程。 | 每个子流程必须包含至少一个实现类型为无的开始事件。 至于顶级流程活动以及同一顶级流程下的所有其他子流程和事件子流程,活动名称必须唯一。 |
从父流程继承变量,并且可以包含仅在子流程中可视的局部专用变量。 子流程中声明的变量不能与其任何父流程中声明的变量同名。如果有多层嵌入(其中子流程包含在其他子流程中),那么变量名称在整个子流程层次结构各处必须唯一。 |
| 链接流程 | 对另一个可复用流程的调用。 | 由链接流程活动调用的流程可以包含多个开始事件,但是必须包含至少一个实现类型为无的开始事件。 | 变量数据对于各流程为本地数据,因此必需数据映射才能在链接流程中传入和传出数据。 |
| 事件子流程 | 一种特殊化类型的不可复用子流程,该子流程不是其父流程的一般序列流的一部分,并且在父流程的执行期间可能出现零次或多次。 | 必须包含单个开始事件,可以是:
事件子流程执行可以中断父流程,或者可以并行运行。 至于顶级流程活动以及同一顶级流程下的所有其他子流程和事件子流程,活动名称必须唯一。 边界事件在事件子流程上不受支持。 |
从父流程继承变量,并且可以包含仅在子流程中可视的局部专用变量。 事件子流程中声明的变量不能与其任何父流程中声明的变量同名。如果有多层嵌入(其中事件子流程包含在其他子流程中),那么变量名在整个子流程层次结构中必须唯一。 |