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 2  
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.convert.Convert;
  5 +import cn.hutool.core.lang.Assert;
5 6 import cn.hutool.core.map.MapUtil;
6 7 import cn.hutool.core.util.*;
7 8 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
... ... @@ -362,13 +363,21 @@ public class BpmnModelUtils {
362 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 367 FieldExtension fieldExtension = new FieldExtension();
367 368 fieldExtension.setFieldName("listenerConfig");
368   - fieldExtension.setStringValue(JsonUtils.toJsonString(obj));
  369 + fieldExtension.setStringValue(JsonUtils.toJsonString(handler));
369 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 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 452 flowableListener.setEvent(TaskListener.EVENTNAME_CREATE);
453 453 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
454 454 flowableListener.setImplementation(DELEGATE_EXPRESSION);
455   - addListenerFieldExtension(flowableListener, node.getTaskCreateListener());
  455 + addListenerConfig(flowableListener, node.getTaskCreateListener());
456 456 flowableListeners.add(flowableListener);
457 457 }
458 458 if (node.getTaskAssignListener() != null
... ... @@ -461,7 +461,7 @@ public class SimpleModelUtils {
461 461 flowableListener.setEvent(TaskListener.EVENTNAME_ASSIGNMENT);
462 462 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
463 463 flowableListener.setImplementation(DELEGATE_EXPRESSION);
464   - addListenerFieldExtension(flowableListener, node.getTaskAssignListener());
  464 + addListenerConfig(flowableListener, node.getTaskAssignListener());
465 465 flowableListeners.add(flowableListener);
466 466 }
467 467 if (node.getTaskCompleteListener() != null
... ... @@ -470,7 +470,7 @@ public class SimpleModelUtils {
470 470 flowableListener.setEvent(TaskListener.EVENTNAME_COMPLETE);
471 471 flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
472 472 flowableListener.setImplementation(DELEGATE_EXPRESSION);
473   - addListenerFieldExtension(flowableListener, node.getTaskCompleteListener());
  473 + addListenerConfig(flowableListener, node.getTaskCompleteListener());
474 474 flowableListeners.add(flowableListener);
475 475 }
476 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 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.lang.Assert;
5 5 import cn.hutool.core.util.StrUtil;
6   -import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
7 6 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO;
8 7 import cn.iocoder.yudao.module.bpm.enums.definition.BpmListenerParamTypeEnum;
9 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 11 import jakarta.annotation.Resource;
13 12 import lombok.extern.slf4j.Slf4j;
14 13 import org.flowable.bpmn.model.BpmnModel;
15   -import org.flowable.bpmn.model.FieldExtension;
16 14 import org.flowable.bpmn.model.FlowableListener;
17 15 import org.flowable.bpmn.model.UserTask;
18 16 import org.flowable.engine.delegate.TaskListener;
... ... @@ -30,6 +28,7 @@ import java.util.List;
30 28 import java.util.Map;
31 29  
32 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 34 * BPM 用户任务通用监听器
... ... @@ -112,12 +111,7 @@ public class BpmUserTaskListener implements TaskListener {
112 111 .filter(item -> item.getEvent().equals(eventName))
113 112 .findFirst().orElse(null);
114 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 118 \ No newline at end of file
... ...