Commit 14d8c2bb404caa337565a80b242c736822f3278a
1 parent
c6458137
fix:【BPM 工作流】buildConditionExpression 在流程预测时,因为变量不存在,导致 Unknow property 异常的问题
Showing
1 changed file
with
8 additions
and
5 deletions
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java
| @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; | @@ -4,7 +4,6 @@ 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.map.MapUtil; | 5 | import cn.hutool.core.map.MapUtil; |
| 6 | import cn.hutool.core.util.*; | 6 | import cn.hutool.core.util.*; |
| 7 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 8 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 7 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 9 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; | 8 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; |
| 10 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.ConditionGroups; | 9 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO.ConditionGroups; |
| @@ -17,13 +16,14 @@ import cn.iocoder.yudao.module.bpm.service.task.listener.BpmCallActivityListener | @@ -17,13 +16,14 @@ import cn.iocoder.yudao.module.bpm.service.task.listener.BpmCallActivityListener | ||
| 17 | import cn.iocoder.yudao.module.bpm.service.task.listener.BpmUserTaskListener; | 16 | import cn.iocoder.yudao.module.bpm.service.task.listener.BpmUserTaskListener; |
| 18 | import org.flowable.bpmn.BpmnAutoLayout; | 17 | import org.flowable.bpmn.BpmnAutoLayout; |
| 19 | import org.flowable.bpmn.constants.BpmnXMLConstants; | 18 | import org.flowable.bpmn.constants.BpmnXMLConstants; |
| 20 | -import org.flowable.bpmn.model.Process; | ||
| 21 | import org.flowable.bpmn.model.*; | 19 | import org.flowable.bpmn.model.*; |
| 20 | +import org.flowable.bpmn.model.Process; | ||
| 22 | import org.flowable.engine.delegate.ExecutionListener; | 21 | import org.flowable.engine.delegate.ExecutionListener; |
| 23 | import org.flowable.engine.delegate.TaskListener; | 22 | import org.flowable.engine.delegate.TaskListener; |
| 24 | 23 | ||
| 25 | import java.util.*; | 24 | import java.util.*; |
| 26 | 25 | ||
| 26 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||
| 27 | import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.*; | 27 | import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.*; |
| 28 | import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.*; | 28 | import static cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils.*; |
| 29 | import static java.util.Arrays.asList; | 29 | import static java.util.Arrays.asList; |
| @@ -684,15 +684,18 @@ public class SimpleModelUtils { | @@ -684,15 +684,18 @@ public class SimpleModelUtils { | ||
| 684 | if (conditionGroups == null || CollUtil.isEmpty(conditionGroups.getConditions())) { | 684 | if (conditionGroups == null || CollUtil.isEmpty(conditionGroups.getConditions())) { |
| 685 | return null; | 685 | return null; |
| 686 | } | 686 | } |
| 687 | - List<String> strConditionGroups = CollectionUtils.convertList(conditionGroups.getConditions(), item -> { | 687 | + List<String> strConditionGroups = convertList(conditionGroups.getConditions(), item -> { |
| 688 | if (CollUtil.isEmpty(item.getRules())) { | 688 | if (CollUtil.isEmpty(item.getRules())) { |
| 689 | return ""; | 689 | return ""; |
| 690 | } | 690 | } |
| 691 | // 构造规则表达式 | 691 | // 构造规则表达式 |
| 692 | - List<String> list = CollectionUtils.convertList(item.getRules(), (rule) -> { | 692 | + List<String> list = convertList(item.getRules(), (rule) -> { |
| 693 | String rightSide = NumberUtil.isNumber(rule.getRightSide()) ? rule.getRightSide() | 693 | String rightSide = NumberUtil.isNumber(rule.getRightSide()) ? rule.getRightSide() |
| 694 | : "\"" + rule.getRightSide() + "\""; // 如果非数值类型加引号 | 694 | : "\"" + rule.getRightSide() + "\""; // 如果非数值类型加引号 |
| 695 | - return String.format(" %s %s var:convertByType(%s,%s)", rule.getLeftSide(), rule.getOpCode(), rule.getLeftSide(), rightSide); | 695 | + return String.format(" vars:getOrDefault(%s, null) %s var:convertByType(%s,%s) ", |
| 696 | + rule.getLeftSide(), // 左侧:读取变量 | ||
| 697 | + rule.getOpCode(), // 中间:操作符,比较 | ||
| 698 | + rule.getLeftSide(), rightSide); // 右侧:转换变量,VariableConvertByTypeExpressionFunction | ||
| 696 | }); | 699 | }); |
| 697 | // 构造条件组的表达式 | 700 | // 构造条件组的表达式 |
| 698 | Boolean and = item.getAnd(); | 701 | Boolean and = item.getAnd(); |