0
点赞
收藏
分享

微信扫一扫

flowable展示所有节点的审批人和其他信息

GhostInMatrix 2022-04-14 阅读 98
java

最近在我们业务中有这么个需求当用户提交时就要获取流程节点和所有的审批人信息展示出来,类似于钉钉发起时就能看到审批人和头像信息,这种需求普通的api是很难实现的。
大概思路就是获取流程定义id遍历所有节点,在遍历过程中注意要需要考虑很多种情况比如网关,有的甚至是会签节点,我目前只做出了一个没有会签节点、没有上一个节点动态指定下一个节点的审批人的情况
首先获取审批历史包括还未被分配任务的后续节点
List histList = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(procInstId)
.activityType(“userTask”)
.orderByHistoricActivityInstanceStartTime()
.asc()
.list();
//遍历
首先拿到所有未分配的任务节点,遍历设置信息,然后遍历流程定义的所有节点
遍历完需要通过的所有节点
// 获取代办任务信息
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
//获取流程模型
BpmnModel model = repositoryService.getBpmnModel(task.getProcessDefinitionId());
//获取当前
FlowElement flowElement = model.getFlowElement(task.getTaskDefinitionKey());
//获取流程变量
Map<String, Object> params = runtimeService.getVariables(task.getExecutionId());
//保存访问过的节点,避免死循环
Set visitedElements = new HashSet<>();
//递归获取所有预测节点
List approveNodes = visiteElement(flowElement, params, visitedElements);
//具体方法需要自己实现自己暂时就不贴出来了

需要递归处理网关节点路径、还要对流程变量表达式的解析
最后和已经处理的节点比较

组装返回给前端 最终效果

在这里插入图片描述

举报

相关推荐

0 条评论