Commit 533e5c3bf59bc25fc8fffb1b96f362e0f1280549

Authored by Lesan
1 parent a85d51cc

refactor: 优化ListenerHandler写入及解析

yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/BpmnModelUtils.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.convert.Convert; 4 import cn.hutool.core.convert.Convert;
  5 +import cn.hutool.core.lang.Assert;
5 import cn.hutool.core.map.MapUtil; 6 import cn.hutool.core.map.MapUtil;
6 import cn.hutool.core.util.*; 7 import cn.hutool.core.util.*;
7 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 8 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
@@ -362,13 +363,21 @@ public class BpmnModelUtils { @@ -362,13 +363,21 @@ public class BpmnModelUtils {
362 return Convert.toBool(extensionElements.get(0).getElementText(), false); 363 return Convert.toBool(extensionElements.get(0).getElementText(), false);
363 } 364 }
364 365
365 - public static void addListenerFieldExtension(FlowableListener flowableListener, Object obj) { 366 + public static void addListenerConfig(FlowableListener flowableListener, BpmSimpleModelNodeVO.ListenerHandler handler) {
366 FieldExtension fieldExtension = new FieldExtension(); 367 FieldExtension fieldExtension = new FieldExtension();
367 fieldExtension.setFieldName("listenerConfig"); 368 fieldExtension.setFieldName("listenerConfig");
368 - fieldExtension.setStringValue(JsonUtils.toJsonString(obj)); 369 + fieldExtension.setStringValue(JsonUtils.toJsonString(handler));
369 flowableListener.getFieldExtensions().add(fieldExtension); 370 flowableListener.getFieldExtensions().add(fieldExtension);
370 } 371 }
371 372
  373 + public static BpmSimpleModelNodeVO.ListenerHandler parseListenerConfig(FlowableListener flowableListener) {
  374 + FieldExtension fieldExtension = flowableListener.getFieldExtensions().stream()
  375 + .filter(item -> item.getFieldName().equals("listenerConfig"))
  376 + .findFirst().orElse(null);
  377 + Assert.notNull(fieldExtension, "监听器扩展字段({})不能为空", fieldExtension);
  378 + return JsonUtils.parseObject(fieldExtension.getStringValue(), BpmSimpleModelNodeVO.ListenerHandler.class);
  379 + }
  380 +
