带有时间戳的 Camunda Executionlistener 实现

Camunda Executionlistener implementation with timestamp

大家好,我是 camunda 的新手,我想测量我的流程从头到尾的执行时间,但我找不到适合侦听器的编码示例。我能想到的就是

public void notify (DelegateExecution execution) throws Exception {

    // What happens when Start Event is executed
    long startTime = System.currentTimeMillis();

    // What happens when token has reached End Event
    long stopTime = System.currentTimeMillis();
    long elapsedTime = stopTime - startTime;
    System.out.println(elapsedTime);
    }

我在建模器中为开始和结束事件设置了 class,我希望这是正确的。

提前致谢:)

如果您对流程端到端执行时间感兴趣,您可以通过 historyService 查看 HistoricActivityInstance 并查看其开始和结束日期。 无需自定义实现。

发动机为您测量。但是你不能将带有监听器的流程实例的持续时间打印到流程中,因为流程实例仍然是运行。您可以在数据库中查看持续时间 table act_hi_procinst.

您也可以使用引擎中的 HistoryService:

public class ProcessInstanceHistory {

@Inject
HistoryService historyService;

public List<HistoricProcessInstance> historicProcessInstances() {
    return historyService.createHistoricProcessInstanceQuery().list();
}

public void printDurations() {
    for (HistoricProcessInstance historicProcessInstance : historicProcessInstances()) {
        System.out.println("elapsedTime :" + historicProcessInstance.getDurationInMillis());
    }
}
}