【问题标题】:BPMN parallel task invoke same processBPMN 并行任务调用相同的流程
【发布时间】:2014-05-20 12:10:09
【问题描述】:

我想为一个 BPMN 流程建模,其中两个并行任务正在验证两个独立的表单。如果其中任何一个表格无效,那么我们必须致电客户并要求新表格。问题是,我不想就表格 1 和分别就表格 2 给客户打电话 - 如果两种表格都无效,我只想给他打一次电话。

有没有办法在安排呼叫客户任务之前检查两个验证是否已完成?

那么我还有一个问题 - 在客户被呼叫后,我如何重新进入流程?如果一个表单无效,我想在收到新表单时重新输入相应的表单验证过程,如果两者都无效,则应在两个子流程中重新输入。

如果这很重要,我正在使用 Activiti 来实现它。

编辑

每个流程中的验证任务可能相隔几天,我不想因为另一个子流程中的验证而阻塞一个子流程。我正在寻找一种解决方案,其中子流程将继续通过验证(如果它有效),并且只有在完成两个验证任务(并且至少其中一个是无效的)时才会拨打客户电话。

【问题讨论】:

    标签: activiti business-process-management bpmn business-process


    【解决方案1】:

    好的,所以这里的根本问题是我们有 4 个状态需要处理 - 有效/有效、无效/有效、有效/无效和无效/无效。现在,我们可以忽略有效/有效,因为我假设这是快乐路径模型,并且您已经知道如何使其工作。那么对于无效的选项我们可以做些什么呢。

    我得到的一件事是,您需要在表单有效后的“下一步”才能继续,即使另一个表单尚未经过验证。我认为您要做的只是更改处理无效的过程。我认为事件网关可以让我们到达那里。

    现在,我的经验主要是 IBM BPM,而不是 Activity,所以这个答案有可能不是有效的 BPMN,但我认为是。基本上我会想象的是,您的初始拆分实际上是 4 路拆分。现在有 2 个用于表单,2 个用于事件网关。这些事件网关正在等待每个表单发送“有效”或“无效”消息。当收到两者的答案时,它就会知道下一步是简单地结束那部分流程,还是修复有效性。

    在 IBM BPM 中,该模型大致如下所示(抱歉,我的 Activiti VM 现在已关闭)

    我以前没有尝试过图表。该链接是-http://imgur.com/pEHY9uO

    【讨论】:

      【解决方案2】:

      为了扩展 Drux 的解决方案,下图是使用 Activiti Modeler 构建的

      这里,在两个表单的表单验证之后都会发送一个信号事件。 事件被捕获,然后关联以确定是否需要向客户发送电子邮件。

      虽然下图没有显示,但表单具有两种状态意味着我们还可以在需要时触发重新进入一个或两个表单子流程。

      希望这会有所帮助。 Gharley-BP3

      【讨论】:

      • 谢谢,我可能会实施类似的解决方案。关于信号事件的一个快速问题 - 如果我理解正确,默认情况下信号事件会广播到每个流程实例(根据 BPMN 2.0 标准),但 Activiti 可以选择将范围限制为一个实例。那么这个解决方案在没有定制的情况下无法在纯 BPMN 环境中工作,我说得对吗?我从这里获得了这些信息 - activiti.org/userguide/index.html#bpmnSignalEventDefinition
      • 是的,你是对的,信号事件通常是全局的(但 Activiti 确实提供了一种限制范围的机制)。然而,虽然所有进程都接收到信号事件,但我遇到的每个实现平台都提供了一种“关联”信号的机制,以便只有有效的侦听器“触发”事件。因此,该方法将在“纯”BPMN 环境中工作。
      【解决方案3】:

      您可以并行执行验证,然后将两条路径与并行网关合并。在 BPMN 中,合并并行网关等待所有传入流。 关于第二个问题,您可以简单地使用几个专有网关。附件是一个示例过程,基于您的文字描述。 这是有效的 BPMN。但是,我不是 activiti 专家,所以我不知道是否有任何针对 activiti 的问题。

      【讨论】:

      • 我想将子流程分开。我的示例只是对实际过程的抽象,它要复杂得多。每个流程中的验证任务可能相隔几天,我不想因为另一个流程中的验证而阻塞子流程。
      • 我不明白。子进程正在等待进程完成,以便只执行一个电话呼叫。所以这部分过程必然是被阻塞的。但是您可以并行执行其他任务,只需引入并行网关即可。那么问题出在哪里?另一种方法是尝试使用消息事件来解决问题...
      猜你喜欢
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多