Kaynağa Gözat

【功能优化】 优化更新流程表单数据触发器

jason 6 ay önce
ebeveyn
işleme
f5050807e1

+ 5 - 17
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java

@@ -346,9 +346,9 @@ public class BpmSimpleModelNodeVO {
         private HttpRequestTriggerSetting httpRequestSetting;
 
         /**
-         * 更新流程表单触发器设置
+         * 流程表单触发器设置
          */
-        private UpdateNormalFormTriggerSetting updateNormalFormSetting;
+        private NormalFormTriggerSetting normalFormSetting;
 
         @Schema(description = "http 请求触发器设置", example = "{}")
         @Data
@@ -378,23 +378,11 @@ public class BpmSimpleModelNodeVO {
             private List<KeyValue<String, String>> response;
         }
 
-        @Schema(description = "更新流程表单触发器设置", example = "{}")
+        @Schema(description = "流程表单触发器设置", example = "{}")
         @Data
-        public static class UpdateNormalFormTriggerSetting {
+        public static class NormalFormTriggerSetting {
 
-            @Schema(description = "条件类型", example = "1")
-            @InEnum(BpmSimpleModeConditionTypeEnum.class)
-            @NotNull(message = "条件类型不能为空")
-            private Integer conditionType;
-
-            @Schema(description = "条件表达式", example = "${day>3}")
-            private String conditionExpression;
-
-            @Schema(description = "条件组", example = "{}")
-            private ConditionGroups conditionGroups;
-
-            @Schema(description = "更新的表单字段", example = "userName")
-            @NotEmpty(message = "更新的表单字段不能为空")
+            @Schema(description = "修改的表单字段", example = "userName")
             private Map<String, Object> updateFormFields;
         }
     }

+ 2 - 4
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java

@@ -628,8 +628,6 @@ public class SimpleModelUtils {
             String conditionExpression = buildConditionExpression(node.getConditionSetting());
             return buildBpmnSequenceFlow(sourceId, targetId, node.getId(), node.getName(), conditionExpression);
         }
-
-
     }
 
     /**
@@ -726,8 +724,8 @@ public class SimpleModelUtils {
                 if (node.getTriggerSetting().getHttpRequestSetting() != null) {
                     addExtensionElementJson(serviceTask, TRIGGER_PARAM, node.getTriggerSetting().getHttpRequestSetting());
                 }
-                if (node.getTriggerSetting().getUpdateNormalFormSetting() != null) {
-                    addExtensionElementJson(serviceTask, TRIGGER_PARAM, node.getTriggerSetting().getUpdateNormalFormSetting());
+                if (node.getTriggerSetting().getNormalFormSetting() != null) {
+                    addExtensionElementJson(serviceTask, TRIGGER_PARAM, node.getTriggerSetting().getNormalFormSetting());
                 }
             }
             return serviceTask;

+ 5 - 16
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/trigger/BpmUpdateNormalFormTrigger.java

@@ -1,19 +1,14 @@
 package cn.iocoder.yudao.module.bpm.service.task.trigger;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
-import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.TriggerSetting.UpdateNormalFormTriggerSetting;
+import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.TriggerSetting.NormalFormTriggerSetting;
 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTriggerTypeEnum;
-import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
-import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils;
 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import org.flowable.engine.runtime.ProcessInstance;
 import org.springframework.stereotype.Component;
 
-import java.util.Map;
-
-
 /**
  * BPM 更新流程表单触发器
  *
@@ -34,19 +29,13 @@ public class BpmUpdateNormalFormTrigger implements BpmTrigger {
     @Override
     public void execute(String processInstanceId, String param) {
         // 1. 解析更新流程表单配置
-        UpdateNormalFormTriggerSetting setting = JsonUtils.parseObject(param, UpdateNormalFormTriggerSetting.class);
+        NormalFormTriggerSetting setting = JsonUtils.parseObject(param, NormalFormTriggerSetting.class);
         if (setting == null) {
             log.error("[execute][流程({}) 更新流程表单触发器配置为空]", processInstanceId);
             return;
         }
-        // 2.获取流程变量
-        ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId);
-        Map<String, Object> processVariables = processInstance.getProcessVariables();
-        String expression = SimpleModelUtils.buildConditionExpression(setting.getConditionType(), setting.getConditionExpression(),
-                setting.getConditionGroups());
-
-        // 3.满足条件,更新流程表单
-        if(BpmnModelUtils.evalConditionExpress(processVariables, expression)) {
+        // 2.更新流程变量
+        if (CollUtil.isNotEmpty(setting.getUpdateFormFields())) {
             processInstanceService.updateProcessInstanceVariables(processInstanceId, setting.getUpdateFormFields());
         }
     }