如何解决Camunda:通过多个流程实例共享变量的最佳实践
由于我目前仍然是使用 camunda 的初学者,我想知道使用 camunda 和 BPMN 工作流通过多个流程实例共享变量的最佳实践是什么。 示例工作流如下所示:
工作流程包含在特定时间段内查找产品。进程开始时没有给出周期,因为它是基于计时器的启动。必须存储查找时间段并提供给流程范围。
详细来说,第一个任务获取最近成功执行的时间戳,并将其作为参数提供给工作流。第二个任务根据上次成功执行的时间戳检查新产品。第三个任务对产品进行处理,最后一个任务存储最新的成功时间戳。
围绕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 举报,一经查实,本站将立刻删除。