如何表示由系统自动化的 BPMN 工作流的一部分?

How to represent part of BPMN workflow that is automated by system?

我正在记录一个用户工作流程,其中部分流程由系统自动执行(例如,如果订单数量少于 10,则立即批准订单,而不是将其发送给员工进行审核)。

我有人与人之间的泳道,但不确定我在哪里适合这个系统 task/decision 路径。最佳做法是什么?可能是个愚蠢的想法,但我倾向于创建一个新的泳道并将其命名为 "system"。

有什么想法吗?

有一种通过专用 participant/lane 表达系统 tasks/decisions 的技术。然后将所有系统任务并置在系统通道上。

系统任务(BPMN 中的服务任务)通常代表参与者完成,因此在我看来,将它们放置在该参与者的通道中很有用。

通常这样的设计还有助于通过限制 "users" 车道和 "system" 车道之间的过渡数量来保持图表易于阅读。

由于 BPMN 2.0 规范没有明确指定通道的含义,因此将系统任务分离到单独的通道中的方法是很有可能的,并说了类似的话:

Lanes are used to organize and categorize Activities within a Pool. The meaning of the Lanes is up to the modeler. BPMN does not specify the usage of Lanes. Lanes are often used for such things as internal roles (e.g., Manager, Associate), systems (e.g., an enterprise application), an internal department (e.g., shipping, finance), etc.

所以你可以完全自由地用你想要的任何东西来填充它们。
但是,你的情况很明显,根本不需要这样的分离。根据您的描述,我们有典型的条件 activity 可以通过服务任务或子流程来表达。这是两种不同的方法,它们具有不同的语义。

  • 根据 BPMN 规范 服务任务 是使用某种服务的任务,可以是 Web 服务或自动化应用程序。 即当建模者不想分解某些过程并打算将其外包 给某些外部工具或代理时通常使用它。

  • 另外一杯茶是子流程,一般在你 想要 包装一些复杂的工作流程以供重用 或者如果 一个工作流可以分解成子元素

在您的用例中,子流程是一种选择。它具有高度可调节性、透明性和可维护性。例如,在子流程中,您可以为您的条件参数(订单数量)使用业务规则引擎,并在运行中灵活调整其值。 您可以从 this blog 中更详细地了解这些方法的区别。