当前位置:主页 > 查看内容

flowable 工作流办理过的节点描高亮颜色

发布时间:2021-07-22 00:00| 位朋友查看

简介:在正常的flowable就是显示当前节点 路径需要我们自己获取 特别是来回的驳回会导致节点混乱 这里主要就是如何正确的显示流程图 代码 1、生成图片 public byte[] createImage2(String processInstanceId) { //1.获取当前的流程实例 ProcessInstance processIns……

在正常的flowable就是显示当前节点 路径需要我们自己获取 特别是来回的驳回会导致节点混乱 这里主要就是如何正确的显示流程图


代码 1、生成图片

public byte[] createImage2(String processInstanceId) {
 //1.获取当前的流程实例
 ProcessInstance processInstance runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
 String processDefinitionId null;
 List String activeActivityIds null;
 //2.获取所有的历史轨迹对象 fhadmin.org
 List HistoricActivityInstance list historyService.createHistoricActivityInstanceQuery()
 .processInstanceId(processInstanceId).list();
 Map String, HistoricActivityInstance hisActivityMap new HashMap ();
 list.forEach(historicActivityInstance - {
 if (!hisActivityMap.containsKey(historicActivityInstance.getActivityId())) {
 hisActivityMap.put(historicActivityInstance.getActivityId(), historicActivityInstance);
 //3. 获取流程定义id和高亮的节点id
 if (processInstance ! null) {
 //3.1. 正在运行的流程实例
 processDefinitionId processInstance.getProcessDefinitionId();
 activeActivityIds runtimeService.getActiveActivityIds(processInstanceId);
 } else {
 //3.2. 已经结束的流程实例
 HistoricProcessInstance historicProcessInstance historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
 processDefinitionId historicProcessInstance.getProcessDefinitionId();
 activeActivityIds new ArrayList ();
 List EndEvent endEvents bpmnModelService.findEndFlowElement(processDefinitionId);
 List String finalActiveActivityIds activeActivityIds;
 endEvents.forEach(endEvent - {
 if (hisActivityMap.containsKey(endEvent.getId())) {
 finalActiveActivityIds.add(endEvent.getId());
 //4. 获取流程定义的所有节点信息 fhadmin.org
 List FlowNode flowNodes bpmnModelService.findFlowNodes(processDefinitionId);
 Map String, FlowNode activityMap flowNodes.stream().collect(Collectors.toMap(FlowNode::getId, flowNode - flowNode));
 List String highLightedFlows new ArrayList ();
 //5. 递归得到高亮线
 activeActivityIds.forEach(activeActivityId - this.getHighLightedFlows(activityMap, hisActivityMap, activeActivityId, highLightedFlows, activeActivityId));
 //6. 获取bpmnModel对象 fhadmin.org
 BpmnModel bpmnModel bpmnModelService.getBpmnModelByProcessDefId(processDefinitionId);
 //7. 生成图片流
 InputStream inputStream flowProcessDiagramGenerator.generateDiagram(bpmnModel, activeActivityIds, highLightedFlows);
 //8. 转化成byte便于网络传输
 byte[] datas IoUtil.readInputStream(inputStream, image inputStream name 
 return datas;
 }

递归获取高

private void getHighLightedFlows(Map String, FlowNode flowNodeMap,
 Map String, HistoricActivityInstance hisActivityMap,
 String activeActivityId,
 List String highLightedFlows,
 String oldActivityId) {
 FlowNode flowNode flowNodeMap.get(activeActivityId);
 List SequenceFlow incomingFlows flowNode.getIncomingFlows();
 for (SequenceFlow sequenceFlow : incomingFlows) {
 String sourceRefId sequenceFlow.getSourceRef();
 if (hisActivityMap.containsKey(sourceRefId) !oldActivityId.equals(sourceRefId)) {
 highLightedFlows.add(sequenceFlow.getId());
 this.getHighLightedFlows(flowNodeMap, hisActivityMap, sourceRefId, highLightedFlows, oldActivityId);
 } else {
 //java fhadmin.org
 if (hisActivityMap.containsKey(sourceRefId)){
 highLightedFlows.add(sequenceFlow.getId());
 break; 
} } }

flowable


本文转自网络,原文链接:https://developer.aliyun.com/article/785581
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:springcloud alibaba gateway 跨域问题 下一篇:没有了

推荐图文


随机推荐