diff --git a/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml b/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml index 2960d54acd6f81393183a0a12e86f823159b2521..c0ab33700e498b4c2e0525d0dbe1f82ba45a30f3 100644 --- a/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml +++ b/src/main/java/neatlogic/framework/autoexec/dao/mapper/AutoexecJobMapper.xml @@ -750,6 +750,8 @@ along with this program. If not, see .--> aj.`exec_user` as execUser, aj.`source`, aj.`round_count` as roundCount, + aj.`parallel_count` as parallelCount, + aj.`parallel_policy` as parallelPolicy, aj.`param_hash` as paramHash, aj.`config_hash` as configHash, aj.`trigger_type` as triggerType diff --git a/src/main/java/neatlogic/framework/autoexec/dto/combop/AutoexecCombopExecuteConfigVo.java b/src/main/java/neatlogic/framework/autoexec/dto/combop/AutoexecCombopExecuteConfigVo.java index 22d84aa209fb8f062237d96f520f36368ee75be8..c8711a5117cf17ff1ad174232b9204ec722bab1c 100644 --- a/src/main/java/neatlogic/framework/autoexec/dto/combop/AutoexecCombopExecuteConfigVo.java +++ b/src/main/java/neatlogic/framework/autoexec/dto/combop/AutoexecCombopExecuteConfigVo.java @@ -15,6 +15,7 @@ along with this program. If not, see .*/ package neatlogic.framework.autoexec.dto.combop; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.autoexec.dto.node.AutoexecNodeVo; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.restful.annotation.EntityField; @@ -57,7 +58,8 @@ public class AutoexecCombopExecuteConfigVo implements Serializable { @EntityField(name = "并发策略", type = ApiParamType.STRING) private String parallelPolicy; @EntityField(name = "前置执行目标配置", type = ApiParamType.JSONOBJECT) - private AutoexecCombopExecuteNodeConfigVo combopNodeConfig; //设置过滤器后,执行时只能在过滤器范围内选择执行目标 + private JSONObject preCondition; //设置过滤器后,执行时只能在过滤器范围内选择执行目标 + public String getProtocol() { return protocol; @@ -139,12 +141,12 @@ public class AutoexecCombopExecuteConfigVo implements Serializable { this.roundCount = roundCount; } - public AutoexecCombopExecuteNodeConfigVo getCombopNodeConfig() { - return combopNodeConfig; + public JSONObject getPreCondition() { + return preCondition; } - public void setCombopNodeConfig(AutoexecCombopExecuteNodeConfigVo combopNodeConfig) { - this.combopNodeConfig = combopNodeConfig; + public void setPreCondition(JSONObject preCondition) { + this.preCondition = preCondition; } public ParamMappingVo getRunnerGroup() { diff --git a/src/main/java/neatlogic/framework/autoexec/job/node/IUpdateNodes.java b/src/main/java/neatlogic/framework/autoexec/job/node/IUpdateNodes.java index 1f01a9e98e99eab3e9001676bddb0b783f06a33f..137fe16664ba26a7039c71db7318e1a6b84a104c 100644 --- a/src/main/java/neatlogic/framework/autoexec/job/node/IUpdateNodes.java +++ b/src/main/java/neatlogic/framework/autoexec/job/node/IUpdateNodes.java @@ -15,18 +15,18 @@ along with this program. If not, see .*/ package neatlogic.framework.autoexec.job.node; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; public interface IUpdateNodes { /** * 更新自动化执行目标 - * @param executeNodeConfigVo 执行目标配置 + * @param executeConfigVo 执行目标配置 * @param jobVo 作业 * @param userName 执行用户 * @param protocolId 协议id */ - boolean update(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId); + boolean update(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId); } diff --git a/src/main/java/neatlogic/framework/autoexec/job/node/UpdateNodesFactory.java b/src/main/java/neatlogic/framework/autoexec/job/node/UpdateNodesFactory.java index 6d7c993f877564709921d8b579b1d821f18e2bc1..e89e31fe48e70d2eb5510e46276fddb70ba3a9df 100644 --- a/src/main/java/neatlogic/framework/autoexec/job/node/UpdateNodesFactory.java +++ b/src/main/java/neatlogic/framework/autoexec/job/node/UpdateNodesFactory.java @@ -16,11 +16,13 @@ along with this program. If not, see .*/ package neatlogic.framework.autoexec.job.node; import neatlogic.framework.applicationlistener.core.ModuleInitializedListenerBase; -import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteNodeConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopConfigVo; +import neatlogic.framework.autoexec.dto.combop.AutoexecCombopExecuteConfigVo; import neatlogic.framework.autoexec.dto.job.AutoexecJobVo; import neatlogic.framework.bootstrap.NeatLogicWebApplicationContext; import neatlogic.framework.common.RootComponent; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import java.util.ArrayList; import java.util.List; @@ -38,7 +40,7 @@ public class UpdateNodesFactory extends ModuleInitializedListenerBase { if (beansOfTypeMap.size() == 0) { return; } - if(CollectionUtils.isNotEmpty(beansOfTypeMap.values())) { + if (CollectionUtils.isNotEmpty(beansOfTypeMap.values())) { updateNodeList.addAll(beansOfTypeMap.values()); } } @@ -50,16 +52,28 @@ public class UpdateNodesFactory extends ModuleInitializedListenerBase { /** * 遍历所有获取目标的方式,获取到就退出 - * @param jobVo 作业 - * @param executeNodeConfigVo 执行目标配置 - * @param userName 执行用户 - * @param protocolId 协议id + * + * @param jobVo 作业 + * @param executeConfigVo 执行目标配置 + * @param userName 执行用户 + * @param protocolId 协议id */ - public static boolean updateNodes(AutoexecCombopExecuteNodeConfigVo executeNodeConfigVo, AutoexecJobVo jobVo,String userName,Long protocolId){ + public static boolean updateNodes(AutoexecCombopExecuteConfigVo executeConfigVo, AutoexecJobVo jobVo, String userName, Long protocolId) { boolean isHasNode = false; - for (IUpdateNodes updateNode : updateNodeList){ - isHasNode = updateNode.update(executeNodeConfigVo,jobVo,userName,protocolId); - if(isHasNode){ + for (IUpdateNodes updateNode : updateNodeList) { + AutoexecCombopConfigVo config = jobVo.getConfig(); + //如果局部不存在前置过滤器,则使用全局的 + if (executeConfigVo == null || executeConfigVo.getExecuteNodeConfig() == null) { + return false; + } else { + if (MapUtils.isEmpty(executeConfigVo.getPreCondition()) && config != null && config.getExecuteConfig() != null + && MapUtils.isNotEmpty(config.getExecuteConfig().getPreCondition()) + ) { + executeConfigVo.setPreCondition(config.getExecuteConfig().getPreCondition()); + } + } + isHasNode = updateNode.update(executeConfigVo, jobVo, userName, protocolId); + if (isHasNode) { break; } }