第13篇: Flowable-BPMN操作流程之流程进展查看之流程图

接上一篇:
第12篇:Flowable-BPMN操作流程之用户任务UserTask
https://blog.csdn.net/weixin_40816738/article/details/102902596

文章目录

  • 一、背景
  • 二、原理
  • 三、实现方案
    • 3.1. 流程是否完成功能
    • 3.2. 完成流程图
    • 3.3. 控制器入口
  • 四、验证测试
    • 4.1. 创建流程
    • 4.2. 启动流程
    • 4.3. 调用查看流程接口

一、背景

流程启动后,为了方便我们查看流程的进展,Flowable提供了流程图可以直观的查看流程的进展,本节我们主要研究流程图呈现的相关内容,可以直接显示流程的进展。

二、原理

  • 流程的一些进展是活动Activity和连线组成的,我们如果能够找到流程经过了哪些节点,给节点画上边框的话就可以直观的看到流程的进展信息。

三、实现方案

  • Flowable的HistoryService提供了历史的查询服务,可以查询经过了哪些节点,进程的流程生成器ProcessDiagramGenerator,可以动态生成各种流程图,最后我们使用HttpServletResponse返回一个图像以供显示。

3.1. 流程是否完成功能

  • 流程完后使用历史服务查询,流程未结束使用运行时服务查询,所以我们先提供一个流程是否完成的API,如下:
 @Overridepublic boolean isFinished(String processInstanceId) {return historyService.createHistoricProcessInstanceQuery().finished().processInstanceId(processInstanceId).count() > 0;}

3.2. 完成流程图

  • 流程通过使用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);}}

3.3. 控制器入口

@RequestMapping(value = "processDiagram")public void genProcessDiagram(HttpServletResponse httpServletResponse, String processId) throws Exception {flowService.genProcessDiagram(httpServletResponse,processId);}

四、验证测试

4.1. 创建流程

http://localhost:8989/flow/create

在这里插入图片描述

4.2. 启动流程

流程启动链接:http://localhost:8989/flow/start?processKey=test_bpmn,
如下图所示:
在这里插入图片描述

4.3. 调用查看流程接口

http://localhost:8989/flow/processDiagram?processId=8d3fec54-ffb9-11e9-b9a1-f8a2d6bfea5a
,其中ProcessId为上图中显示的内容,最终结果如下图所示:
在这里插入图片描述

项目源码地址:
https://gitlab.com/gb-heima/flowablestudy/tree/master/flowablelech13
码云地址:https://gitee.com/gb_90/flowable-study/tree/master/flowablelech13

下一篇:
第14篇:Flowable-BPMN操作流程之任务完成
https://blog.csdn.net/weixin_40816738/article/details/102902647

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云MaxCompute,用计算力让数据发声

摘要&#xff1a; 计算的价值绝不止计算本身&#xff0c;而是让本不会说话的数据发声。 从玛雅历法到圆周率&#xff0c;从万有引力定律到二进制&#xff0c;从固化的物体到虚拟的思维都由数据注入。阿里云大数据计算服务MaxCompute以技术驱动产品&#xff0c;用计算力让数据发…

命令行编译java项目_命令行编译运行java工程(转)

平时建立Java工程都是借助eclipse或intellij这些ide编辑器来构建&#xff0c;对于java工程的实际编译执行原理&#xff0c;从未了解过。作为一个曾经的C程序员&#xff0c;对于源码刨根问底的那份执着从未丢过。于是今天就写了这样的一个例子进行测试。1.首先建立个跟目录MyJav…

面试鹅厂,我三面被虐的体无完肤……

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | codegoose来源 | https://segmentfault.com/a/1190000017864721经过半年的沉淀&#xff0c;加上对MySQL&#xff0c;redis和分布式这块的补齐&#xff0c;终于重拾面试信心&#xff0c;再次出征。鹅厂面试职位&#xff1a;go…

阿里云MaxCompute印度开服,加速大数据产业升级

摘要&#xff1a; 2018年1月18日&#xff0c;阿里云大数据计算服务MaxCompute将在印度正式开服。通过MaxCompute强大的计算能力&#xff0c;阿里云将加速印度大数据产业的全面升级。 点此查看原文&#xff1a;http://click.aliyun.com/m/40728/ 2018年1月18日&#xff0c;阿里云…

第14篇:Flowable-BPMN操作流程之任务完成

接上一篇&#xff1a; 第13篇&#xff1a; Flowable-BPMN操作流程之流程进展查看之流程图 https://blog.csdn.net/weixin_40816738/article/details/102902629 文章目录一、背景二、原理三、API3.1. 直接完成任务3.2. 完成任务并且设置任务参数四、实现4.1. 接口4.2. 接口实现4…

java垃圾回收 分代_Java分代垃圾回收策略原理详解

一、为什么要分代分代的垃圾回收策略&#xff0c;是基于这样一个事实&#xff1a;不同的对象的生命周期是不一样的。因此&#xff0c;不同生命周期的对象可以采取不同的收集方式&#xff0c;以便提高回收效率。在Java程序运行的过程中&#xff0c;会产生大量的对象&#xff0c;…

MaxCompute Studio使用心得系列6——一个工具完成整个Python UDF开发

摘要&#xff1a; 2017/12/20 北京云栖大会上阿里云MaxCompute发布了最新的功能Python UDF&#xff0c;万众期待的功能终于支持啦&#xff0c;我怎么能不一试为快&#xff0c;今天就分享如何通过Studio进行Python udf开发。 点此查看原文&#xff1a;http://click.aliyun.com/m…

