簡體   English   中英

我可以在camunda中訪問計時器事件的值嗎?

[英]Can i access the value of the timer event in camunda?

由於可以設置計時器事件的持續時間,因此可以通過Java代碼訪問它嗎? 還是作為camunda變量?

如果要訪問XML中定義的屬性,則可以使用BPMN Model API 例如:

String processDefinitionId = ...
String timerEventId = ...

BpmnModelInstance bpmnModel = repositoryService.getBpmnModelInstance(processDefinitionId);
CatchEvent timerEvent = bpmnModel.getModelElementById(timerEventId);
TimerEventDefinition timerEventDefinition = 
  (TimerEventDefinition) timerEvent.getEventDefinitions().iterator().next();
TimeDuration duration = timerEventDefinition.getTimeDuration();
String configuredDuration = duration.getTextContent();

如果要獲取計時器下一次在運行時觸發的實際時間,則必須查詢相應的作業:

String processDefinitionId = ...
String timerEventId = ...
String processInstanceId = ...

Job timerJob = managementService.createJobQuery()
  .processDefinitionId(processDefinitionId)
  .activityId(activityId)
  .processInstanceId(processInstanceId)
  .singleResult();
Date firingDate = timerJob.getDueDate();

請注意,如果您查詢的流程實例尚未到達timer事件,則timerJob為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM