Flowable Flowable显示流程图坐标和审批人

  • 获取所有的审批节点
  • 设置节点的坐标
  • 设置节点的审批人
    • 1、如果执行人的字段不为空
      • 1.1、如果这个是工号或者id的话我们可以直接获取人员的信息
      • 1.2、如果这个是一个表达式我们需要解析
    • 2、如果这个字段为空,那么就是候选人或者候选组
      • 2.1、得到候选人
      • 2.2、得到候选组
  • 3、当我们鼠标移上面的时候通过坐标可以定位出当前的任务节点,然后显示一个弹出层就可以了。

获取所有的审批节点

BpmnModel bpmnModel = bpmnModelService.getBpmnModelByProcessDefId(processInstance.getProcessDefinitionId());
// 获得所有流程定的节点信息
List<UserTask> userTasks = bpmnModelService.findUserTasksByBpmnModel(bpmnModel);

子方法

@Overridepublic List<UserTask> findUserTasksByBpmnModel(BpmnModel bpmnModel) {List<UserTask> datas = new ArrayList<>();List<Process> processes = bpmnModel.getProcesses();processes.forEach(process -> {List<UserTask> userTasks = process.findFlowElementsOfType(UserTask.class);datas.addAll(userTasks);});return datas;}

设置节点的坐标

GraphicInfo graphicInfo = bpmnModelService.getGraphicInfo(bpmnModel, userTask.getId());
ActivityVo vo = new ActivityVo();
vo.setId(userTask.getId());
vo.setX(graphicInfo.getX());
vo.setY(graphicInfo.getY());
vo.setWidth(graphicInfo.getWidth());
vo.setHeight(graphicInfo.getHeight());
vo.setDocumentation(userTask.getDocumentation());
vo.setName(userTask.getName());
vo.setProceInsId(processInstance.getId());
vo.setProceDefId(processInstance.getProcessDefinitionId());
vo.setTaskDefKey(userTask.getId());

设置节点的审批人

这里加以说明,由于我扩展了很多信息,写出来估计大家很难看懂,我就说一下思路,和相关代码

1、如果执行人的字段不为空

userTask.getAssignee() 这就是执行人的id或者工号 可以得到执行人的姓名

1.1、如果这个是工号或者id的话我们可以直接获取人员的信息

1.2、如果这个是一个表达式我们需要解析

解析表达式前提是你把变量放入流程实例变量中,比方说有一个金额${money>500}
那么你在流程实例的表达式中应该有一条这样的数据 key为money value为值的数据

    public Object getValue(String processInstanceId, String exp) {Expression expression = processEngineConfiguration.getExpressionManager().createExpression(exp);ExecutionEntity executionEntity = (ExecutionEntity) runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).includeProcessVariables().singleResult();return managementService.executeCommand(commandContext -> expression.getValue(executionEntity));}

2、如果这个字段为空,那么就是候选人或者候选组

这个时候我们就得到候选人和候选组

2.1、得到候选人

List<String> candidateUsers = userTask.getCandidateUsers();

这个解析也是一样的,参考上面的解析方法

2.2、得到候选组

List<String> candidateGroups = userTask.getCandidateGroups();

通过候选人和候选组我们就可以得到审批人列表的名称,按照自己的方式获取就可以了。
这个解析也是一样的,参考上面的解析方法

3、当我们鼠标移上面的时候通过坐标可以定位出当前的任务节点,然后显示一个弹出层就可以了。

效果如下:

