【问题标题】:State in BPMN diagramBPMN图中的状态
【发布时间】:2016-06-18 13:23:20
【问题描述】:

如何在BPMN图中表示状态

我有一个描述实体行为的 BPMN 图。动作之间有一些动作和箭头。我想表达在两个给定动作之间,实体处于特定状态。

在 BPMN 中可以吗?

【问题讨论】:

    标签: bpmn


    【解决方案1】:

    在 BPMN 中,数据建模就是用于这样的目的。在流程建模中,必须对流程执行期间操作和使用的项目(对象)进行建模。在 BPMN 中执行此操作的最常见元素是 数据对象,通常如下图所示

    根据 BPMN 2.0 规范:

    在流程流中对数据进行建模的主要结构是 DataObject 元素。 DataObject 具有明确定义的生命周期,并具有由此产生的访问约束。
    数据对象类是一个项目感知元素。数据对象元素必须包含在 Process 或 Sub- 流程元素。

    此外,如果我们坚持你的问题,数据对象有一个特殊的属性,称为DataState。根据规范:

    Data Object 元素可以选择引用 DataState 元素,它是包含在 数据对象。这些状态的定义,例如, 可能的值和任何特定的语义都超出了本国际标准的范围。

    如您所见,这些状态并没有得到很好的记录,并且并非所有供应商都实施了。例如,Camunda 支持。

    【讨论】:

      【解决方案2】:

      另一种常用的方法是使用描述状态变化的动词-名词组合来命名活动。如果“发货订单”已经完成(并且没有带环回的网关),则可以推断订单状态为“发货”。

      我认为 BPMN 流程主要是面向活动的。活动是直接表达的,而对象状态通常是间接表达的。 BPMN 流程图不是状态图。 (差异一直是我和业务分析师等用于为经典以数据为中心的应用程序建模状态的几次讨论的主题。)

      【讨论】:

      • 嗯,人类从“Ship order”活动中推断“Shipped”是很直观的,但完全不可能以编程方式进行。问题是,我需要将 BPMN 流程的各个部分与实现中的状态连接起来(不变量对流程的给定阶段有效)。
      • 那么,您不在流程引擎 (BPMS) 中执行 BPMN 图吗?如果你这样做,我肯定更愿意让 BPMS 独自负责保持流程状态(对我来说,这意味着:哪些特定任务/活动 - 一个或多个 - 是开放的?),即使有外部记录系统 (SoR) .我想知道您是否可以在相关任务/s/ 之后使用状态为标签的信号中间发送事件。 SoR 接收到信号,然后将在那里设置状态,或者前面任务的实现将在其实现结束时更新状态。
      • 我正在研究自动化软件合成的可能性,以在 BPMN 流程中实现非人类参与者。我使用事件对它们之间的交互进行建模,但我需要在生成的软件中使用一些有意义的名称,以便对其进行检查和理解。
      • 我遇到过这个问题(以抽象方式使用 angular 中的 ngrx 模型状态)。对我来说,最好将ngrx建模为参与者,这样它就有了一条泳道。这是有争议的,因为你没有编排ngrx的过程,你只是把东西送进去,然后把东西拿出来。它本质上是一个黑盒过程,其中包含消息。但是将“ngrx”等同于“客户”是一个相当广泛的镜头。建模为流程参与者,使用数据对象引用使其非常简单。 “合作”也可以,但有点折衷。
      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多