-
-
/**
-
* 获取当前任务流程图片的输入流
-
* @param PROC_INST_ID_ 流程实例ID
-
* @from fhadmin.cn
-
*/
-
public InputStream genProcessDiagram(String PROC_INST_ID_, String type){
-
/* 获得活动的节点 */
-
String processDefinitionId = "";
-
if (this.isFinished(PROC_INST_ID_)) { // 如果流程已经结束,则得到结束节点
-
HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult();
-
processDefinitionId=pi.getProcessDefinitionId();
-
} else { // 如果流程没有结束,则取当前活动节点
-
/* 根据流程实例ID获得当前处于活动状态的ActivityId合集 */
-
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(PROC_INST_ID_).singleResult();
-
processDefinitionId = pi.getProcessDefinitionId();
-
}
-
/* 获得活动的节点对象 */
-
List<HistoricActivityInstance> highLightedActivitList = historyService.createHistoricActivityInstanceQuery().processInstanceId(PROC_INST_ID_).orderByHistoricActivityInstanceStartTime().asc().list();
-
List<String> highLightedActivitis = new ArrayList<String>(); //节点对象ID
-
for(HistoricActivityInstance tempActivity : highLightedActivitList){
-
String activityId = tempActivity.getActivityId();
-
highLightedActivitis.add(activityId);
-
}
-
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); //获取流程图
-
ProcessEngineConfiguration engconf = processEngine.getProcessEngineConfiguration();
-
/* 获得活动的连线对象 */
-
List<String> flows = new ArrayList<>(); //连线ID
-
if("RU".equals(type)) {
-
List<ActivityInstance> highLightedFlowInstances = runtimeService.createActivityInstanceQuery().activityType(BpmnXMLConstants.ELEMENT_SEQUENCE_FLOW).processInstanceId(PROC_INST_ID_).list();
-
for(ActivityInstance ai : highLightedFlowInstances) {
-
flows.add(ai.getActivityId());
-
}
-
}else {
-
List<HistoricActivityInstance> highLightedFlowInstances = historyService.createHistoricActivityInstanceQuery().activityType(BpmnXMLConstants.ELEMENT_SEQUENCE_FLOW).processInstanceId(PROC_INST_ID_).list();
-
for(HistoricActivityInstance ha : highLightedFlowInstances) {
-
flows.add(ha.getActivityId());
-
}
-
}
-
ProcessDiagramGenerator diagramGenerator = engconf.getProcessDiagramGenerator();
-
InputStream in = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivitis, flows, engconf.getActivityFontName(), engconf.getLabelFontName(), engconf.getAnnotationFontName(), engconf.getClassLoader(), 1.0, true);
-
return in;
-
}
-
-
阅读(860) | 评论(0) | 转发(0) |