如何解决如何从 Camunda 的任何流程点跳转到事件?
我有一个中等复杂度的 BPMN 流程,其中包含多个任务和网关。 BPMN 引擎与 Spring Boot 配合使用。
现在,我有以下任务:如果我收到对我的端点的请求,我需要触发一个特殊的流程事件,无论流程目前处于哪个步骤。我尝试使用信号事件,但找不到允许我不在特定点上抛出事件,而是以编程方式抛出到特定流程实例(使用其执行 ID)的解决方案。
我想我需要一种来自 C++ 的 goto
运算符模拟或来自 Spring Boot 事件模型的 @EventListener
模拟,但不确定 Camunda 是否提供这样的功能。
对此有什么想法吗?
解决方法
您可以为不同的“范围”定义捕获事件。例如,可以将接收消息边界事件附加到嵌入式子进程。这样,进程将准备好在嵌入的子进程的整个持续时间内接收消息,无论它当前处于哪个任务中。请参阅: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/ 如果没有可用的业务键,则可以使用流程数据(的组合)作为关联标准。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。