首页 >> 知识 >> flowable中动态显示节点的审批人信息

flowable中动态显示节点的审批人信息

1、上面的流程图当任务还没有到的节点,用户想看看节点的人的信息,如果蜜桃成人网站入口常规的是不能实现的。

2、思路就是蜜桃成人网站入口取出节点的表达式,然后用蜜桃成人网站入口流程实例的变量来给他翻译出来即可,如何做呢?

2.1、通过流程实例id查出历史表中的所有的变量列表

List hvis = historyService.createHistoricVariableInstanceQuery() .processInstanceId(processInstanceId).list();

2.2、通过流程实例id获取所有的节点信息

List processes = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId()).getProcesses();if (CollectionUtils.isNotEmpty(processes)) { for (Process process : processes) { Collection flowElements = process.getFlowElements(); if (CollectionUtils.isNotEmpty(flowElements)) { for (FlowElement flowElement : flowElements) { if (flowElement instanceof UserTask) {.......... } } } }}

2.3、取出节点的表达式

if (StringUtils.isNotBlank(userTask.getAssignee())) { //处理多实例的显示 MultiInstanceLoopCharacteristics loopCharacteristics = userTask.getLoopCharacteristics(); if(loopCharacteristics == null) { String expressionValue = null; if (userTask.getName().equals(FlowConstant.FLOW_SUBMITTER)) { expressionValue = processInstance.getStartUserId(); }else { expressionValue = juelExpression.getValue(hvis, userTask.getAssignee()); } if(StringUtils.isNotBlank(expressionValue)) { List userVos = userVoService.getUserByCodeOrGroupId(expressionValue); } }else { String inputDataItem = loopCharacteristics.getInputDataItem(); List values = (List)juelExpression.getValue(hvis, inputDataItem, List.class); if (CollectionUtils.isNotEmpty(values)) { List users = new ArrayList(); values.forEach(code->{ List userVos = userVoService.getUserByCodeOrGroupId(code); users.addAll(userVos); }); } }}

2.4、工具类

public Object getValue(List hvis, String exp, Class clazz) { ExpressionFactory factory = new ExpressionFactoryImpl(); SimpleContext context = new SimpleContext(); for (HistoricVariableInstance entry : hvis) { context.setVariable(entry.getVariableName(), factory.createvalsueExpression(entry.getValue(), Object.class)); } ValueExpression e = factory.createvalsueExpression(context, exp, clazz); return e.getValue(context); } public String getValue(List hvis, String exp) { return (String) getValue(hvis, exp, String.class); }

 

网站地图