Commit 533e5c3bf59bc25fc8fffb1b96f362e0f1280549
1 parent
a85d51cc
refactor: 优化ListenerHandler写入及解析
Showing
3 changed files
with
16 additions
and
13 deletions
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 |