Activity实现 高亮显示活动节点,和所有已完成过的节点
2019独角兽企业重金招聘Python工程师标准>>>
上面这种是显示当前活动节点,下面我将贴出 显示所有已完成过的节点,第二种显示有问题,如图像不清晰,中文乱码,而且流程图感觉失真!
由于第二种方法代码量比较多,所以给出代码
/*----------------------------------------- 显示实现 ----------------------------------------*/
/**
* 测试 高亮显示所有走过的 节点和线
* @throws Exception
*/
public void showAllFinishView(String processInstanceId,HttpServletResponse response) throws Exception{
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
if(processInstance == null){
throw new RuntimeException("获取流程图异常");
}else{
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
List<HistoricActivityInstance> activityInstances = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
List<String> activityIds = new ArrayList<String>();
List<String> flowIds = new ArrayList<String>();
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity)((RepositoryServiceImpl)repositoryService).getDeployedProcessDefinition(processInstance.getProcessDefinitionId());
//获取流程走过的线
flowIds = getHighLightedFlows(processDefinition,activityInstances);
for(HistoricActivityInstance hai:activityInstances){
//获取流程走过的节点
activityIds.add(hai.getActivityId());
}
InputStream inputStream = new DefaultProcessDiagramGenerator().generateDiagram(bpmnModel, "png", activityIds, flowIds,"宋体","宋体",null,1.0);
OutputStream out = response.getOutputStream();
for(int b = -1;(b=inputStream.read())!=-1;){
out.write(b);
}
out.close();
inputStream.close();
}
}
//获取流程走过的线
public static List<String> getHighLightedFlows(ProcessDefinitionEntity processDefinitionEntity,List<HistoricActivityInstance> haiList) throws Exception{
//用来保存高亮的线 flowId
List<String> highFlows = new ArrayList<String>();
for (int i = 0; i < haiList.size() - 1; i++) {
//对历史流程节点进行遍历
//得到节点定义的详细信息
ActivityImpl activityImpl = processDefinitionEntity.findActivity(haiList.get(i).getActivityId());
//用以保存后需要开始时间相同的节点
List<ActivityImpl> sameStartTimeNodes = new ArrayList<ActivityImpl>();
ActivityImpl sameActivityImpl1 = processDefinitionEntity.findActivity(haiList.get(i + 1).getActivityId());
//讲后面第一个节点放在时间相同节点的集合里
sameStartTimeNodes.add(sameActivityImpl1);
for (int j = i + 1; j < haiList.size() - 1; j++) {
HistoricActivityInstance activityImpl1 = haiList.get(j);//后续第一个节点
HistoricActivityInstance activityImpl2 = haiList.get(j + 1);//后续第而个节点
if(activityImpl1.getStartTime().equals(activityImpl2.getStartTime())){
//如果第一个节点和第二个节点开始时间相同保存
ActivityImpl sameActivityImpl2 = processDefinitionEntity.findActivity(activityImpl2.getActivityId());
sameStartTimeNodes.add(sameActivityImpl2);
}else{
//不同就调查循环
break;
}
}
//取出节点的所有出去的线
List<PvmTransition> pvmTransitions = activityImpl.getOutgoingTransitions();
for(PvmTransition pvmTransition : pvmTransitions){
//对所有的线进行遍历
ActivityImpl pvmActivityImpl = (ActivityImpl) pvmTransition.getDestination();
//如果取出的线的目标节点存在时间相同的节点里,保存该线的id,进行高亮显示
if(sameStartTimeNodes.contains(pvmActivityImpl)){
highFlows.add(pvmTransition.getId());
}
}
}
return highFlows;
}
/*----------------------------------------- 显示实现 ----------------------------------------*/
第一种效果图
第二种效果图
转载于:https://my.oschina.net/u/3142419/blog/861561
Activity实现 高亮显示活动节点,和所有已完成过的节点相关推荐
- MBSE建模学习之四:活动(Activity)及活动图
目录 活动(Activity) 活动图示例 动作(Action) (1)不透明动作(OpaqueAction) (2)调用行为动作(CallBehaviorAction).调用操作动作(CallOpe ...
- EOS节点之争已开始 准备好欣赏了么?
EOS节点之争已开始 准备好欣赏了么? 2018-03-14 00:23 来源:雷锋网 原标题:EOS节点之争已开始 准备好欣赏了么? 雷锋网AI金融评论按:本文作者大毛向前冲.文章略有改动. EOS ...
- [Andriod官方训练教程]管理Activity的生命活动之开始一个Activity
原文地址:https://developer.android.com/training/basics/activity-lifecycle/starting.html ---------------- ...
- activitiy学习 (动态加签,动态流程图,指定节点跳转,指定多人节点跳转)
activitiy学习 动态加签,动态流程图,指定节点跳转,指定多人节点跳转 POM.XML 部署流程 启动流程 查询待执行任务 查询任务历史 完成任务 多人会签节点的退回指定节点 退回到指定多人会签 ...
- mysql管理节点_mysql8 参考手册-NDB群集管理节点配置参数
本节中的清单提供了有关在配置NDB群集管理节点的文件[ndb_mgmd]或 [mgm]部分中 使用的参数的信息config.ini.有关每个参数的详细说明和其他附加信息,请参见 第22.3.3.5节& ...
- 洛谷 P3384 【模板】树链剖分-树链剖分(点权)(路径节点更新、路径求和、子树节点更新、子树求和)模板-备注结合一下以前写的题目,懒得写很详细的注释...
P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...
- js添加多个子节点_JS创建DOM节点-使用document.createElement()创建子节点或同级节点...
在一个Web页面中,需要弹出一个提示信息显示给用户.基于这个需求,要使用document.createElement()创建一个DOM节点.创建完节点后,还要使用appendChild()或inser ...
- python 节点_python在以太坊开发中节点和网络如何选择?
以太坊节点 为什么我需要连接到一个节点? 以太坊协议定义了一种方法,用于人们通过网络与智能合约相互作用.为了获得关于合约.账户余额和新交易状态等最新的信息,协议需要与网络上的节点进行连接.这些节点不断 ...
- oracle单节点加入rac,实验:Oracle单节点RAC添加节点
环境:RHEL 6.5 + Oracle 11.2.0.4 单节点RAC 需求:单节点RAC添加新节点 1.添加节点前的准备工作 参考Oracle官方文档: Oracle® Clusterware A ...
最新文章
- RESTful_URI资源
- 福昕PDF阅读器的图章妙用
- 识别访问端的操作系统
- 总结:Linux磁盘分区管理
- rocketmq安装部署过程(4.0.0版本)
- 2019 vs 安装odt_河南2019二级造价师考试教材出版信息,免费送考试大纲
- zend studio 10.6.2破解和汉化
- 怎么看接收灵敏度desense问题?
- 如何为Java面试准备项目经验
- 电工知识:常用电子元件名称及其对应图片实用大全
- iOS13适配暗黑模式/夜间模式/深色模式/暗黑主题(DarkMode)
- AMR 文件解析及编解码流程
- python open unicodedecodeerror_python 读取文件时报错UnicodeDecodeError: 'gbk' co
- 错误1053:服务没有及时响应启动或控制请求
- php如何设置随机数字和字母,PHP获取随机数字和字母的方法大全
- 内容:提出含冰蓄冷空调的微电网多时间尺度优化调度模型,研究冰蓄冷空调 的不同运行方式对优化调度的影响
- husky + lint-staged + commitizen 配置提交代码规范
- excel 两组数据交点_如何在百万级的数据里找到别人正在赚钱的项目
- C8051F340 USB0 寄存器访问
- 移动机器人中的现代控制理论之状态方程的解
热门文章
- 用脚本管理服务器日志
- cacti实现微信告警功能
- redis 配置以及缓存(javaconfig)
- cocos2dx 云彩特效
- Android 学习笔记【基础扫盲篇】
- 今天参加广州.NET俱乐部活动,运气超好
- Updater Application Block for .net 2.0 发布了
- java 类复制构造方法_java面向对象入门(3)-java构造方法
- 恢复出厂设置后itms注册失败_手机恢复出厂设置后,与新手机的区别已被确认,望大家相互转告!...
- Android学习系列(一)初识安卓