From b183cda678a9c27ddbd37d30fe670435260f30ad Mon Sep 17 00:00:00 2001 From: lijiarao <136157943@qq.com> Date: Sun, 15 Oct 2023 19:33:29 +0800 Subject: [PATCH] update TaskListener --- .../controller/ModelerController.java | 31 ++++++++++++++--- .../activiti/listener/CompleteListener.java | 19 +++++++++++ .../activiti/listener/CreateListener.java | 33 +++++++++++++++++++ 3 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/listener/CompleteListener.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java index b23080b9..3321b3b1 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java @@ -8,6 +8,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.jero.common.api.vo.Result; import com.jero.common.util.MessageUtils; import com.jero.modules.activiti.entity.ProcessModelNode; +import com.jero.modules.activiti.listener.CompleteListener; +import com.jero.modules.activiti.listener.CreateListener; import com.jero.modules.activiti.service.LawsProcessNodeOriginService; import com.jero.modules.activiti.service.ProcessModelNodeService; import com.jero.modules.activiti.util.CreatedTools; @@ -19,10 +21,12 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.activiti.bpmn.converter.BpmnXMLConverter; -import org.activiti.bpmn.model.BpmnModel; +import org.activiti.bpmn.model.*; +import org.activiti.bpmn.model.Process; import org.activiti.editor.constants.ModelDataJsonConstants; import org.activiti.editor.language.json.converter.BpmnJsonConverter; import org.activiti.engine.RepositoryService; +import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.repository.*; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -39,10 +43,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -91,6 +92,26 @@ public class ModelerController { model.setMetaInfo(modelNode.toString()); repositoryService.saveModel(model); String modelId = model.getId(); + Process mainProcess = bpmnModel.getMainProcess(); + //向所有userTask节点增加创建和完成时任务监听器 + Collection flowElements = mainProcess.getFlowElements(); + for (FlowElement flowElement : flowElements) { + if (flowElement instanceof UserTask) { + UserTask userTask = (UserTask) flowElement; + List taskListeners = userTask.getTaskListeners(); + ActivitiListener createListener = new ActivitiListener(); + createListener.setEvent(TaskListener.EVENTNAME_CREATE); + createListener.setImplementationType("class"); + createListener.setImplementation(CreateListener.class.toString()); + taskListeners.add(createListener); + ActivitiListener completeListener = new ActivitiListener(); + completeListener.setEvent(TaskListener.EVENTNAME_COMPLETE); + completeListener.setImplementationType("class"); + completeListener.setImplementation(CompleteListener.class.toString()); + taskListeners.add(completeListener); + userTask.setTaskListeners(taskListeners); + } + } ObjectNode objectNode = new BpmnJsonConverter().convertToJson(bpmnModel); repositoryService.addModelEditorSource(modelId, objectNode.toString().getBytes(StandardCharsets.UTF_8)); //生成节点 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/CompleteListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/CompleteListener.java new file mode 100644 index 00000000..9cf086f4 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/CompleteListener.java @@ -0,0 +1,19 @@ +package com.jero.modules.activiti.listener; + +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.delegate.TaskListener; + +/** + * @author liJiaRao + * @date 2023-10-15 17:02 + */ +public class CompleteListener implements TaskListener { + @Override + public void notify(DelegateTask delegateTask) { + System.out.println(delegateTask.getId()); + System.out.println(delegateTask.getName()); + System.out.println(delegateTask.getEventName()); + System.out.println(delegateTask.getAssignee()); + // todo 对接统一平台完成任务 + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java index 5ed59cc0..ca4248ed 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/CreateListener.java @@ -1,7 +1,17 @@ package com.jero.modules.activiti.listener; +import org.activiti.bpmn.model.ActivitiListener; + +import java.util.Date; + +import org.activiti.engine.delegate.DelegateExecution; + +import java.util.Set; + import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.task.DelegationState; +import org.activiti.engine.task.IdentityLink; /** * @author liJiaRao @@ -10,9 +20,32 @@ import org.activiti.engine.delegate.TaskListener; public class CreateListener implements TaskListener { @Override public void notify(DelegateTask delegateTask) { + String id = delegateTask.getId(); + String name = delegateTask.getName(); + String description = delegateTask.getDescription(); + int priority = delegateTask.getPriority(); + String processInstanceId = delegateTask.getProcessInstanceId(); + String executionId = delegateTask.getExecutionId(); + String processDefinitionId = delegateTask.getProcessDefinitionId(); + Date createTime = delegateTask.getCreateTime(); + String taskDefinitionKey = delegateTask.getTaskDefinitionKey(); + boolean isSuspended = delegateTask.isSuspended(); + String tenantId = delegateTask.getTenantId(); + String formKey = delegateTask.getFormKey(); + DelegateExecution execution = delegateTask.getExecution(); + String eventName = delegateTask.getEventName(); + ActivitiListener currentActivitiListener = delegateTask.getCurrentActivitiListener(); + DelegationState delegationState = delegateTask.getDelegationState(); + String owner = delegateTask.getOwner(); + String assignee = delegateTask.getAssignee(); + Date dueDate = delegateTask.getDueDate(); + String category = delegateTask.getCategory(); + Set candidates = delegateTask.getCandidates(); + System.out.println(delegateTask.getId()); System.out.println(delegateTask.getName()); System.out.println(delegateTask.getEventName()); System.out.println(delegateTask.getAssignee()); + // todo 对接统一平台完成任务 } }