update TaskListener

This commit is contained in:
lijiarao
2023-10-15 19:33:29 +08:00
parent 5746e12a20
commit b183cda678
3 changed files with 78 additions and 5 deletions
@@ -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<FlowElement> flowElements = mainProcess.getFlowElements();
for (FlowElement flowElement : flowElements) {
if (flowElement instanceof UserTask) {
UserTask userTask = (UserTask) flowElement;
List<ActivitiListener> 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));
//生成节点
@@ -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 对接统一平台完成任务
}
}
@@ -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<IdentityLink> candidates = delegateTask.getCandidates();
System.out.println(delegateTask.getId());
System.out.println(delegateTask.getName());
System.out.println(delegateTask.getEventName());
System.out.println(delegateTask.getAssignee());
// todo 对接统一平台完成任务
}
}