!234 WHEN 的 must 指定多个任务

Merge pull request !234 from luoyi/issues/I84XNE
This commit is contained in:
铂赛东
2023-09-29 15:27:28 +00:00
committed by Gitee
2 changed files with 14 additions and 8 deletions

View File

@@ -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<WhenCondition> {
@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<String> specifyIdSet = Arrays.stream(specifyIds.replace(StrUtil.SPACE, StrUtil.EMPTY).split(",")).collect(Collectors.toSet());
Set<String> 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);

View File

@@ -63,7 +63,7 @@
</chain>
<chain name="chain13">
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);
</chain>
</flow>