千家信息网

如何实现flowable工作流办理过的节点描高亮颜色

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要介绍"如何实现flowable工作流办理过的节点描高亮颜色",在日常操作中,相信很多人在如何实现flowable工作流办理过的节点描高亮颜色问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2025年11月10日如何实现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(Map flowNodeMap,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安全错误 数据库的锁怎样保障安全 全新的软件开发工具 网络安全等级调整 幼儿园网络安全手抄报内容 互联网平台金融科技监管 魔兽世界远征服务器名字 上海上汽软件开发待遇 腾讯云服务器存储桶必须买域名吗 包河区企业网络技术咨询收费 数据库逻辑设计和物理设计问题 用盗版软件开发游戏会 互联网腾讯科技有限公司 网络安全经费 占信息化比列 网络故障引起的网络安全 用友u8安装不了数据库 路由器上网无法连接服务器 数据库文件倒不进去怎么办 PHP服务器怎么限制地域访问 监狱系统网络安全管理岗位 荷兰5g网络安全建议 数据库的实施与维护 小火箭服务器节点创建 ibm公司数据库产品名称 创建数据库中表的关键字是 i5用服务器 吉安国家网络安全宣传周 网站中数据库地址怎么访问 有计算机网络技术专业的本科 建行软件开发中心 改革 软件开发回本快吗 运行数据库必须用管理员权限吗
0