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

This commit is contained in:
jason 2025-02-07 22:45:03 +08:00
parent a23b0480f1
commit f5050807e1
3 changed files with 12 additions and 37 deletions

View File

@ -346,9 +346,9 @@ public class BpmSimpleModelNodeVO {
private HttpRequestTriggerSetting httpRequestSetting; private HttpRequestTriggerSetting httpRequestSetting;
/** /**
* 更新流程表单触发器设置 * 流程表单触发器设置
*/ */
private UpdateNormalFormTriggerSetting updateNormalFormSetting; private NormalFormTriggerSetting normalFormSetting;
@Schema(description = "http 请求触发器设置", example = "{}") @Schema(description = "http 请求触发器设置", example = "{}")
@Data @Data
@ -378,23 +378,11 @@ public class BpmSimpleModelNodeVO {
private List<KeyValue<String, String>> response; private List<KeyValue<String, String>> response;
} }
@Schema(description = "更新流程表单触发器设置", example = "{}") @Schema(description = "流程表单触发器设置", example = "{}")
@Data @Data
public static class UpdateNormalFormTriggerSetting { public static class NormalFormTriggerSetting {
@Schema(description = "条件类型", example = "1") @Schema(description = "修改的表单字段", example = "userName")
@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 = "更新的表单字段不能为空")
private Map<String, Object> updateFormFields; private Map<String, Object> updateFormFields;
} }
} }

View File

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

View File

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