HistoricActivityInstance getHistoricActivitiInstance(String processId, String activityType) { return engine.getHistoryService().createHistoricActivityInstanceQuery().activityType(activityType).processInstanceId( processId).singleResult(); }
public String getActivityType(String processInstanceId, String activityId) { HistoricActivityInstance historicInstance = engine.getHistoryService().createHistoricActivityInstanceQuery().processInstanceId( processInstanceId).activityId(activityId).singleResult(); return historicInstance != null ? historicInstance.getActivityType() : null; }
@Override public void handle(SimulationEvent event) { // start process now String processInstanceId = (String) event.getProperty(PROCESS_INSTANCE_ID); // get process variables for startEvent HistoricActivityInstance activityInstance = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityType("startEvent") .singleResult(); List<HistoricDetail> details = historyService.createHistoricDetailQuery() .processInstanceId( processInstanceId ) .activityInstanceId( activityInstance.getId()) .variableUpdates() .list(); // fulfill variables Map<String, Object> variables = new HashMap<String,Object>(); for ( HistoricDetail detail : details) { variables.put( ((HistoricVariableUpdate) detail).getVariableName(), ((HistoricVariableUpdate) detail).getValue()); } variables.put( PROCESS_INSTANCE_ID, processInstanceId); log.debug("[{}] Starting new processKey[{}] properties[{}]", ClockUtil.getCurrentTime(), processToStartKey, variables); SimulationRunContext.getRuntimeService().startProcessInstanceByKey( processToStartKey, variables); }
/** * @param historicProcessInstance HistoricProcessInstance * @return Map */ public Map<String, Object> getStartVariables(HistoricProcessInstance historicProcessInstance) { if (historicProcessInstance.getStartActivityId() == null) { return Collections.emptyMap(); } // Get historic variable values for start-event HistoricActivityInstance startEvent = activitiUtil.getHistoryService() .createHistoricActivityInstanceQuery() .processInstanceId(historicProcessInstance.getId()) .activityId(historicProcessInstance.getStartActivityId()) .singleResult(); Map<String, Object> variables = getHistoricActivityVariables(startEvent.getId()); return variables; }
/** * @param historicProcessInstance HistoricProcessInstance * @return Map */ public Map<String, Object> getStartVariables(HistoricProcessInstance historicProcessInstance) { if (historicProcessInstance.getStartActivityId() == null) { return Collections.emptyMap(); } // Get historic variable values for start-event HistoricActivityInstance startEvent = activitiUtil.getHistoryService() .createHistoricActivityInstanceQuery() .processInstanceId(historicProcessInstance.getId()) .activityId(historicProcessInstance.getStartActivityId()) .singleResult(); Map<String, Object> variables = getHistoricActivityVariables(startEvent.getId()); return variables; }
@Override public void execute(ActivityExecution execution) throws Exception { String processInstanceId = (String) execution.getVariable(PlaybackStartProcessEventHandler.PROCESS_INSTANCE_ID); HistoryService historyService = (HistoryService) Context.getProcessEngineConfiguration().getBeans().get(PLAYBACK_HISTORY_SERVICE); // get process variables for the current activityId HistoricActivityInstance activityInstance = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityId( execution.getCurrentActivityId() ) .singleResult(); List<HistoricDetail> details = historyService.createHistoricDetailQuery() .processInstanceId( processInstanceId ) .activityInstanceId( activityInstance.getId()) .variableUpdates() .list(); // fulfill variables Map<String, Object> variables = new HashMap<String,Object>(); for ( HistoricDetail detail : details) { variables.put( ((HistoricVariableUpdate) detail).getVariableName(), ((HistoricVariableUpdate) detail).getValue()); } execution.setVariables(variables); PvmTransition transition = execution.getActivity().getOutgoingTransitions().get(0); execution.take(transition); }
@Override public long simulateTaskExecution(TaskEntity execTask, Map<String, Object> variables) { String playbackProcessInstanceId = (String) runtimeService.getVariable(execTask.getExecutionId(), PlaybackStartProcessEventHandler.PROCESS_INSTANCE_ID); // activity instance has to by only one HistoricActivityInstance activityInstance = playbackHistoryService.createHistoricActivityInstanceQuery() .processInstanceId(playbackProcessInstanceId) .activityId(execTask.getTaskDefinitionKey()) .singleResult(); if ( activityInstance == null ) //use backupExecutor return backUpExecutor.simulateTaskExecution(execTask, variables); List<HistoricDetail> playbackDetails = playbackHistoryService.createHistoricDetailQuery() .activityInstanceId(activityInstance.getId()) .processInstanceId(playbackProcessInstanceId) .variableUpdates() .list(); // fulfill variables for ( HistoricDetail detail : playbackDetails) { variables.put( ((HistoricVariableUpdate) detail).getVariableName(), ((HistoricVariableUpdate) detail).getValue()); } //@TODO change in version 5.12 return activityInstance.getDurationInMillis(); }