4.5. 在进程设计器中的 BPMN2 子进程


子进程是一个活动,包含节点。您可以在子进程中嵌入主进程的一部分。您还可以在子进程中包含变量定义。这些变量可以被子进程中的所有节点访问。

子进程必须至少有一个传入连接和一个传出连接。子进程中的终止结束事件将结束子进程实例,但不会自动结束父进程实例。当其中没有更多活跃元素时,子进程将结束。

Red Hat Process Automation Manager 中支持以下子流程类型:

  • 嵌入式子进程:作为父进程执行一部分的子进程,并共享父进程数据,以及声明其自己的本地子进程变量。
  • 临时子进程:一个没有严格的元素执行顺序的子进程。
  • 可重复利用的子进程:独立于父进程的子进程。
  • 事件子进程:仅在启动事件或计时器上触发的子进程。
  • 多实例子进程:被多次实例化的子进程。

在以下示例中,Place order 子流程会检查是否有足够的库存来放置订购并更新库存信息(如果可以放置顺序)。然后,根据是否放置订购,通过主过程通知客户。

subprocess

嵌入式子进程

嵌入式子进程封装了进程的一部分。它必须包含起始事件和至少一个结束事件。请注意,这个元素允许您定义可由此容器内的所有元素访问的本地子进程变量。

adhoc 子进程

一个临时的子进程或进程包含许多嵌入的内部活动,旨在与典型进程流相比,具有更灵活的排序来执行。与常规进程不同,临时子进程不包含完整的、结构化的 BPMN2 图表描述,例如从启动事件到结束事件。相反,临时子进程仅包含活动、序列流、网关和中间事件。一个临时子进程也可以包含数据对象和数据关联。临时子进程中的活动不需要进入和传出序列流。但是,您可以指定一些包含的活动之间的序列流。使用时,序列流提供与常规进程相同的排序限制。要具有任何含义,中间事件必须具有传出的序列流,并可多次触发,同时临时子进程处于活跃状态。

可重复使用的子进程

可重复使用的子进程会在父进程中出现折叠状态。要配置可重复使用的子进程,请选择可重复使用的子进程,点 the Properties icon ,并展开 Implementation/Execution。设置以下属性:

  • 名为 Element :活动调用和实例化的子进程的 ID。
  • 独立 :如果选中,子进程将作为独立进程启动。如果没有选择,则当父进程被终止时,活跃的子进程将取消。
  • 中止 父项 :如果未选择,当执行调用进程实例期间出现错误时,非依赖的子进程可以中止父进程。例如,尝试调用子进程或子进程实例中止时出现错误。只有在未选择 独立 属性时,此属性才会看到。适用以下规则:

    • 如果可重复使用的子进程独立,则无法使用 Abort 父进程
    • 如果可重复使用的子进程不独立,则可使用 Abort 父进程
  • 等待完成 :如果选中,则不会在名为 子进程实例终止前执行指定的 On Exit Action。当 On Exit Action 完成后,父进程执行将继续执行。默认选择此属性(设置为 true)。
  • is Async :如果应异步调用任务且无法立即执行,则选择该选项。
  • 多个实例 :选择执行指定次数的子进程元素。如果选择,可用选项如下:

    • MI 执行模式 :指示多个实例是否并行或按顺序执行。如果设置为 Sequential,则在上一个实例完成前不会创建新的实例。
    • MI Collection 输入 :选择一个代表创建新实例的元素集合的变量。子进程作为集合大小进行多次实例化。
    • MI Data Input :指定包含集合中所选元素的变量名称。变量用于访问集合中的元素。
    • MI Collection 输出: Optional 变量,代表收集多实例节点的输出的元素集合。
    • MI Data Output :指定添加到 MI Collection 输出 属性中选择的输出集合中的变量名称。
    • MI Completion Condition(mvel): 每个完成的实例评估的 MVEL 表达式,以检查指定的多个实例节点是否可以完成。如果它评估为 true,则所有剩余的实例都将被取消。
  • Entry Action :Java 或 MVEL 脚本,用于指定任务开头的操作。
  • 在 Exit Action 中:Java 或 MVEL 脚本,用于指定任务末尾的操作。
  • SLA 到期日期:服务级别协议(SLA)过期的日期。您可以在天、分钟、秒和毫秒为单位。例如,SLA 因为日期字段中的 1m 值代表一分钟。
  • 元数据属性 :添加要用于自定义事件监听程序的任何自定义元数据属性名称和值,例如在出现元数据属性时实施某些操作的监听程序。

图 4.1. 可重复使用的子进程属性

您可以通过单击主进程中的 Place order 任务,然后单击 Open Sub-process 任务图标,在 Business Central 的新编辑器中打开子进程。

事件子进程

当事件启动事件被触发时,事件子进程会变为活跃状态。它可以中断父进程上下文,或者与其并行运行。

如果没有传出或传入连接,则只有事件或计时器可触发子进程。子进程不是常规控制流的一部分。尽管自包含,但在绑定进程的上下文中执行。

在进程流中使用事件子进程来处理主进程之外发生的事件。例如,在预定了飞行时,可能会发生两个事件:

  • 取消图书(中断)
  • 检查图书状态(非中断)

您可以使用事件子处理来模拟这两个事件。

多个实例子进程

当多个实例子进程触发时,会多次实例化它。实例按顺序创建或并行创建。如果您设置了连续模式,只有在上一实例完成后才会创建一个新的子进程实例。但是,当您设置并行模式时,会一次性创建所有子进程实例。

多个实例子进程具有一个传入连接和一个传出连接。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat