上一环节A是多人审批通过到了多人审批的环节B,多人用的多实例并行,现在在环节B多人驳回到上一步,环节A多人代办接受到,请问这个驳回如何实现。activiti小白,求大佬指教。
1条回答 默认 最新
- li.siyuan 2023-07-06 18:19关注
节点跳转代码示例:
/** * 跳转至指定活动节点 * @param processId 流程Id * @param targetTaskDefinitionKey 目标节点任务的id */ public void jump(String processId,String targetTaskDefinitionKey){ //获取当前节点任务 TaskEntity currentTask = (TaskEntity) taskService.createTaskQuery() .processInstanceId(processId).singleResult(); jump(processId,currentTask,targetTaskDefinitionKey); } /** * @param currentTaskEntity 当前任务节点 * @param targetTaskDefinitionKey 目标任务节点(在模型定义里面的节点任务Id) */ private void jump(String processInstanceId,final TaskEntity currentTaskEntity, String targetTaskDefinitionKey){ ProcessInstance processInstance=runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); TaskEntity taskEntity=(TaskEntity) taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); //获取流程定义 ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processInstance.getProcessDefinitionId()); //当前正在执行任务的节点 ActivityImpl currentActivity = (ActivityImpl)processDefinitionEntity.findActivity(processInstance.getActivityId()); //跳转的目标节点 ActivityImpl targetActivity = (ActivityImpl) processDefinitionEntity.findActivity(targetTaskDefinitionKey); ((RuntimeServiceImpl)runtimeService).getCommandExecutor() .execute(new Command<java.lang.Void>() { public Void execute(CommandContext commandContext) { ExecutionEntity executionEntity = (ExecutionEntity) runtimeService .createExecutionQuery().executionId(currentTaskEntity.getExecutionId()).singleResult(); executionEntity.setActivity(currentActivity); executionEntity.setEventSource(currentActivity); //根据executionId 获取Task Iterator<TaskEntity> localIterator = Context.getCommandContext().getTaskEntityManager().findTasksByExecutionId(taskEntity.getExecutionId()).iterator(); while (localIterator.hasNext()) { TaskEntity taskEntity = (TaskEntity) localIterator.next(); //删除任务 Context.getCommandContext().getTaskEntityManager().deleteTask(taskEntity, "跳转节点", true); } executionEntity.executeActivity(targetActivity); //设置任务 执行对象 return null; } }); }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器