有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从Camunda中的任何流程点跳转到事件?

我有一个中等复杂度的BPMN流程,有几个任务和网关。BPMN发动机与弹簧靴配合使用

现在,我有以下任务:如果我收到对我的端点的请求,我需要触发一个特殊的流程事件,无论流程当前在哪个步骤上。我试图使用Signal Event,但我找不到一个解决方案,它允许我不在特定的点上抛出事件,而是通过编程方式(使用其执行ID)将事件抛出到特定的流程实例

我想我需要一个来自Spring启动事件模型的C++或^ {CD2>}模拟的^ {CD1>}运算符,但不确定CAMUNDA是否提供了这样的功能。p>

有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    可以为不同的“范围”定义捕捉事件。例如,可以将接收消息边界事件附加到嵌入式子进程。这样,无论当前处于哪个任务中,进程都可以在嵌入子进程的整个持续时间内接收消息。见:https://docs.camunda.org/manual/latest/reference/bpmn20/subprocesses/embedded-subprocess/ 这些边界事件可以是中断(嵌入的子进程)或非中断(来自单独分支的新令牌)

    另一个解决方案是使用基于事件的子流程。这些可以放在嵌入式子流程中,以将它们限制在流程的定义范围/部分,也可以放在父流程中,在父流程中它们充当“全局”事件处理程序。见:https://docs.camunda.org/manual/latest/reference/bpmn20/subprocesses/event-subprocess/

    一旦流程实例达到消息接收状态,就可以向流程实例发送消息(或信号)以影响其行为。要将消息与多个流程实例中的正确流程实例相匹配,需要一个相关标准。最简单也是最好的解决方案是为每个流程实例提供一个唯一的业务密钥(特殊流程数据)。然后,可以将此业务密钥用作消息API上的参数,以将消息与正确的流程实例关联起来。见:https://docs.camunda.org/manual/latest/reference/rest/message/post-message/ 如果没有可用的业务密钥,可以使用(组合的)流程数据作为关联标准