如何实现flowable工作流办理过的节点描高亮颜色
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"如何实现flowable工作流办理过的节点描高亮颜色",在日常操作中,相信很多人在如何实现flowable工作流办理过的节点描高亮颜色问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2026年11月03日如何实现flowable工作流办理过的节点描高亮颜色
这篇文章主要介绍"如何实现flowable工作流办理过的节点描高亮颜色",在日常操作中,相信很多人在如何实现flowable工作流办理过的节点描高亮颜色问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何实现flowable工作流办理过的节点描高亮颜色"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在正常的flowable就是显示当前节点,路径需要我们自己获取,特别是来回的驳回会导致节点混乱,这里主要就是如何正确的显示流程图
效果:
已经结束的流程

正在执行的流程
代码:1、生成图片
// 源码 www.fhadmin.orgpublic byte[] createImage2(String processInstanceId) {//1.获取当前的流程实例ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); String processDefinitionId = null;List activeActivityIds = null;//2.获取所有的历史轨迹对象List list = historyService.createHistoricActivityInstanceQuery() .processInstanceId(processInstanceId).list(); Map hisActivityMap = new HashMap<>();list.forEach(historicActivityInstance -> {if (!hisActivityMap.containsKey(historicActivityInstance.getActivityId())) { hisActivityMap.put(historicActivityInstance.getActivityId(), historicActivityInstance); } });//3. 获取流程定义id和高亮的节点idif (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 endEvents = bpmnModelService.findEndFlowElement(processDefinitionId);List finalActiveActivityIds = activeActivityIds; endEvents.forEach(endEvent -> {if (hisActivityMap.containsKey(endEvent.getId())) { finalActiveActivityIds.add(endEvent.getId()); } }); }//4. 获取流程定义的所有节点信息List flowNodes = bpmnModelService.findFlowNodes(processDefinitionId); Map activityMap = flowNodes.stream().collect(Collectors.toMap(FlowNode::getId, flowNode -> flowNode));List highLightedFlows = new ArrayList<>();//5. 递归得到高亮线activeActivityIds.forEach(activeActivityId -> this.getHighLightedFlows(activityMap, hisActivityMap, activeActivityId, highLightedFlows, activeActivityId));//6. 获取bpmnModel对象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; } 递归获取高
//java项目 www.fhadmin.orgprivate void getHighLightedFlows(MapflowNodeMap,Map hisActivityMap,String activeActivityId, List highLightedFlows,String oldActivityId) { FlowNode flowNode = flowNodeMap.get(activeActivityId); List 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 { if (hisActivityMap.containsKey(sourceRefId)){ highLightedFlows.add(sequenceFlow.getId()); } break; } } }
到此,关于"如何实现flowable工作流办理过的节点描高亮颜色"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
节点
流程
高亮
工作流
颜色
工作
学习
实例
图片
对象
就是
更多
正在
递归
帮助
生成
实用
混乱
接下来
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
互联网科技工作委员会主任
湖南永感互联网科技有限公司
互联网科技有限公司经营范围
关于新基建和互联网科技
互联网科技金融
金融科技与互联网金融
互联网科技作文
时间互联网络科技
猫创互联网科技
狮子座互联网科技培训
华脉科技工业互联网产品
济南华为互联网科技产业总部基地
福州新华互联网科技学校 知乎
宝灵互联网科技有限公司
徐州市互联网科技有限公司
互联网科技圈年度人物
长沙渺峰互联网科技有限公司
青岛互联网科技园
科技发展第三阶段互联网时代
湖北九亚互联网络科技有限公司
科技股互联网
互联网品科技
科技互联网技术
嘟嘟瓜互联网科技
兼蜜互联网科技
互联网与医疗科技
艺电能源互联网科技有限公司招聘
互联网科技手抄报图片
互联网金融金融科技