Flowable显示流程图坐标和审批人相关推荐

  1. 计算机图形学 8.5 三维图形的显示流程图

    8.5 三维图形的显示流程图 显示流程图 观察变换 从世界坐标系到观察坐标系的变换 模型变换 模型坐标系     Modeling Coordinate     物体的局部坐标系     在模型坐标系 ...

  2. QT5界面操作2:如何用状态栏显示鼠标坐标

    在文  QT界面操作1:如何跟踪鼠标位置?实现了鼠标位置捕获,这里用两种方式显示鼠标坐标 1)状态栏显示 2)窗口刷新显示 先看如何获取鼠标位置的代码. import sys from PyQt5.Q ...

  3. MFC实时显示鼠标坐标

    实时显示鼠标坐标 方法一:在窗口的客户区实时显示鼠标坐标 以左上角为例,直接在鼠标移动消息的响应函数中添加以下代码. void CMFC_DrawView::OnMouseMove(UINT nFla ...

  4. 我的世界服务器显示玩家坐标,我的世界手游版怎么显示玩家坐标

    我的世界是一款高度自由的3D沙盒游戏,在游戏中主要的玩法就是收集一些方块或者道具,组成建筑或者机器.武器等等,玩家需要通过在游戏中建造或摧毁方块来进行生存创造,可以根据自己的喜好来建筑不同风格的建筑物 ...

  5. matlab dotchart,MATLAB中如何用对数方式显示图形坐标?

    前言 当我使用MATLAB画了一幅曲线图之后,例如: 由于x轴10以下的单位内,y值比较小,而之后比较大,因此,我想更清晰地看y值得变化趋势,因此我想用对数标准的方式来显示y. 方法1 在画图程序的后 ...

  6. activiti前端画图转化_用于Activiti前端显示流程图的插件

    因为现在做一个基于Activit的工作流OA,在设计过程中需要显示用户设计出来的流程图. 所以需要使用一个流程图插件,可以用来加载流程,也可以直接通过拖拽的方式设计流程. 思来想去,搜索了很多插件,最 ...

  7. 050:vue+openlayers使用Popup组件显示经纬度坐标(代码示例)

    第050个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中使用popup的形式来显示出经纬度坐标,本示例是采用引用扩展的方式,相比以往的添加方式,减少了不少的代码量. 直 ...

  8. MATLAB中如何用对数方式显示图形坐标?

    文章目录 前言 方法1 方法2 gca 用法 举例 set XScale 前言 当我使用MATLAB画了一幅曲线图之后,例如: 由于x轴10以下的单位内,y值比较小,而之后比较大,因此,我想更清晰地看 ...

  9. python截取图片的ROI+OpenCV 在坐标中显示图片+鼠标点击图片显示点坐标

    又来做下笔记了.现在我的毕业设计进行到数据处理的阶段,要在乳腺图像上截取4张相同大小的1024*1024图片,并且每张图片都必须覆盖微钙化点,以下是我现在用到的一些简单程序. 1.首先是截图程序如下: ...

最新文章

  1. apache mysql 连接数_浏览器端同时请求100个url后,如何提升有效的msyql连接数
  2. cnblogs-5个必须掌握的maven命令
  3. runtime objc_msgSend
  4. cogs luogu 珠心算测试【noip2014 普及组】
  5. 考试题string——线段树。
  6. linux 编译文件mm,Linux编译C++文件,说没有找到头文件,怎么啊?新手,不太会用...
  7. python插件安装错误解决办法之SyntaxError: from __future__ imports must occur at the beginning of the file原因
  8. 设置UserAgent让电脑浏览器访问微信手机网站
  9. C#反射使用方法过程及步骤
  10. 面试题 : Intent、IntentFilter、PendingIntent的区别
  11. [react] useState和this.state的区别是什么?
  12. python-演练-输出一个等腰三角形-
  13. 软件测试技术路线怎么走
  14. 微软王码五笔98版 v5.2 下载
  15. android常用刷机指令,【高级技术】Android刷机常用adb指令集合
  16. Github13K!相似搜索百宝箱,文本匹配入门必备!
  17. 正则表达式Regex
  18. Java实现 LeetCode 493 翻转对
  19. 20161128 已知小明同学其中考试成绩,数学97.5分,语文94.5分,英语95.5分,求小明同学的三科总成绩(结果保留一位小数)。...
  20. 吉利全球鹰熊猫CROSS

热门文章

  1. 嵌入式学习(第二周)
  2. 10个中文成语,10种Python新手错误
  3. php数组元素的赋值方式,详解PHP数组赋值方法
  4. 《在小吃店遇见凯恩斯》读书心得小记 - Part 2
  5. 智联汽车:复盘国内巨头布局
  6. 三分钟教你Mac下安装VmWare虚拟机
  7. 关于如何跳过滑动验证码登录淘宝。
  8. Vue 3 中的极致防抖/节流(含常见方式防抖/节流)
  9. history.pushState() 给网站添加和修改浏览历史记录
  10. C++ 编程规范101读书笔记(2)设计风格