我希望在act_proc_in_表下存储在H2数据库中的运行流程实例的所有信息。(如starttime,endtime,author ..)
我在ExecutionListener方法中(在实现JavaDelegate接口的类中),我需要进一步转发信息。
我通过createExecutionQuery()方法了解RuntimeService接口,但在我看到的所有示例中,它似乎都映射到某种实体类。我不明白。 对不起,我是Camunda BPM引擎的新手。
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");
} }
答案 0 :(得分:4)
从Camunda BPM 7.2开始,您可以使用方法execution.getProcessEngineServices()来访问Java委托类中的engines services。使用HistoryService或RuntimeService创建(历史 - )ProcessInstanceQuery,如
HistoryService historyService = execution.getProcessEngineServices().getHistoryService();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(execution.getProcessInstanceId()).singleResult();
然后您可以访问HistoricProcessInstance上的信息。
请注意,您正在通过这些服务查询数据库。在事务提交之前,当前事务中更改的数据无法通过服务获得。