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

如何解决如何从 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?