2016-11-05 35 views
0

嘿家伙我非常新Camunda,我想测量从开始到结束我的过程的执行时间,但我找不到一个适当的编码示例为听众。所有我能想出的是Camunda Executionlistener实现与时间戳

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); 
    } 

我设置类建模的开始和结束事件,我希望是正确的。

感谢提前:)

+0

欢迎堆栈溢出!请查看我们的[SO问题清单](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)来帮助你提出一个好问题,从而得到一个很好的答案。 –

回答

0

引擎为你测量。但是您不能将流程实例的监听器持续时间打印到流程中,因为流程实例仍在运行。您可以检查数据库表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()); 
    } 
} 
} 
2

如果你有兴趣在这个过程中终端到终端的执行时间,你可以通过historyService检查HistoricActivityInstance并检查其开始和结束日期。 不需要自定义实现。