mirror of
https://gitee.com/dromara/liteFlow.git
synced 2026-05-14 20:22:07 +08:00
feature #I4GS03 并行节点中支持任意节点结束即继续的流程设计
This commit is contained in:
@@ -16,15 +16,21 @@ import java.util.List;
|
||||
* @author Bryan.Zhang
|
||||
*/
|
||||
public class Condition {
|
||||
// 增加errorResume属性,以区分当when调用链调用失败时是否继续往下执行 默认true继续执行
|
||||
private boolean errorResume = true;
|
||||
// 增加groupId属性,用于不同node进行同组合并
|
||||
private String group = LocalDefaultFlowConstant.DEFAULT;
|
||||
// condition 类型 参数:ConditionTypeEnum 包含:then when
|
||||
|
||||
//condition 类型 参数:ConditionTypeEnum 包含:then when
|
||||
private String conditionType;
|
||||
|
||||
private List<Executable> nodeList;
|
||||
|
||||
//只在when类型下有效,以区分当when调用链调用失败时是否继续往下执行 默认true继续执行
|
||||
private boolean errorResume = true;
|
||||
|
||||
//只在when类型下有效,用于不同node进行同组合并,相同的组会进行合并,不同的组不会进行合并
|
||||
private String group = LocalDefaultFlowConstant.DEFAULT;
|
||||
|
||||
//只在when类型下有效,为true的话说明在多个并行节点下,任意一个成功,整个when就成功
|
||||
private boolean any = false;
|
||||
|
||||
public Condition(List<Executable> nodeList) {
|
||||
this.nodeList = nodeList;
|
||||
}
|
||||
@@ -62,4 +68,12 @@ public class Condition {
|
||||
public void setConditionType(String conditionType) {
|
||||
this.conditionType = conditionType;
|
||||
}
|
||||
|
||||
public boolean isAny() {
|
||||
return any;
|
||||
}
|
||||
|
||||
public void setAny(boolean any) {
|
||||
this.any = any;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,8 +22,5 @@ public class ThenCondition extends Condition {
|
||||
public ThenCondition(Condition condition){
|
||||
super(condition.getNodeList());
|
||||
super.setConditionType(condition.getConditionType());
|
||||
super.setGroup(condition.getGroup());
|
||||
super.setErrorResume(condition.isErrorResume());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ public class WhenCondition extends Condition{
|
||||
super.setConditionType(condition.getConditionType());
|
||||
super.setGroup(condition.getGroup());
|
||||
super.setErrorResume(condition.isErrorResume());
|
||||
super.setAny(condition.isAny());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -135,6 +135,7 @@ public abstract class JsonFlowParser extends FlowParser {
|
||||
String group;
|
||||
String errorResume;
|
||||
Condition condition;
|
||||
String any;
|
||||
String chainName = chainObject.getString("name");
|
||||
JSONArray conditionArray = chainObject.getJSONArray("condition");
|
||||
conditionList = new ArrayList<>();
|
||||
@@ -144,6 +145,7 @@ public abstract class JsonFlowParser extends FlowParser {
|
||||
condArrayStr = condObject.getString("value");
|
||||
group = condObject.getString("group");
|
||||
errorResume = condObject.getString("errorResume");
|
||||
any = condObject.getString("any");
|
||||
if (StrUtil.isBlank(condType) || StrUtil.isBlank(condArrayStr)) {
|
||||
continue;
|
||||
}
|
||||
@@ -153,6 +155,9 @@ public abstract class JsonFlowParser extends FlowParser {
|
||||
if (StrUtil.isBlank(errorResume)) {
|
||||
errorResume = Boolean.TRUE.toString();
|
||||
}
|
||||
if (StrUtil.isBlank(any)){
|
||||
any = Boolean.FALSE.toString();
|
||||
}
|
||||
condition = new Condition();
|
||||
chainNodeList = new ArrayList<>();
|
||||
condArray = condArrayStr.split(",");
|
||||
@@ -191,6 +196,7 @@ public abstract class JsonFlowParser extends FlowParser {
|
||||
}
|
||||
condition.setErrorResume(errorResume.equals(Boolean.TRUE.toString()));
|
||||
condition.setGroup(group);
|
||||
condition.setAny(any.equals(Boolean.TRUE.toString()));
|
||||
condition.setConditionType(condType);
|
||||
condition.setNodeList(chainNodeList);
|
||||
super.buildBaseFlowConditions(conditionList, condition);
|
||||
|
||||
@@ -131,6 +131,7 @@ public abstract class XmlFlowParser extends FlowParser {
|
||||
String[] condArray;
|
||||
String group;
|
||||
String errorResume;
|
||||
String any;
|
||||
Condition condition;
|
||||
Element condE;
|
||||
List<Executable> chainNodeList;
|
||||
@@ -143,6 +144,7 @@ public abstract class XmlFlowParser extends FlowParser {
|
||||
condArrayStr = condE.attributeValue("value");
|
||||
errorResume = condE.attributeValue("errorResume");
|
||||
group = condE.attributeValue("group");
|
||||
any = condE.attributeValue("any");
|
||||
if (StrUtil.isBlank(condArrayStr)) {
|
||||
continue;
|
||||
}
|
||||
@@ -152,6 +154,9 @@ public abstract class XmlFlowParser extends FlowParser {
|
||||
if (StrUtil.isBlank(errorResume)) {
|
||||
errorResume = Boolean.TRUE.toString();
|
||||
}
|
||||
if (StrUtil.isBlank(any)){
|
||||
any = Boolean.FALSE.toString();
|
||||
}
|
||||
condition = new Condition();
|
||||
chainNodeList = new ArrayList<>();
|
||||
condArray = condArrayStr.split(",");
|
||||
@@ -190,6 +195,7 @@ public abstract class XmlFlowParser extends FlowParser {
|
||||
}
|
||||
condition.setErrorResume(errorResume.equals(Boolean.TRUE.toString()));
|
||||
condition.setGroup(group);
|
||||
condition.setAny(any.equals(Boolean.TRUE.toString()));
|
||||
condition.setConditionType(condE.getName());
|
||||
condition.setNodeList(chainNodeList);
|
||||
super.buildBaseFlowConditions(conditionList, condition);
|
||||
|
||||
Reference in New Issue
Block a user