/** * getHighLightedFlows * * @param processDefinition * @param processInstanceId * @return */ private List<String> getHighLightedFlows(ProcessDefinitionEntity processDefinition, String processInstanceId) { List<String> highLightedFlows = new ArrayList<String>(); List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) //order by startime asc is not correct. use default order is correct. //.orderByHistoricActivityInstanceStartTime().asc()/*.orderByActivityId().asc()*/ .list(); LinkedList<HistoricActivityInstance> hisActInstList = new LinkedList<HistoricActivityInstance>(); hisActInstList.addAll(historicActivityInstances); getHighlightedFlows(processDefinition.getActivities(), hisActInstList, highLightedFlows); return highLightedFlows; }
private List<String> getHighLightedFlows(String processInstanceId, ProcessDefinitionEntity processDefinition) { List<String> highLightedFlows = new ArrayList<String>(); List<HistoricActivityInstance> historicActivityInstances = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .orderByHistoricActivityInstanceStartTime().asc().list(); List<String> historicActivityInstanceList = new ArrayList<String>(); for (HistoricActivityInstance hai : historicActivityInstances) { historicActivityInstanceList.add(hai.getActivityId()); } // add current activities to list List<String> highLightedActivities = runtimeService.getActiveActivityIds(processInstanceId); historicActivityInstanceList.addAll(highLightedActivities); // activities and their sequence-flows for (ActivityImpl activity : processDefinition.getActivities()) { int index = historicActivityInstanceList.indexOf(activity.getId()); if (index >= 0 && index + 1 < historicActivityInstanceList.size()) { List<PvmTransition> pvmTransitionList = activity .getOutgoingTransitions(); for (PvmTransition pvmTransition : pvmTransitionList) { String destinationFlowId = pvmTransition.getDestination().getId(); if (destinationFlowId.equals(historicActivityInstanceList.get(index + 1))) { highLightedFlows.add(pvmTransition.getId()); } } } } return highLightedFlows; }
@GetMapping(value = "/process-instance/{processInstanceId}/highlights", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public Object getHighlighted(@PathVariable String processInstanceId) { JSONObject responseJSON = new JSONObject(); responseJSON.put("processInstanceId", processInstanceId); JSONArray activitiesArray = new JSONArray(); JSONArray flowsArray = new JSONArray(); HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery() .processInstanceId(processInstanceId) .singleResult(); ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) repositoryService .getProcessDefinition(processInstance.getProcessDefinitionId()); responseJSON.put("processDefinitionId", processInstance.getProcessDefinitionId()); List<String> highLightedActivities; if (processInstance.getEndTime() != null) { highLightedActivities = historyService .createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) .activityType("endEvent") .list().stream().map(HistoricActivityInstance::getActivityId) .collect(Collectors.toList()); } else { highLightedActivities = runtimeService.getActiveActivityIds(processInstanceId); } List<String> highLightedFlows = getHighLightedFlows(processDefinition, processInstanceId); activitiesArray.addAll(highLightedActivities); flowsArray.addAll(highLightedFlows); responseJSON.put("activities", activitiesArray); responseJSON.put("flows", flowsArray); return responseJSON; }
protected void assertHistoricActivitiesDeleteReason(ProcessInstance processInstance, String expectedDeleteReason, String ... activityIds) { if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) { for (String activityId : activityIds) { List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery() .activityId(activityId).processInstanceId(processInstance.getId()).list(); assertTrue("Could not find historic activities", historicActivityInstances.size() > 0); for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) { assertNotNull(historicActivityInstance.getEndTime()); if (expectedDeleteReason == null) { assertNull(historicActivityInstance.getDeleteReason()); } else { assertTrue(historicActivityInstance.getDeleteReason().startsWith(expectedDeleteReason)); } } } } }
.processInstanceId(task.getProcessInstanceId()) .activityId(pvmTransition.getId()) .list();
.processInstanceId(processInstanceId).list(); if (historicActivityInstances != null && historicActivityInstances.size() > 0) { for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
.processInstanceId(processInstanceId).list(); if (historicActivityInstances != null && historicActivityInstances.size() > 0) { for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
.processInstanceId(instanceId).orderByHistoricActivityInstanceStartTime().asc().list();
.processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
/** * getHighLightedFlows * * @param processDefinition * @param processInstanceId * @return */ private List<String> getHighLightedFlows(ProcessDefinitionEntity processDefinition, String processInstanceId) { List<String> highLightedFlows = new ArrayList<String>(); List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) //order by startime asc is not correct. use default order is correct. //.orderByHistoricActivityInstanceStartTime().asc()/*.orderByActivityId().asc()*/ .list(); LinkedList<HistoricActivityInstance> hisActInstList = new LinkedList<HistoricActivityInstance>(); hisActInstList.addAll(historicActivityInstances); getHighlightedFlows(processDefinition.getActivities(), hisActInstList, highLightedFlows); return highLightedFlows; }
/** * getHighLightedFlows * * @param processDefinition * @param processInstanceId * @return */ private List<String> getHighLightedFlows(ProcessDefinitionEntity processDefinition, String processInstanceId) { List<String> highLightedFlows = new ArrayList<String>(); List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId) //order by startime asc is not correct. use default order is correct. //.orderByHistoricActivityInstanceStartTime().asc()/*.orderByActivityId().asc()*/ .list(); LinkedList<HistoricActivityInstance> hisActInstList = new LinkedList<HistoricActivityInstance>(); hisActInstList.addAll(historicActivityInstances); getHighlightedFlows(processDefinition.getActivities(), hisActInstList, highLightedFlows); return highLightedFlows; }
HistoricActivityInstance getHistoricActivitiInstance(String processId, String activityType) { return engine.getHistoryService().createHistoricActivityInstanceQuery().activityType(activityType).processInstanceId( processId).singleResult(); }
@Override public void processEndedAndInExclusiveEndEvent(final String processInstanceId, final String endEventId) { // Assert the process instance is ended getAssertFactory().getProcessInstanceAssertable(callback).processIsEnded(processInstanceId); // Assert that there is exactly one historic activity instance for end // events and that it has the correct id callback.trace(LogMessage.PROCESS_10, processInstanceId, endEventId); final List<HistoricActivityInstance> historicActivityInstances = getHistoryService().createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId).activityType("endEvent").finished().list(); Assert.assertThat(historicActivityInstances.size(), is(1)); Assert.assertThat(historicActivityInstances.get(0).getActivityId(), is(endEventId)); }
List<HistoricActivityInstance> getHistoricActivityInstances(String processInstanceId) { HistoricActivityInstanceQuery query = engine.getHistoryService().createHistoricActivityInstanceQuery().processInstanceId( processInstanceId).orderByHistoricActivityInstanceStartTime().asc(); return query.list(); }
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 List<HistoricActivityInstance> getHistoricActivityInstancesByProcessInstanceId(String processInstanceId) { return activitiHistoryService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime() .asc().orderByHistoricActivityInstanceEndTime().asc().list(); }
@Override public List<HistoricActivityInstance> getHistoricActivityInstancesByProcessInstanceId(String processInstanceId) { return activitiHistoryService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime() .asc().orderByHistoricActivityInstanceEndTime().asc().list(); }
List<HistoricActivityInstance> getHistoricActivities(String activityType, String processInstanceId) { return engine.getHistoryService().createHistoricActivityInstanceQuery().activityType(activityType).processInstanceId( processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); }
/** * 查询指定任务节点的最新记录 * * @param processInstance * 流程实例 * @param activityId * @return */ public List<HistoricActivityInstance> findHistoricUserTask(String instanceId) { // 查询当前流程实例审批结束的历史节点 List<HistoricActivityInstance> historicActivityInstances = historyService .createHistoricActivityInstanceQuery().activityType("userTask") .processInstanceId(instanceId).finished() .orderByHistoricActivityInstanceEndTime().desc().list(); return historicActivityInstances; }
protected void assertHistoricActivitiesDeleteReason(ProcessInstance processInstance, String expectedDeleteReason, String ... activityIds) { if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) { for (String activityId : activityIds) { List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery() .activityId(activityId).processInstanceId(processInstance.getId()).list(); assertTrue("Could not find historic activities", historicActivityInstances.size() > 0); for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) { assertNotNull(historicActivityInstance.getEndTime()); if (expectedDeleteReason == null) { assertNull(historicActivityInstance.getDeleteReason()); } else { assertTrue(historicActivityInstance.getDeleteReason().startsWith(expectedDeleteReason)); } } } } }