【问题标题】:How is the state of a BPMN process defined?BPMN 流程的状态是如何定义的?
【发布时间】:2019-09-29 06:44:03
【问题描述】:

假设一个描述活动、网关、开始和结束事件的 BPMN 流程。如下:

每个步骤都由 BPMN 引擎管理。在某一时刻,我们如何判断哪个是进程的状态?活动似乎定义了一些体现为动作的状态(例如评估请求)。我对么 ?

另外,如果我们假设活动代表状态,那么如果我们要通过专门的后续应用程序导航,我们如何获得下一个可能状态的列表?

是否应该以更加工作流为导向的方式对流程进行建模,以表达这些状态/动作的可能性?我的直觉是事件也可以用来管理状态和可能的相关动作。

【问题讨论】:

    标签: workflow bpmn camunda-modeler


    【解决方案1】:

    由于我不确定您对流程状态的确切理解,我将首先尝试对其进行定义。我猜你知道令牌的概念,见discussion in the Camunda forum:

    令牌是一个 BPMN 概念,表示流程实例中的状态。它没有任何变量或任何消息。

    您现在可以将流程状态定义为在给定时间存在多少令牌以及当前在给定活动或事件中有多少令牌的统计信息。

    可以从您最喜欢的 BPMN 引擎中提取此统计信息(例如,在 Camunda 的 Cockpit 中以彩色小气泡的形式看到)。有了这些统计数据,您原则上可以对下一个可能的状态进行预测,即确定在每个活动中可能在下一个时间实例中有多少令牌的场景。

    【讨论】:

    • 好的,我理解令牌的概念,它似乎造成了与流程有关的设计缺陷,因为它有助于线性流程的设计。
    • 这似乎证实了所描述的 BPM 流程不能很好地管理实际流程和状态/转换的后续。 Worfklow 绝对不同于状态机;感谢您的反馈
    • @CédricHartland 如果您在谈论State machine 并考虑与图灵相关的东西,那么您是对的。 BPMN 对于与业务相关的事物来说非常棒,但对于理论事物或 UX 而言则不然,请参阅stackoverflow.com/questions/55848712/…
    • 你很好理解我的问题。我有业务流程,我需要将其链接到一些 UI 用例和用户路径。我需要在动作流和状态管理之间创建一些映射。感谢您的指导
    【解决方案2】:

    状态在 BPMN 中有不同的含义,它可能意味着: 1 - 流中的令牌在哪里? 2 - 流程是否正确运行? 3 - 或者,通过表单中的特定变量(字段)。 如果您指的是流程中常见的第三种情况,则必须在数据模型中将字段定义为枚举(取决于引擎)并手动或自动更改其在表单中的值。

    【讨论】:

      【解决方案3】:

      显然,BPMN 相当抽象的 Petri-Net 式令牌流语义并没有捕捉到业务流程的真实语义。由于学术压力集团,它刚刚被人为地强加给 BPMN。真正有意义的语义必须是指拥有它的业务系统中流程的信息上下文。

      当然,作为流程(类型)所有者的业务系统,在流程运行过程中的任何时候,都处于某种复杂的动态信息状态,其中一部分构成流程的上下文,并且可以因此被认为是它的状态。

      事实上,进程的(信息)状态本质上是由进程(事件/活动)使用或影响的对象的所有属性值槽给出的。除了这些“全局变量”,进程的状态还包括

      1. (辅助)过程变量的值,
      2. 信息,哪些活动已经开始(和正在进行)。

      【讨论】:

        【解决方案4】:

        查看Imixs-Workflow project。它是一个面向事件的工作流引擎,而不是 BPM 引擎中常见的面向任务的设计。

        这种工作流引擎中的每个任务都会在您的流程模型中定义一个状态。工作流引擎保持此状态,直到触发事件。事件定义了从一种状态到另一种状态的转换。

        您可以在事件驱动的工作流模型here 中找到如何对不同场景建模的示例。

        【讨论】:

          猜你喜欢
          • 2021-05-28
          • 2022-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-19
          • 1970-01-01
          • 1970-01-01
          • 2019-05-25
          相关资源
          最近更新 更多