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 | 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 | ... | ... |