如何实现flowable工作流办理过的节点描高亮颜色
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"如何实现flowable工作流办理过的节点描高亮颜色",在日常操作中,相信很多人在如何实现flowable工作流办理过的节点描高亮颜色问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2025年01月19日如何实现flowable工作流办理过的节点描高亮颜色
这篇文章主要介绍"如何实现flowable工作流办理过的节点描高亮颜色",在日常操作中,相信很多人在如何实现flowable工作流办理过的节点描高亮颜色问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何实现flowable工作流办理过的节点描高亮颜色"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在正常的flowable就是显示当前节点,路径需要我们自己获取,特别是来回的驳回会导致节点混乱,这里主要就是如何正确的显示流程图
效果:
已经结束的流程
正在执行的流程
代码:1、生成图片
// 源码 www.fhadmin.orgpublic byte[] createImage2(String processInstanceId) {//1.获取当前的流程实例ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); String processDefinitionId = null;ListactiveActivityIds = 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安全错误
数据库的锁怎样保障安全
跨界互联网银行金融科技
内部数据库公司
湖北专业的软件开发企业
sqlite商品数据库
studio怎么加载数据库
网络安全是一种精神
pg数据库怎么删某一条数据
新乡市置顶网络技术网络有限公司
互联网科技公司后缀
河南第三方软件开发哪家正规
姜堰区网络技术大概费用
示范数据库在哪
网络安全的路线
宿州企业软件开发外包公司
实时监控服务器温度
ftp与服务器无连接
软件开发简历项目责任描述
山西网络安全等级标准
软件实施与软件开发的区别
乐居易互联网科技
表格导入数据库日期date
阿里云服务器 打开慢
分我乐网络技术
游戏app软件开发商
互联网巨头与科技公司
mysql数据库财务应用
网络安全系列课题二考试答案
大族激光软件开发实习待遇
技术算计网络技术专业
危害网络安全情节不严重