diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MustOperator.java b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MustOperator.java index e859cd8bc..9c819d3be 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MustOperator.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MustOperator.java @@ -1,14 +1,13 @@ package com.yomahub.liteflow.builder.el.operator; -import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.builder.el.operator.base.BaseOperator; import com.yomahub.liteflow.builder.el.operator.base.OperatorHelper; import com.yomahub.liteflow.enums.ParallelStrategyEnum; +import com.yomahub.liteflow.flow.element.Executable; import com.yomahub.liteflow.flow.element.condition.WhenCondition; -import java.util.Arrays; +import java.util.HashSet; import java.util.Set; -import java.util.stream.Collectors; /** * EL 规则中的 must 的操作符 @@ -20,14 +19,21 @@ public class MustOperator extends BaseOperator { @Override public WhenCondition build(Object[] objects) throws Exception { - OperatorHelper.checkObjectSizeEqTwo(objects); + OperatorHelper.checkObjectSizeGtTwo(objects); WhenCondition whenCondition = OperatorHelper.convert(objects[0], WhenCondition.class); - String specifyIds = OperatorHelper.convert(objects[1], String.class); - // 解析指定完成的任务 ID 集合 - Set specifyIdSet = Arrays.stream(specifyIds.replace(StrUtil.SPACE, StrUtil.EMPTY).split(",")).collect(Collectors.toSet()); + Set specifyIdSet = new HashSet<>(); + + for (int i = 1; i < objects.length; i++) { + Object task = objects[i]; + if (task instanceof String) { + specifyIdSet.add(OperatorHelper.convert(task, String.class)); + } else if (task instanceof Executable) { + specifyIdSet.add(OperatorHelper.convert(task, Executable.class).getId()); + } + } whenCondition.setSpecifyIdSet(specifyIdSet); whenCondition.setParallelStrategy(ParallelStrategyEnum.SPECIFY); diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/asyncNode/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/asyncNode/flow.el.xml index 79523e4e5..b02c48cf8 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/asyncNode/flow.el.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/asyncNode/flow.el.xml @@ -63,7 +63,7 @@ - THEN(WHEN(d, g, l, a, THEN(k, b).id("z")).ignoreError(true).must("z, g, task1, task2"), c); + THEN(WHEN(d, g, l, a, THEN(k, b).id("z")).ignoreError(true).must("z", g, "task1", "task2"), c); \ No newline at end of file