From eb9ceaddb72753b5030809753ef648f71013ce48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=87=95=E9=B9=8F?= Date: Tue, 17 Nov 2020 17:47:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A9=B3=E5=9B=9E=EF=BC=8C=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/ACBackController.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/main/java/com/example/demo/controller/ACBackController.java b/src/main/java/com/example/demo/controller/ACBackController.java index 849601c..1f6f294 100644 --- a/src/main/java/com/example/demo/controller/ACBackController.java +++ b/src/main/java/com/example/demo/controller/ACBackController.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation; import org.activiti.api.process.runtime.ProcessRuntime; import org.activiti.api.task.runtime.TaskRuntime; import org.activiti.bpmn.model.BpmnModel; +import org.activiti.bpmn.model.EndEvent; import org.activiti.bpmn.model.FlowNode; import org.activiti.bpmn.model.SequenceFlow; import org.activiti.engine.*; @@ -169,4 +170,41 @@ public class ACBackController { e.printStackTrace(); } } + + @ApiOperation(value = "驳回任务") + @GetMapping("stop") + public void stop(String taskId) { + try { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String processDefinitionId = task.getProcessDefinitionId(); + BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); + + // 得到结束节点的信息 + FlowNode stopFlowNode = bpmnModel.getMainProcess().findFlowElementsOfType(EndEvent.class).get(0); + // 取得当前节点的信息 +// Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult(); +// String curActivityId = execution.getActivityId(); + FlowNode curFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(task.getTaskDefinitionKey()); + //记录当前节点的原活动方向 + List outgoingFlows = new ArrayList<>(); + outgoingFlows.addAll(curFlowNode.getOutgoingFlows()); + //清理活动方向 + curFlowNode.getOutgoingFlows().clear(); + //建立新方向 + List newSequenceFlowList = new ArrayList<>(); + SequenceFlow newSequenceFlow = new SequenceFlow(); + newSequenceFlow.setId("newSequenceFlowId"); + newSequenceFlow.setSourceFlowElement(curFlowNode); + newSequenceFlow.setTargetFlowElement(stopFlowNode); + newSequenceFlowList.add(newSequenceFlow); + curFlowNode.setOutgoingFlows(newSequenceFlowList); + // 完成任务 + taskService.complete(taskId); + //恢复原方向 + curFlowNode.setOutgoingFlows(outgoingFlows); + System.out.println("驳回停止成功"); + } catch (Exception e) { + e.printStackTrace(); + } + } }