gpt4 book ai didi

java - 从 Camunda BPMN 引擎访问当前流程实例变量信息

转载 作者:行者123 更新时间:2023-11-29 03:09:13 25 4
gpt4 key购买 nike

我想把正在运行的流程实例的所有信息都存储在 H2 数据库的 act_proc_in_ 表下。(比如开始时间、结束时间、作者……)

我在 ExecutionListener 方法中(在实现 JavaDelegate 接口(interface)的类中),我需要从那里进一步转发信息。

我知道带有 createExecutionQuery() 方法的 RuntimeService 接口(interface),但在我看到的所有示例中,它似乎都映射到某种实体类。我不明白。抱歉,我是 Camunda BPM 引擎的新手。

<div class="snippet" data-lang="js" data-hide="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code> public class ProcessRequestDelegate implements JavaDelegate {
private final static Logger LOGGER = Logger.getLogger("LOAN-REQUESTS");
public void execute(DelegateExecution execution) throws Exception { LOGGER.info("Processing request by '"+execution.getVariable("customerId")+"'...");
System.out.println(execution.getVariable("amount"));
int Amount= ((Double) execution.getVariable("amount")).intValue(); System.out.println("Amountis"+Amount);

ProcessEngine processEngine = BpmPlatform.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();

ResulstSet rs= runtimeService.createExecutionQuery("What to write here?");
while (rs.next()) {
String author=rs.getString("AUTHOR");
Date start = rs.getDate("START_TIME");
int sales = rs.getInt("SALES");

} }
</code></pre>
</div>
</div>

最佳答案

从 Camunda BPM 7.2 开始,您可以使用方法 execution.getProcessEngineServices() 访问 engines services在 java 委托(delegate)类中。使用 HistoryService 或 RuntimeService 创建一个 (Historic-)ProcessInstanceQuery 就像

HistoryService historyService = execution.getProcessEngineServices().getHistoryService();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(execution.getProcessInstanceId()).singleResult();

然后您可以访问 HistoricProcessInstance 上的信息。

请注意,您正在通过这些服务查询数据库。在提交事务之前,当前事务中更改的数据无法通过服务获得。

关于java - 从 Camunda BPMN 引擎访问当前流程实例变量信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com