refactor: 优化ListenerHandler写入及解析
This commit is contained in:
parent
a85d51cc8c
commit
533e5c3bf5
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
|
|||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.*;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
|
@ -362,13 +363,21 @@ public class BpmnModelUtils {
|
|||
return Convert.toBool(extensionElements.get(0).getElementText(), false);
|
||||
}
|
||||
|
||||
public static void addListenerFieldExtension(FlowableListener flowableListener, Object obj) {
|
||||
public static void addListenerConfig(FlowableListener flowableListener, BpmSimpleModelNodeVO.ListenerHandler handler) {
|
||||
FieldExtension fieldExtension = new FieldExtension();
|
||||
fieldExtension.setFieldName("listenerConfig");
|
||||
fieldExtension.setStringValue(JsonUtils.toJsonString(obj));
|
||||
fieldExtension.setStringValue(JsonUtils.toJsonString(handler));
|
||||
flowableListener.getFieldExtensions().add(fieldExtension);
|
||||
}
|
||||
|
||||
public static BpmSimpleModelNodeVO.ListenerHandler parseListenerConfig(FlowableListener flowableListener) {
|
||||
FieldExtension fieldExtension = flowableListener.getFieldExtensions().stream()
|
||||
.filter(item -> item.getFieldName().equals("listenerConfig"))
|
||||
.findFirst().orElse(null);
|
||||
Assert.notNull(fieldExtension, "监听器扩展字段({})不能为空", fieldExtension);
|
||||
return JsonUtils.parseObject(fieldExtension.getStringValue(), BpmSimpleModelNodeVO.ListenerHandler.class);
|
||||
}
|
||||
|
||||
// ========== BPM 简单查找相关的方法 ==========
|
||||
|
||||
/**
|
||||
|
|
|
@ -452,7 +452,7 @@ public class SimpleModelUtils {
|
|||
flowableListener.setEvent(TaskListener.EVENTNAME_CREATE);
|
||||
flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
|
||||
flowableListener.setImplementation(DELEGATE_EXPRESSION);
|
||||
addListenerFieldExtension(flowableListener, node.getTaskCreateListener());
|
||||
addListenerConfig(flowableListener, node.getTaskCreateListener());
|
||||
flowableListeners.add(flowableListener);
|
||||
}
|
||||
if (node.getTaskAssignListener() != null
|
||||
|
@ -461,7 +461,7 @@ public class SimpleModelUtils {
|
|||
flowableListener.setEvent(TaskListener.EVENTNAME_ASSIGNMENT);
|
||||
flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
|
||||
flowableListener.setImplementation(DELEGATE_EXPRESSION);
|
||||
addListenerFieldExtension(flowableListener, node.getTaskAssignListener());
|
||||
addListenerConfig(flowableListener, node.getTaskAssignListener());
|
||||
flowableListeners.add(flowableListener);
|
||||
}
|
||||
if (node.getTaskCompleteListener() != null
|
||||
|
@ -470,7 +470,7 @@ public class SimpleModelUtils {
|
|||
flowableListener.setEvent(TaskListener.EVENTNAME_COMPLETE);
|
||||
flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
|
||||
flowableListener.setImplementation(DELEGATE_EXPRESSION);
|
||||
addListenerFieldExtension(flowableListener, node.getTaskCompleteListener());
|
||||
addListenerConfig(flowableListener, node.getTaskCompleteListener());
|
||||
flowableListeners.add(flowableListener);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(flowableListeners)) {
|
||||
|
|
|
@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.bpm.service.task.listener;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO;
|
||||
import cn.iocoder.yudao.module.bpm.enums.definition.BpmListenerParamTypeEnum;
|
||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
|
||||
|
@ -12,7 +11,6 @@ import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
|
|||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.bpmn.model.BpmnModel;
|
||||
import org.flowable.bpmn.model.FieldExtension;
|
||||
import org.flowable.bpmn.model.FlowableListener;
|
||||
import org.flowable.bpmn.model.UserTask;
|
||||
import org.flowable.engine.delegate.TaskListener;
|
||||
|
@ -30,6 +28,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID;
|
||||
import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.parseListenerConfig;
|
||||
|
||||
/**
|
||||
* BPM 用户任务通用监听器
|
||||
|
@ -112,12 +111,7 @@ public class BpmUserTaskListener implements TaskListener {
|
|||
.filter(item -> item.getEvent().equals(eventName))
|
||||
.findFirst().orElse(null);
|
||||
Assert.notNull(flowableListener, "监听器({})不能为空", flowableListener);
|
||||
// TODO @lesan:BpmnModelUtils 提供一个 BpmSimpleModelNodeVO.ListenerHandler 解析方法,尽量收敛掉。
|
||||
FieldExtension fieldExtension = flowableListener.getFieldExtensions().stream()
|
||||
.filter(item -> item.getFieldName().equals("listenerConfig"))
|
||||
.findFirst().orElse(null);
|
||||
Assert.notNull(fieldExtension, "监听器扩展字段({})不能为空", fieldExtension);
|
||||
return JsonUtils.parseObject(fieldExtension.getStringValue(), BpmSimpleModelNodeVO.ListenerHandler.class);
|
||||
return parseListenerConfig(flowableListener);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue