Commit f5050807e1f9b6a0284af024f7cc8a9678434547

Authored by jason
1 parent a23b0480

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

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 { @@ -346,9 +346,9 @@ public class BpmSimpleModelNodeVO {
346 private HttpRequestTriggerSetting httpRequestSetting; 346 private HttpRequestTriggerSetting httpRequestSetting;
347 347
348 /** 348 /**
349 - * 更新流程表单触发器设置 349 + * 流程表单触发器设置
350 */ 350 */
351 - private UpdateNormalFormTriggerSetting updateNormalFormSetting; 351 + private NormalFormTriggerSetting normalFormSetting;
352 352
353 @Schema(description = "http 请求触发器设置", example = "{}") 353 @Schema(description = "http 请求触发器设置", example = "{}")
354 @Data 354 @Data
@@ -378,23 +378,11 @@ public class BpmSimpleModelNodeVO { @@ -378,23 +378,11 @@ public class BpmSimpleModelNodeVO {
378 private List<KeyValue<String, String>> response; 378 private List<KeyValue<String, String>> response;
379 } 379 }
380 380
381 - @Schema(description = "更新流程表单触发器设置", example = "{}") 381 + @Schema(description = "流程表单触发器设置", example = "{}")
382 @Data 382 @Data
383 - public static class UpdateNormalFormTriggerSetting { 383 + public static class NormalFormTriggerSetting {
384 384
385 - @Schema(description = "条件类型", example = "1")  
386 - @InEnum(BpmSimpleModeConditionTypeEnum.class)  
387 - @NotNull(message = "条件类型不能为空")  
388 - private Integer conditionType;  
389 -  
390 - @Schema(description = "条件表达式", example = "${day>3}")  
391 - private String conditionExpression;  
392 -  
393 - @Schema(description = "条件组", example = "{}")  
394 - private ConditionGroups conditionGroups;  
395 -  
396 - @Schema(description = "更新的表单字段", example = "userName")  
397 - @NotEmpty(message = "更新的表单字段不能为空") 385 + @Schema(description = "修改的表单字段", example = "userName")
398 private Map<String, Object> updateFormFields; 386 private Map<String, Object> updateFormFields;
399 } 387 }
400 } 388 }
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 { @@ -628,8 +628,6 @@ public class SimpleModelUtils {
628 String conditionExpression = buildConditionExpression(node.getConditionSetting()); 628 String conditionExpression = buildConditionExpression(node.getConditionSetting());
629 return buildBpmnSequenceFlow(sourceId, targetId, node.getId(), node.getName(), conditionExpression); 629 return buildBpmnSequenceFlow(sourceId, targetId, node.getId(), node.getName(), conditionExpression);
630 } 630 }
631 -  
632 -  
633 } 631 }
634 632
635 /** 633 /**
@@ -726,8 +724,8 @@ public class SimpleModelUtils { @@ -726,8 +724,8 @@ public class SimpleModelUtils {
726 if (node.getTriggerSetting().getHttpRequestSetting() != null) { 724 if (node.getTriggerSetting().getHttpRequestSetting() != null) {
727 addExtensionElementJson(serviceTask, TRIGGER_PARAM, node.getTriggerSetting().getHttpRequestSetting()); 725 addExtensionElementJson(serviceTask, TRIGGER_PARAM, node.getTriggerSetting().getHttpRequestSetting());
728 } 726 }
729 - if (node.getTriggerSetting().getUpdateNormalFormSetting() != null) {  
730 - addExtensionElementJson(serviceTask, TRIGGER_PARAM, node.getTriggerSetting().getUpdateNormalFormSetting()); 727 + if (node.getTriggerSetting().getNormalFormSetting() != null) {
  728 + addExtensionElementJson(serviceTask, TRIGGER_PARAM, node.getTriggerSetting().getNormalFormSetting());
731 } 729 }
732 } 730 }
733 return serviceTask; 731 return serviceTask;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/trigger/BpmUpdateNormalFormTrigger.java
1 package cn.iocoder.yudao.module.bpm.service.task.trigger; 1 package cn.iocoder.yudao.module.bpm.service.task.trigger;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 4 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
4 -import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.TriggerSetting.UpdateNormalFormTriggerSetting; 5 +import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.TriggerSetting.NormalFormTriggerSetting;
5 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTriggerTypeEnum; 6 import cn.iocoder.yudao.module.bpm.enums.definition.BpmTriggerTypeEnum;
6 -import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;  
7 -import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.SimpleModelUtils;  
8 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; 7 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
9 import jakarta.annotation.Resource; 8 import jakarta.annotation.Resource;
10 import lombok.extern.slf4j.Slf4j; 9 import lombok.extern.slf4j.Slf4j;
11 -import org.flowable.engine.runtime.ProcessInstance;  
12 import org.springframework.stereotype.Component; 10 import org.springframework.stereotype.Component;
13 11
14 -import java.util.Map;  
15 -  
16 -  
17 /** 12 /**
18 * BPM 更新流程表单触发器 13 * BPM 更新流程表单触发器
19 * 14 *
@@ -34,19 +29,13 @@ public class BpmUpdateNormalFormTrigger implements BpmTrigger { @@ -34,19 +29,13 @@ public class BpmUpdateNormalFormTrigger implements BpmTrigger {
34 @Override 29 @Override
35 public void execute(String processInstanceId, String param) { 30 public void execute(String processInstanceId, String param) {
36 // 1. 解析更新流程表单配置 31 // 1. 解析更新流程表单配置
37 - UpdateNormalFormTriggerSetting setting = JsonUtils.parseObject(param, UpdateNormalFormTriggerSetting.class); 32 + NormalFormTriggerSetting setting = JsonUtils.parseObject(param, NormalFormTriggerSetting.class);
38 if (setting == null) { 33 if (setting == null) {
39 log.error("[execute][流程({}) 更新流程表单触发器配置为空]", processInstanceId); 34 log.error("[execute][流程({}) 更新流程表单触发器配置为空]", processInstanceId);
40 return; 35 return;
41 } 36 }
42 - // 2.获取流程变量  
43 - ProcessInstance processInstance = processInstanceService.getProcessInstance(processInstanceId);  
44 - Map<String, Object> processVariables = processInstance.getProcessVariables();  
45 - String expression = SimpleModelUtils.buildConditionExpression(setting.getConditionType(), setting.getConditionExpression(),  
46 - setting.getConditionGroups());  
47 -  
48 - // 3.满足条件,更新流程表单  
49 - if(BpmnModelUtils.evalConditionExpress(processVariables, expression)) { 37 + // 2.更新流程变量
  38 + if (CollUtil.isNotEmpty(setting.getUpdateFormFields())) {
50 processInstanceService.updateProcessInstanceVariables(processInstanceId, setting.getUpdateFormFields()); 39 processInstanceService.updateProcessInstanceVariables(processInstanceId, setting.getUpdateFormFields());
51 } 40 }
52 } 41 }