feature #I4GS03 并行节点中支持任意节点结束即继续的流程设计

This commit is contained in:
bryan31
2021-11-09 22:14:40 +08:00
parent b62638ddfc
commit 50980a45a1
5 changed files with 32 additions and 8 deletions

View File

@@ -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;
}
}

View File

@@ -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());
}
}

View File

@@ -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());
}
}

View File

@@ -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);

View File

@@ -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);