如何填报大数据相关专业? | Alfred数据室

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | AlfredWu来源 | Alfred数据室高考出分了&#xff0c;又是一年一度各位考生和家长手忙脚乱开始填报志愿的时候了。很多考生和家长纷纷咨询Alfred&#xff1a;大数据现在不是很火吗&#xff1f;大数据专业怎么样呀&#xff1f…

第15篇: Flowable-BPMN操作流程之排他网关

接上一篇&#xff1a; 第14篇&#xff1a;Flowable-BPMN操作流程之任务完成 https://blog.csdn.net/weixin_40816738/article/details/102902647 文章目录一、背景二、定义三、流程准备四、流程文件五、控制器六、流程通过验证6.1. 创建新流程6.2. 启动流程6.3. 控制台查看任务…

阿里云视频AI全能力解读

摘要&#xff1a; 结合人工智能视频理解流程和用户的需求场景&#xff0c;我们将视频AI的功能分成四个大部分&#xff0c;视频智能审核、视频内容理解、视频智能编辑、视频版权保护。其中视频审核功能包括视频鉴黄、暴恐涉政识别、广告二维码识别、无意义直播识别等&#xff0c…

阿里云智能视频 AI 重装来袭

摘要&#xff1a; 近日&#xff0c;阿里云重磅推出视频点播新功能——视频AI &#xff0c;基于深度学习、计算机视觉技术和海量数据&#xff0c;为广大用户提供多场景的视频AI服务。 点此查看原文&#xff1a;http://click.aliyun.com/m/40809/ 近日&#xff0c;阿里云重磅推出…

Hadoop精华问答 | Hadoop框架中最核心的设计是什么?

Hadoop能够进行大批量数据的离线处理,但是在实时计算上的表现实在是不尽如人意;而Storm就可以担当这部分的角色&#xff0c;今天&#xff0c;就让我们看看关于Storm的精华问答吧。1Q&#xff1a;hadoop发展史A&#xff1a;2Q&#xff1a;Hadoop 有哪些优点&#xff1f;A&#x…

SpringBoot2.x整合Swagger2 实现API文档实时生成

我们提供Restful接口的时候&#xff0c;API文档是尤为的重要&#xff0c;它承载着对接口的定义&#xff0c;描述等&#xff0c;本文主要介绍了SpringBoot集成Swagger2生成接口文档的方法示例&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 我们提供Restful接口的时候&a…

阿里云 ESS 弹性伸缩服务新功能来袭,更全面、更自动化的使用体验

摘要&#xff1a; 2017年9月阿里云弹性伸缩服务伸缩配置新增了实例自定义数据、秘钥对、实例RAM角色、标签新特性&#xff1b;近日&#xff0c;阿里云又发布了VSWitchIds.N多可用区新特性。 点此查看原文&#xff1a;http://click.aliyun.com/m/40810/ 弹性伸缩是一种根据业务需…

java 提取轮廓_TensorFlow 卷积操作模拟sobel算子提取图像轮廓

注意&#xff1a;sobel算子不保证结果在0-255&#xff0c;需要做一次归一化处理&#xff0c;再乘以255输出的数据shape与图像的shape不一样&#xff0c;需要一次转化效果代码import matplotlib.pyplot as plt # plt 用于显示图片import matplotlib.image as mpimg # mpimg 用于…

阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能

摘要&#xff1a; 目前阿里云大数据产品已经免费向全部用户开放了多种公用数据集。开放的数据类别包括&#xff1a;股票价格数据&#xff0c;房产信息&#xff0c;影视及其票房数据。 点此查看原文&#xff1a;http://click.aliyun.com/m/40813/ 目前阿里云MaxCompute大数据产品…

豪投10亿!华为放话:3年培养100万AI人才!网友神回应了

近期&#xff0c;AI测试权威软件AI Benchmark的测试数据显示&#xff0c;中国华为研发的7nm旗舰手机芯片麒麟810的AI分数&#xff0c;远远超过美国高通骁龙855了&#xff01;麒麟810芯片AI分数是3300多&#xff0c;名列第一。而骁龙855手机则是2700多。大家振奋的同时&#xff…

阿里云大数据利器Maxcompute学习之-假如你使用过hive

摘要&#xff1a; 如果您是一个大数据开发工程师并且使用过hadoop的hive框架&#xff0c;那么恭喜您&#xff0c;阿里云的大数据计算服务-Maxcompute&#xff0c;您已经会了90%。这篇文章就来简单对比下Maxcompute和hive的异同&#xff0c;来方便刚开始使用Maxcompute的用户&am…

阿里云大数据利器Maxcompute-使用mapjoin优化查询

摘要&#xff1a; small is beautiful&#xff0c;small is powerful 点此查看原文&#xff1a;http://click.aliyun.com/m/40815/ 大数据计算服务&#xff08;MaxCompute&#xff0c;原名 ODPS&#xff09;是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案。 https://help…

GitHub下载文件时缓慢的问题

用记事本打开hosts文件&#xff0c;路径为 C:\Windows\System32\drivers\etc将下面3行添加到hosts文件中 140.82.114.3 github.com151.101.185.194 github.global.ssl.fastly.net192.30.253.121 codeload.github.com以管理员身份运行CMD&#xff0c;执行命令ipconfig /flushdn…