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

获取所有的审批节点

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

子方法

@Override
    public 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、当我们鼠标移上面的时候通过坐标可以定位出当前的任务节点,然后显示一个弹出层就可以了。

效果如下:
在这里插入图片描述

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学生05101

flowable

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值