372 // ========== BPM 简单查找相关的方法 ========== 381 // ========== BPM 简单查找相关的方法 ==========
373 382
374 /** 383 /**
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
@@ -452,7 +452,7 @@ public class SimpleModelUtils { @@ -452,7 +452,7 @@ public class SimpleModelUtils {
452 flowableListener.setEvent(TaskListener.EVENTNAME_CREATE); 452 flowableListener.setEvent(TaskListener.EVENTNAME_CREATE);
453 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); 453 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
454 flowableListener.setImplementation(DELEGATE_EXPRESSION); 454 flowableListener.setImplementation(DELEGATE_EXPRESSION);
455 - addListenerFieldExtension(flowableListener, node.getTaskCreateListener()); 455 + addListenerConfig(flowableListener, node.getTaskCreateListener());
456 flowableListeners.add(flowableListener); 456 flowableListeners.add(flowableListener);
457 } 457 }
458 if (node.getTaskAssignListener() != null 458 if (node.getTaskAssignListener() != null
@@ -461,7 +461,7 @@ public class SimpleModelUtils { @@ -461,7 +461,7 @@ public class SimpleModelUtils {
461 flowableListener.setEvent(TaskListener.EVENTNAME_ASSIGNMENT); 461 flowableListener.setEvent(TaskListener.EVENTNAME_ASSIGNMENT);
462 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); 462 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
463 flowableListener.setImplementation(DELEGATE_EXPRESSION); 463 flowableListener.setImplementation(DELEGATE_EXPRESSION);
464 - addListenerFieldExtension(flowableListener, node.getTaskAssignListener()); 464 + addListenerConfig(flowableListener, node.getTaskAssignListener());
465 flowableListeners.add(flowableListener); 465 flowableListeners.add(flowableListener);
466 } 466 }
467 if (node.getTaskCompleteListener() != null 467 if (node.getTaskCompleteListener() != null
@@ -470,7 +470,7 @@ public class SimpleModelUtils { @@ -470,7 +470,7 @@ public class SimpleModelUtils {
470 flowableListener.setEvent(TaskListener.EVENTNAME_COMPLETE); 470 flowableListener.setEvent(TaskListener.EVENTNAME_COMPLETE);
471 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION); 471 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
472 flowableListener.setImplementation(DELEGATE_EXPRESSION); 472 flowableListener.setImplementation(DELEGATE_EXPRESSION);
473 - addListenerFieldExtension(flowableListener, node.getTaskCompleteListener()); 473 + addListenerConfig(flowableListener, node.getTaskCompleteListener());
474 flowableListeners.add(flowableListener); 474 flowableListeners.add(flowableListener);
475 } 475 }
476 if (CollUtil.isNotEmpty(flowableListeners)) { 476 if (CollUtil.isNotEmpty(flowableListeners)) {
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener/BpmUserTaskListener.java
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.bpm.service.task.listener; @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.bpm.service.task.listener;
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.lang.Assert; 4 import cn.hutool.core.lang.Assert;
5 import cn.hutool.core.util.StrUtil; 5 import cn.hutool.core.util.StrUtil;
6 -import cn.iocoder.yudao.framework.common.util.json.JsonUtils;  
7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO;
8 import cn.iocoder.yudao.module.bpm.enums.definition.BpmListenerParamTypeEnum; 7 import cn.iocoder.yudao.module.bpm.enums.definition.BpmListenerParamTypeEnum;
9 import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils; 8 import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
@@ -12,7 +11,6 @@ import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; @@ -12,7 +11,6 @@ import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
12 import jakarta.annotation.Resource; 11 import jakarta.annotation.Resource;
13 import lombok.extern.slf4j.Slf4j; 12 import lombok.extern.slf4j.Slf4j;
14 import org.flowable.bpmn.model.BpmnModel; 13 import org.flowable.bpmn.model.BpmnModel;
15 -import org.flowable.bpmn.model.FieldExtension;  
16 import org.flowable.bpmn.model.FlowableListener; 14 import org.flowable.bpmn.model.FlowableListener;
17 import org.flowable.bpmn.model.UserTask; 15 import org.flowable.bpmn.model.UserTask;
18 import org.flowable.engine.delegate.TaskListener; 16 import org.flowable.engine.delegate.TaskListener;
@@ -30,6 +28,7 @@ import java.util.List; @@ -30,6 +28,7 @@ import java.util.List;
30 import java.util.Map; 28 import java.util.Map;
31 29
32 import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID; 30 import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID;
  31 +import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.parseListenerConfig;
33 32
34 /** 33 /**
35 * BPM 用户任务通用监听器 34 * BPM 用户任务通用监听器
@@ -112,12 +111,7 @@ public class BpmUserTaskListener implements TaskListener { @@ -112,12 +111,7 @@ public class BpmUserTaskListener implements TaskListener {
112 .filter(item -> item.getEvent().equals(eventName)) 111 .filter(item -> item.getEvent().equals(eventName))
113 .findFirst().orElse(null); 112 .findFirst().orElse(null);
114 Assert.notNull(flowableListener, "监听器({})不能为空", flowableListener); 113 Assert.notNull(flowableListener, "监听器({})不能为空", flowableListener);
115 - // TODO @lesan:BpmnModelUtils 提供一个 BpmSimpleModelNodeVO.ListenerHandler 解析方法,尽量收敛掉。  
116 - FieldExtension fieldExtension = flowableListener.getFieldExtensions().stream()  
117 - .filter(item -> item.getFieldName().equals("listenerConfig"))  
118 - .findFirst().orElse(null);  
119 - Assert.notNull(fieldExtension, "监听器扩展字段({})不能为空", fieldExtension);  
120 - return JsonUtils.parseObject(fieldExtension.getStringValue(), BpmSimpleModelNodeVO.ListenerHandler.class); 114 + return parseListenerConfig(flowableListener);
121 } 115 }
122 116
123 } 117 }
124 \ No newline at end of file 118 \ No newline at end of file