这是一个普通的日常流程图
公司有一种场景有些部门架构没有主管这个级别,有些又没有事业部经理这个级别,那流程图不就会很复杂很混乱吗?
学会了工作流的跳转,就是及时适配这种逻辑场景,达到个人或者特定的部门不同的的流转场景,同时也可以多流程共用一个流程图,只是节点会更多一点,以后组织架构的变动往往只需要后台配置一下每个节点对应的人即可,并不需要代码的变动。
/**
* Title:jump
*
* @Description:usertask3 跳转到 usertask5 return:void processDefId instanceId
* CurrentNode 当前节点 nextNode 目标节点 userName 目标节点处理人
* @author Temple
* @Date
*/
public void jump(String processDefId, String instanceId, String userName, String CurrentNode, String nextNode) {
Map<String, Object> vars = new HashMap<String, Object>();
vars.put(nextNode, userName);
ProcessDefinitionEntity pde = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processDefId);
// 目标节点
ActivityImpl destinationActivity = (ActivityImpl) pde.findActivity(nextNode);
// 当前节点
ActivityImpl currentActivity = (ActivityImpl) pde.findActivity(CurrentNode);
managementService.executeCommand(new JDJumpTaskCmd(instanceId, destinationActivity, vars, currentActivity));
}
当前节点跳转至下一个目标节点
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
Map<String, Object> variables = StartProcess.startProcess(ActProcessConstant.Dimission, entity.getId());
String businesskey = variables.get("objId").toString();
ProcessInstance instance = runtimeService.startProcessInstanceByKey(ActProcessConstant.Dimission, businesskey, variables);
//
jump(task.getProcessDefinitionId(), instance.getId(), map.get(map.get("rolecode")).toString(), processInstance.getActivityId(), map.get("rolecode").toString());// 跳转到目标节点