直接上代码
@RequestMapping(“/getNextUser”)
@ApiOperation(value = “根据当前节点信息获取下一步的审批人信息”, httpMethod = “GET”, notes = “根据当前节点信息获取下一步的审批人信息”)
@ResponseBody
public ResponseVo<Map<String, String>> getNextUser(String procInstanceId) {
Map<String, String> nextUser = jbpmProcessinstanceService.getNextUser(procInstanceId);
return new ResponseVo<>(nextUser);
}
/**
* @Description: 获取下一步的审批人
* @author rq
*/
public Map<String,String> getNextUser(String procInstanceId){
if(null == procInstanceId){
throw new BaseException(CoreErrorCode.DATA_NOT_EXIST_ERROR.getCode());
}
Task task = ProcessEngines.getDefaultProcessEngine().getTaskService()
.createTaskQuery().processInstanceId(procInstanceId).singleResult();
ExecutionEntity R = (ExecutionEntity) runtimeService
.createExecutionQuery().executionId(task.getExecutionId()).singleResult();
// 当前审批节点
String crruentActivityId = R.getActivityId();
BpmnModel bpmnModel = ProcessEngines.getDefaultProcessEngine()
.getRepositoryService().getBpmnModel(task.getProcessDefinitionId());
FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(crruentActivityId);
// 输出连线
List outFlows = flowNode.getOutgoingFlows();
//循环下一个审批节点
Map<String, String> parms = new HashMap<>();
for (SequenceFlow sequenceFlow : outFlows) {
FlowElement targetFlow = sequenceFlow.getTargetFlowElement();
if (targetFlow instanceof EndEvent)// 如果下个审批节点为结束节点,那么跳过该节点
{
continue;
}
String name = targetFlow.getName();
parms.put("name", name);
parms.put("procInstanceId", procInstanceId);
//该方法为自定义的方法,主要是通过name和processId去对应的表中查询用户的信息
/*Map<String, String> queryUserByProId = .queryUserByProId(parms);
logger.info("获取到的数据"+queryUserByProId);*/
}
return parms;
}