From 3921430631a5f1020de9cfa038acd2bed7d1f2b6 Mon Sep 17 00:00:00 2001 From: luoyi <972849752@qq.com> Date: Thu, 28 Sep 2023 20:25:54 +0800 Subject: [PATCH] =?UTF-8?q?enhancement=20#I84XNE=20=E8=B0=83=E6=95=B4=20mu?= =?UTF-8?q?st=20=E5=85=A5=E5=8F=82=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../builder/el/operator/MustOperator.java | 20 ++++++++++++------- .../src/test/resources/asyncNode/flow.el.xml | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) 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