Flowable深入浅出-13 Flowable-BPMN操作流程之流程进展查看之流程图
13 Flowable-BPMN操作流程之流程进展查看之流程图
- 背景
- 原理
- 实现方案
- 验证
- 代码下载
背景
流程启动后,为了方便我们查看流程的进展,Flowable提供了流程图可以直观的查看流程的进展,本节我们主要研究流程图呈现的相关内容,可以直接显示流程的进展。
原理
流程的一些进展是活动Activity和连线组成的,我们如果能够找到流程经过了哪些节点,给节点画上边框的话就可以直观的看到流程的进展信息。
实现方案
Flowable的HistoryService提供了历史的查询服务,可以查询经过了哪些节点,进程的流程生成器ProcessDiagramGenerator,可以动态生成各种流程图,最后我们使用HttpServletResponse返回一个图像以供显示。
- 流程是否完成功能
流程完后使用历史服务查询,流程未结束使用运行时服务查询,所以我们先提供一个流程是否完成的API,如下:
@Overridepublic boolean isFinished(String processInstanceId) {return historyService.createHistoricProcessInstanceQuery().finished().processInstanceId(processInstanceId).count() > 0;}
- 流程通过使用ProcessDiagramGenerator完成流程图显示,具体实现如下:
@Overridepublic void genProcessDiagram(HttpServletResponse httpServletResponse, String processId) {/*** 获得当前活动的节点*/String processDefinitionId = "";if (this.isFinished(processId)) {// 如果流程已经结束,则得到结束节点HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processId).singleResult();processDefinitionId=pi.getProcessDefinitionId();} else {// 如果流程没有结束,则取当前活动节点// 根据流程实例ID获得当前处于活动状态的ActivityId合集ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();processDefinitionId=pi.getProcessDefinitionId();}List<String> highLightedActivitis = new ArrayList<String>();/*** 获得活动的节点*/List<HistoricActivityInstance> highLightedActivitList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processId).orderByHistoricActivityInstanceStartTime().asc().list();for(HistoricActivityInstance tempActivity : highLightedActivitList){String activityId = tempActivity.getActivityId();highLightedActivitis.add(activityId);}List<String> flows = new ArrayList<>();//获取流程图BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);ProcessEngineConfiguration engconf = processEngine.getProcessEngineConfiguration();ProcessDiagramGenerator diagramGenerator = engconf.getProcessDiagramGenerator();InputStream in = diagramGenerator.generateDiagram(bpmnModel, "bmp", highLightedActivitis, flows, engconf.getActivityFontName(),engconf.getLabelFontName(), engconf.getAnnotationFontName(), engconf.getClassLoader(), 1.0, true);OutputStream out = null;byte[] buf = new byte[1024];int legth = 0;try {out = httpServletResponse.getOutputStream();while ((legth = in.read(buf)) != -1) {out.write(buf, 0, legth);}} catch (IOException e) {log.error("操作异常",e);} finally {IOUtils.closeQuietly(out);IOUtils.closeQuietly(in);}}
- 控制器入口:
@RequestMapping(value = "processDiagram")public void genProcessDiagram(HttpServletResponse httpServletResponse, String processId) throws Exception {flowService.genProcessDiagram(httpServletResponse,processId);}
验证
- 启动流程,输入上期的流程启动链接:http://localhost:8989/flow/start?processKey=test_bpmn,如下图所示:
- 调用查看流程接口:http://localhost:8989/flow/processDiagram?processId=6683050b-1a57-11e9-90d8-00155d030a00,其中ProcessId为上图中显示的内容,最终结果如下图所示:
注意:如果是PNG格式那么输出的是背景色是黑色,如果连接线上有字不容易看清楚,具体效果如下图:
代码下载
下载地址如下:https://download.csdn.net/download/houyj1986/10924371
Flowable深入浅出-13 Flowable-BPMN操作流程之流程进展查看之流程图相关推荐
- 第13篇: Flowable-BPMN操作流程之流程进展查看之流程图
接上一篇: 第12篇:Flowable-BPMN操作流程之用户任务UserTask https://blog.csdn.net/weixin_40816738/article/details/1029 ...
- Flowable深入浅出-1 Flowable简介
1 Flowable简介 什么是BPMN 什么是Flowable Flowable官网.开源社区 Flowable流程示例 版权 什么是BPMN 先来看下百度百科的定义: 由BPMI(The Busi ...
- flowable实战(十五)关于流程设计器 bpmn.js与vue的整合
一.前言: 由于flowable本身带的Moder风格实在与前端页面风格不一样,同时由于Modeler采用Angular.js写的,改造起来相对有一定的难度,所以打算换成bpmn.js当成流程设计器. ...
- Flowable 6.6.0 BPMN用户指南 -10 流程实例迁移 - 10.1 简单示例
Flowable 6.6.0 用户指南相关文档下载 BPMN用户指南 第一部分 - 中文PDF精编版 BPMN用户指南 第二部分 - 中文PDF精编版 BPMN用户指南 第三部分 - 中文PDF精编版 ...
- Flowable 6.6.0 BPMN用户指南 - (5)Spring Boot - 5.8 Flowable应用属性
Flowable 6.6.0 用户指南相关文档下载 BPMN用户指南 第一部分 - 中文PDF精编版 BPMN用户指南 第二部分 - 中文PDF精编版 BPMN用户指南 第三部分 - 中文PDF精编版 ...
- 《Activiti/Flowable 深入BPM工作流》-什么是流程变量?
<Activiti/Flowable 深入BPM工作流>-什么是流程变量? 一. 问题: 1. 什么是流程变量? 2. 什么是glob ...
- Flowable高级篇 - Flowable表结构
Flowable中文手册 一.flowable表结构 数据库表命名规则: ACT_RE_*:其中"RE"表示repository(存储)的意思,是RepositoryService ...
- 《Flowable基础二 Flowable是什么》
2.1. Flowable是什么? Flowable是一个使用Java编写的轻量级业务流程引擎.Flowable流程引擎让你可以部署BPMN 2.0流程定义(用于定义流程的行业XML标准).创建这些流 ...
- Flowable工作流之Flowable UI画工作流程图
目录 1. `Flowable` 简介 2. 绘制工作流程图 2.1. `Flowable UI` 的安装部署 2.2. 启动服务 2.3. 用户管理 2.4. 工作流程效果图 2.5. 绘制工作流程 ...
最新文章
- GT Transceiver的复位与初始化(2)CPLL复位以及QPLL复位
- linux shell mv 文件 文件夹移动重命名 命令
- DataFrame 删除与增减行列
- python3网络爬虫(4):python3安装Scrapy
- 全局eslint不生效的处理
- Spring Boot 2应用程序和OAuth 2 –传统方法
- Linux文件系统性能测试工具fdtree和iozone
- Python创建cvs文件,包含标签和图片数据
- 视频版ImageNet?快手搞了一场用户兴趣建模大赛 | 附前三名干货
- 工作难找,朋友却一口气拿了5份大厂offer,他是怎么做到的?
- windows下eclipse模拟运行apk
- php更改二维数组的键,学习猿地-php如何修改二维数组的键名
- mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理
- 精品手机看片神器电影网址导航网站
- 如何扩展计算机c盘的控件,电脑C盘空间不足,怎么把c盘空间可以扩大
- iChart--组件定制
- android wear5.0,Android Wear安卓5.0正式到来
- 小程序“头脑王者” 因违规被微信下架整改 小程序不可逾越的红线
- 【Matlab元胞自动机】元胞自动机双边教室疏散【含源码 1208期】
- 计算机ip怎么换路由器,路由器怎么换ip地址