Camunda:通过多个流程实例共享变量的最佳实践

如何解决Camunda:通过多个流程实例共享变量的最佳实践

由于我目前仍然是使用 camunda 的初学者,我想知道使用 camunda 和 BPMN 工作流通过多个流程实例共享变量的最佳实践是什么。 示例工作流如下所示:

enter image description here

工作流程包含在特定时间段内查找产品。进程开始时没有给出周期,因为它是基于计时器的启动。必须存储查找时间段并提供给流程范围。

详细来说,第一个任务获取最近成功执行的时间戳,并将其作为参数提供给工作流。第二个任务根据上次成功执行的时间戳检查新产品。第三个任务对产品进行处理,最后一个任务存储最新的成功时间戳。

围绕camunda [版本:7.14.0] 构建了一个spring boot 应用程序[版本:2.3.4],直到现在,我只有camunda 数据库,并且想存储具有给定功能的值。>

存储值并使其可用于所有流程实例的最佳方法是什么?

解决方法

对于跨流程实例共享数据的一般要求,您可以实现拥有数据的 REST 服务。 Camunda 使用 JAX-RS(泽西岛)。但是,您也可以使用 Spring 或其他选项来创建 REST 服务。

Spring Data 示例,包括相同 H2 DB Camunda 使用的数据模型和持久性:

https://github.com/rob2universe/rest-account-service

JAX-RS (Jersey) 示例,仅展示了如何将 REST 服务添加到 Camunda API:

https://github.com/rob2universe/camunda-custom-rest-endpoint

但是,您在这里的要求并不是真正跨多个流程实例共享业务数据。您只想知道您的流程实例最后一次运行是什么时候。这是您可以通过运行流程实例查询轻松弄清楚的事情。类似于:

var list = engine.getHistoryService().createHistoricProcessInstanceQuery()
    .processDefinitionKey(PD_KEY)
    .orderByProcessInstanceEndTime()
    .list();

通过这种方法,您可以在需要时从 Camunda 历史中检索信息,而无需在单独的表中明确存储和读取数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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元字符(。)和普通点?