From 541d574fcca9c80bbe1176cbe63f34ba44c5b110 Mon Sep 17 00:00:00 2001 From: jay li Date: Mon, 25 Nov 2024 19:57:05 +0800 Subject: [PATCH] =?UTF-8?q?#IB0SJ1=20=E8=B0=83=E4=BC=98=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../builder/el/LiteFlowChainELBuilder.java | 76 +---------- .../BaseInstanceIdGeneratorSpi.java | 129 ++++++++++++++++++ .../DefaultInstanceIdGeneratorSpi.java | 4 +- .../instanceId/InstanceIdGeneratorSpi.java | 48 ++----- ...lder.java => NodeInstanceIdManageSpi.java} | 8 +- .../instanceId/SqlInstanceIdGeneratorSpi.java | 9 +- .../parser/sql/read/impl/InstanceIdRead.java | 6 +- .../parser/sql/read/vo/InstanceIdVO.java | 10 +- .../liteflow/parser/sql/vo/SQLParserVO.java | 12 +- .../instanceIds/InstanceIdELSpringTest.java | 4 +- .../SQLWithXmlELInstanceIdSpringbootTest.java | 7 +- .../src/test/resources/sql/schema.sql | 2 +- 12 files changed, 171 insertions(+), 144 deletions(-) create mode 100644 liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/BaseInstanceIdGeneratorSpi.java rename liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/{InstanceIdGeneratorHolder.java => NodeInstanceIdManageSpi.java} (82%) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/LiteFlowChainELBuilder.java b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/LiteFlowChainELBuilder.java index c91ead20e..0e3a477cf 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/LiteFlowChainELBuilder.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/LiteFlowChainELBuilder.java @@ -2,9 +2,7 @@ package com.yomahub.liteflow.builder.el; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.*; -import cn.hutool.crypto.digest.MD5; import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.ql.util.express.DefaultContext; import com.ql.util.express.ExpressRunner; @@ -22,22 +20,14 @@ import com.yomahub.liteflow.flow.element.Executable; import com.yomahub.liteflow.flow.element.Node; import com.yomahub.liteflow.flow.element.condition.AndOrCondition; import com.yomahub.liteflow.flow.element.condition.NotCondition; -import com.yomahub.liteflow.flow.instanceId.InstanceIdGeneratorHolder; import com.yomahub.liteflow.flow.instanceId.InstanceIdGeneratorSpi; +import com.yomahub.liteflow.flow.instanceId.NodeInstanceIdManageSpi; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.property.LiteflowConfigGetter; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; - -import static com.yomahub.liteflow.util.JsonUtil.*; -import static com.yomahub.liteflow.common.ChainConstant.NODE_INSTANCE_PATH; -import static com.yomahub.liteflow.common.ChainConstant.USER_DIR; -import static com.yomahub.liteflow.util.JsonUtil.parseObject; -import static com.yomahub.liteflow.util.JsonUtil.toJsonString; -import static com.yomahub.liteflow.util.SerialsUtil.generateShortUUID; /** @@ -251,71 +241,11 @@ public class LiteFlowChainELBuilder { // 往condition里设置instanceId private void setNodesInstanceId(Condition condition) { - InstanceIdGeneratorSpi instanceIdGenerator = InstanceIdGeneratorHolder.getInstance().getInstanceIdGenerator(); + InstanceIdGeneratorSpi instanceIdGenerator = NodeInstanceIdManageSpi.getInstance().getInstanceIdGenerator(); - String elMd5 = MD5.create().digestHex(chain.getEl()); - List instanceIdFile = instanceIdGenerator.readInstanceIdFile(chain.getChainId()); - - // 如果文件不存在,或者文件内容不是当前el,则写入 - if (CollUtil.isEmpty(instanceIdFile) || !instanceIdFile.get(0).equals(elMd5)) { - instanceIdGenerator.writeInstanceIdFile(writeNodeInstanceId(condition, elMd5), chain.getChainId()); - } else { - // 文件存在,则直接读取 - Map> executableMap = new HashMap<>(); - for (int i = 1; i < instanceIdFile.size(); i++) { - JsonNode groupKeyAndInstanceIds = parseObject(instanceIdFile.get(i)); - if (groupKeyAndInstanceIds == null) { - continue; - } - - Iterator fieldNames = groupKeyAndInstanceIds.fieldNames(); - while (fieldNames.hasNext()) { - String key = fieldNames.next(); - JsonNode valueNode = groupKeyAndInstanceIds.get(key); - if (valueNode.isArray()) { - List valueList = new ArrayList<>(); - for (int j = 1; j < valueNode.size(); j+=2) { - valueList.add(valueNode.get(j).asText()); - } - executableMap.put(key, valueList); - } - } - } - - condition.getExecutableGroup().forEach((key, executables) -> { - AtomicInteger index = new AtomicInteger(0); - executables.forEach(executable -> { - if (executableMap.containsKey(key)) { - if (executable instanceof Node) { - ((Node) executable).setInstanceId((executableMap.get(key).get(index.getAndIncrement()))); - } - } - }); - }); - } + instanceIdGenerator.setNodesInstanceId(condition, chain); } - // 写入时第一行为el的md5,第二行为json格式的groupKey和对应的nodeId 和实例id - private List writeNodeInstanceId(Condition condition, String elMd5) { - ArrayList writeList = new ArrayList<>(); - writeList.add(elMd5); - Map> groupKeyAndInstanceIds = new HashMap<>(); - - condition.getExecutableGroup().forEach((key, executables) -> { - List instanceIds = new ArrayList<>(); - executables.forEach(executable -> { - if (executable instanceof Node) { - ((Node) executable).setInstanceId(generateShortUUID()); - instanceIds.add(executable.getId()); - instanceIds.add(((Node) executable).getInstanceId()); - } - }); - groupKeyAndInstanceIds.put(key, instanceIds); - }); - writeList.add(toJsonString(groupKeyAndInstanceIds)); - - return writeList; - } public LiteFlowChainELBuilder setNamespace(String nameSpace){ if (StrUtil.isBlank(nameSpace)) { diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/BaseInstanceIdGeneratorSpi.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/BaseInstanceIdGeneratorSpi.java new file mode 100644 index 000000000..5e99d73f7 --- /dev/null +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/BaseInstanceIdGeneratorSpi.java @@ -0,0 +1,129 @@ +package com.yomahub.liteflow.flow.instanceId; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.crypto.digest.MD5; +import com.fasterxml.jackson.databind.JsonNode; +import com.yomahub.liteflow.flow.element.Chain; +import com.yomahub.liteflow.flow.element.Condition; +import com.yomahub.liteflow.flow.element.Node; +import org.apache.commons.lang.StringUtils; + +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +import static com.yomahub.liteflow.util.JsonUtil.parseObject; +import static com.yomahub.liteflow.util.JsonUtil.toJsonString; +import static com.yomahub.liteflow.util.SerialsUtil.generateShortUUID; + +/** + * @author lhh + * @since 2.13.0 + */ +public abstract class BaseInstanceIdGeneratorSpi implements InstanceIdGeneratorSpi { + + // 根据实例id获取 节点实例定位 + @Override + public String getNodeInstanceId(String chainId, String instanceId) { + if (StringUtils.isBlank(chainId) || StringUtils.isBlank(instanceId)) { + return ""; + } + + List instanceIdFile = readInstanceIdFile(chainId); + + for (int i = 1; i < instanceIdFile.size(); i++) { + JsonNode groupKeyAndInstanceIds = parseObject(instanceIdFile.get(i)); + + if (groupKeyAndInstanceIds == null) { + continue; + } + + Iterator fieldNames = groupKeyAndInstanceIds.fieldNames(); + while (fieldNames.hasNext()) { + String key = fieldNames.next(); + JsonNode valueNode = groupKeyAndInstanceIds.get(key); + if (valueNode.isArray()) { + Map map = new HashMap<>(); + for (int j = 1; j < valueNode.size(); j+=2) { + String nodeId = valueNode.get(j - 1).asText(); + map.put(nodeId, map.getOrDefault(nodeId, -1)+1); + if (instanceId.equals(valueNode.get(j).asText())) { + return nodeId + "(" + (map.get(nodeId)) + ")"; + } + } + } + } + } + + return ""; + } + + // 往condition里设置instanceId + @Override + public void setNodesInstanceId(Condition condition, Chain chain) { + InstanceIdGeneratorSpi instanceIdGenerator = NodeInstanceIdManageSpi.getInstance().getInstanceIdGenerator(); + + String elMd5 = MD5.create().digestHex(chain.getEl()); + List instanceIdFile = instanceIdGenerator.readInstanceIdFile(chain.getChainId()); + + // 如果文件不存在,或者文件内容不是当前el,则写入 + if (CollUtil.isEmpty(instanceIdFile) || !instanceIdFile.get(0).equals(elMd5)) { + instanceIdGenerator.writeInstanceIdFile(writeNodeInstanceId(condition, elMd5), chain.getChainId()); + } else { + // 文件存在,则直接读取 + Map> executableMap = new HashMap<>(); + for (int i = 1; i < instanceIdFile.size(); i++) { + JsonNode groupKeyAndInstanceIds = parseObject(instanceIdFile.get(i)); + if (groupKeyAndInstanceIds == null) { + continue; + } + + Iterator fieldNames = groupKeyAndInstanceIds.fieldNames(); + while (fieldNames.hasNext()) { + String key = fieldNames.next(); + JsonNode valueNode = groupKeyAndInstanceIds.get(key); + if (valueNode.isArray()) { + List valueList = new ArrayList<>(); + for (int j = 1; j < valueNode.size(); j+=2) { + valueList.add(valueNode.get(j).asText()); + } + executableMap.put(key, valueList); + } + } + } + + condition.getExecutableGroup().forEach((key, executables) -> { + AtomicInteger index = new AtomicInteger(0); + executables.forEach(executable -> { + if (executableMap.containsKey(key)) { + if (executable instanceof Node) { + ((Node) executable).setInstanceId((executableMap.get(key).get(index.getAndIncrement()))); + } + } + }); + }); + } + } + + // 写入时第一行为el的md5,第二行为json格式的groupKey和对应的nodeId 和实例id + private List writeNodeInstanceId(Condition condition, String elMd5) { + ArrayList writeList = new ArrayList<>(); + writeList.add(elMd5); + Map> groupKeyAndInstanceIds = new HashMap<>(); + + condition.getExecutableGroup().forEach((key, executables) -> { + List instanceIds = new ArrayList<>(); + executables.forEach(executable -> { + if (executable instanceof Node) { + ((Node) executable).setInstanceId(generateShortUUID()); + instanceIds.add(executable.getId()); + instanceIds.add(((Node) executable).getInstanceId()); + } + }); + groupKeyAndInstanceIds.put(key, instanceIds); + }); + writeList.add(toJsonString(groupKeyAndInstanceIds)); + + return writeList; + } + +} diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/DefaultInstanceIdGeneratorSpi.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/DefaultInstanceIdGeneratorSpi.java index e7c6e6a52..653397315 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/DefaultInstanceIdGeneratorSpi.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/DefaultInstanceIdGeneratorSpi.java @@ -13,9 +13,9 @@ import static com.yomahub.liteflow.common.ChainConstant.USER_DIR; /** * @author Jay li - * @since 2.12.4 + * @since 2.13.0 */ -public class DefaultInstanceIdGeneratorSpi implements InstanceIdGeneratorSpi { +public class DefaultInstanceIdGeneratorSpi extends BaseInstanceIdGeneratorSpi { private final String basePath = System.getProperty(USER_DIR) + File.separator + NODE_INSTANCE_PATH + File.separator; diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/InstanceIdGeneratorSpi.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/InstanceIdGeneratorSpi.java index ee10af3cf..b957db5ab 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/InstanceIdGeneratorSpi.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/InstanceIdGeneratorSpi.java @@ -1,18 +1,14 @@ package com.yomahub.liteflow.flow.instanceId; -import com.fasterxml.jackson.databind.JsonNode; -import org.apache.commons.lang.StringUtils; +import com.yomahub.liteflow.flow.element.Chain; +import com.yomahub.liteflow.flow.element.Condition; -import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.Map; -import static com.yomahub.liteflow.util.JsonUtil.parseObject; /** * @author Jay li - * @since 2.12.4 + * @since 2.13.0 */ public interface InstanceIdGeneratorSpi { // 拿文件保存路径, 不同插件不同实现 @@ -20,40 +16,12 @@ public interface InstanceIdGeneratorSpi { List readInstanceIdFile(String chainId); // 写入文件保存 - void writeInstanceIdFile(List instanceIdList,String chainId); + void writeInstanceIdFile(List instanceIdList, String chainId); // 根据实例id获取 节点实例定位 - default String getNodeInstanceId(String chainId, String instanceId) { - if (StringUtils.isBlank(chainId) || StringUtils.isBlank(instanceId)) { - return ""; - } + String getNodeInstanceId(String chainId, String instanceId); - List instanceIdFile = readInstanceIdFile(chainId); + // 设置node节点的实例id + void setNodesInstanceId(Condition condition, Chain chain); - for (int i = 1; i < instanceIdFile.size(); i++) { - JsonNode groupKeyAndInstanceIds = parseObject(instanceIdFile.get(i)); - - if (groupKeyAndInstanceIds == null) { - continue; - } - - Iterator fieldNames = groupKeyAndInstanceIds.fieldNames(); - while (fieldNames.hasNext()) { - String key = fieldNames.next(); - JsonNode valueNode = groupKeyAndInstanceIds.get(key); - if (valueNode.isArray()) { - Map map = new HashMap<>(); - for (int j = 1; j < valueNode.size(); j+=2) { - String nodeId = valueNode.get(j - 1).asText(); - map.put(nodeId, map.getOrDefault(nodeId, -1)+1); - if (instanceId.equals(valueNode.get(j).asText())) { - return nodeId + "(" + (map.get(nodeId)) + ")"; - } - } - } - } - } - - return ""; - } -} +} \ No newline at end of file diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/InstanceIdGeneratorHolder.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/NodeInstanceIdManageSpi.java similarity index 82% rename from liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/InstanceIdGeneratorHolder.java rename to liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/NodeInstanceIdManageSpi.java index 8dc89cfa1..5376067df 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/InstanceIdGeneratorHolder.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/instanceId/NodeInstanceIdManageSpi.java @@ -7,12 +7,12 @@ import java.util.ServiceLoader; /** * @author Jay li - * @since 2.12.4 + * @since 2.13.0 */ -public class InstanceIdGeneratorHolder { +public class NodeInstanceIdManageSpi { private InstanceIdGeneratorSpi instanceIdGenerator; - private static final InstanceIdGeneratorHolder INSTANCE = new InstanceIdGeneratorHolder(); + private static final NodeInstanceIdManageSpi INSTANCE = new NodeInstanceIdManageSpi(); public static void init() { ServiceLoader loader = ServiceLoader.load(InstanceIdGeneratorSpi.class); @@ -24,7 +24,7 @@ public class InstanceIdGeneratorHolder { } } - public static InstanceIdGeneratorHolder getInstance() { + public static NodeInstanceIdManageSpi getInstance() { return INSTANCE; } diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/spi/instanceId/SqlInstanceIdGeneratorSpi.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/spi/instanceId/SqlInstanceIdGeneratorSpi.java index c84c78953..7e8b61b93 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/spi/instanceId/SqlInstanceIdGeneratorSpi.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/spi/instanceId/SqlInstanceIdGeneratorSpi.java @@ -2,7 +2,7 @@ package com.yomahub.liteflow.parser.spi.instanceId; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; -import com.yomahub.liteflow.flow.instanceId.InstanceIdGeneratorSpi; +import com.yomahub.liteflow.flow.instanceId.BaseInstanceIdGeneratorSpi; import com.yomahub.liteflow.parser.constant.ReadType; import com.yomahub.liteflow.parser.constant.SqlReadConstant; import com.yomahub.liteflow.parser.sql.read.SqlRead; @@ -22,7 +22,8 @@ import java.util.List; * @since 2.12.4 */ -public class SqlInstanceIdGeneratorSpi implements InstanceIdGeneratorSpi { +public class SqlInstanceIdGeneratorSpi extends BaseInstanceIdGeneratorSpi { + @Override public List readInstanceIdFile(String chainId) { SqlRead insIdRead = SqlReadFactory.getSqlRead(ReadType.INSTANCE_ID); @@ -41,11 +42,11 @@ public class SqlInstanceIdGeneratorSpi implements InstanceIdGeneratorSpi { SQLParserVO conf = jdbcHelper.getSqlParserVO(); String insertSql = StrUtil.format(SqlReadConstant.INSTANT_INSERT_SQL, conf.getInstanceIdTableName(), conf.getInstanceIdApplicationNameField(), - conf.getGroupKeyInstanceIdField(), conf.getElDataMd5Field(), conf.getInstanceChainNameField(), conf.getApplicationName(), instanceIdList.get(1), + conf.getGroupKeyInstanceIdField(), conf.getElDataMd5Field(), conf.getInstanceChainIdField(), conf.getApplicationName(), instanceIdList.get(1), instanceIdList.get(0), chainId); String updateSql = StrUtil.format(SqlReadConstant.INSTANT_UPDATE_SQL, conf.getInstanceIdTableName(), conf.getElDataMd5Field(), instanceIdList.get(0), conf.getGroupKeyInstanceIdField(), instanceIdList.get(1), conf.getChainNameField(), chainId, conf.getInstanceIdApplicationNameField(), conf.getApplicationName()); - String selectSql = StrUtil.format(SqlReadConstant.INSTANT_SELECT_SQL, conf.getInstanceIdTableName(), conf.getInstanceChainNameField(), chainId, + String selectSql = StrUtil.format(SqlReadConstant.INSTANT_SELECT_SQL, conf.getInstanceIdTableName(), conf.getInstanceChainIdField(), chainId, conf.getInstanceIdApplicationNameField(), conf.getApplicationName()); jdbcHelper.executeUpsert(selectSql, insertSql, updateSql); diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/InstanceIdRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/InstanceIdRead.java index 9cb0adfb4..288808164 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/InstanceIdRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/InstanceIdRead.java @@ -26,7 +26,7 @@ public class InstanceIdRead extends AbstractSqlRead { @Override protected InstanceIdVO parse(ResultSet rs) throws SQLException { InstanceIdVO idVO = new InstanceIdVO(); - idVO.setChainName(getStringFromRsWithCheck(rs, super.config.getInstanceChainNameField())); + idVO.setChainId(getStringFromRsWithCheck(rs, super.config.getInstanceChainIdField())); idVO.setElDataMd5(getStringFromRsWithCheck(rs, super.config.getElDataMd5Field())); idVO.setGroupKeyInstanceId(getStringFromRsWithCheck(rs, super.config.getGroupKeyInstanceIdField())); return idVO; @@ -45,7 +45,7 @@ public class InstanceIdRead extends AbstractSqlRead { @Override public String buildQuerySql(String... exceptions) { String tableName = super.config.getInstanceIdTableName(); - String chainNameField = super.config.getInstanceChainNameField(); + String chainNameField = super.config.getInstanceChainIdField(); if (ArrayUtil.isEmpty(exceptions)) { throw new IllegalArgumentException("You did not define the chainName"); @@ -56,7 +56,7 @@ public class InstanceIdRead extends AbstractSqlRead { @Override public void checkConfig() { String tableName = super.config.getInstanceIdTableName(); - String chainNameField = super.config.getInstanceChainNameField(); + String chainNameField = super.config.getInstanceChainIdField(); if (StrUtil.isBlank(tableName)) { throw new ELSQLException("You did not define the tableName property"); } diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/vo/InstanceIdVO.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/vo/InstanceIdVO.java index 5301641f6..c2bdeec8b 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/vo/InstanceIdVO.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/vo/InstanceIdVO.java @@ -7,18 +7,18 @@ package com.yomahub.liteflow.parser.sql.read.vo; public class InstanceIdVO { - private String chainName; + private String chainId; private String elDataMd5; private String groupKeyInstanceId; - public String getChainName() { - return chainName; + public String getChainId() { + return chainId; } - public void setChainName(String chainName) { - this.chainName = chainName; + public void setChainId(String chainId) { + this.chainId = chainId; } public String getElDataMd5() { diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/vo/SQLParserVO.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/vo/SQLParserVO.java index 680392102..c52f86c81 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/vo/SQLParserVO.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/vo/SQLParserVO.java @@ -67,9 +67,9 @@ public class SQLParserVO { */ private String instanceIdApplicationNameField = "application_name"; /** - * instanceId 里的 chainName 字段 + * instanceId 里的 chainId 字段 */ - private String instanceChainNameField = "chain_name"; + private String instanceChainIdField = "chain_id"; /** * el md5 @@ -423,12 +423,12 @@ public class SQLParserVO { return instanceIdTableName; } - public String getInstanceChainNameField() { - return instanceChainNameField; + public String getInstanceChainIdField() { + return instanceChainIdField; } - public void setInstanceChainNameField(String instanceChainNameField) { - this.instanceChainNameField = instanceChainNameField; + public void setInstanceChainIdField(String instanceChainIdField) { + this.instanceChainIdField = instanceChainIdField; } public void setInstanceIdTableName(String instanceIdTableName) { diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/instanceIds/InstanceIdELSpringTest.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/instanceIds/InstanceIdELSpringTest.java index 395b5bf17..1f62a1947 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/instanceIds/InstanceIdELSpringTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/instanceIds/InstanceIdELSpringTest.java @@ -2,8 +2,8 @@ package com.yomahub.liteflow.test.instanceIds; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; -import com.yomahub.liteflow.flow.instanceId.InstanceIdGeneratorHolder; import com.yomahub.liteflow.flow.instanceId.InstanceIdGeneratorSpi; +import com.yomahub.liteflow.flow.instanceId.NodeInstanceIdManageSpi; import com.yomahub.liteflow.test.BaseTest; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -80,7 +80,7 @@ public class InstanceIdELSpringTest extends BaseTest { String executeStepStrWithInstanceId = response.getExecuteStepStrWithInstanceId(); List strings = extractValuesList(executeStepStrWithInstanceId); - InstanceIdGeneratorSpi instanceIdGenerator = InstanceIdGeneratorHolder.getInstance().getInstanceIdGenerator(); + InstanceIdGeneratorSpi instanceIdGenerator = NodeInstanceIdManageSpi.getInstance().getInstanceIdGenerator(); for (int i = 0; i < strings.size(); i++) { Assertions.assertEquals(instanceIdGenerator.getNodeInstanceId("chain2", strings.get(i)), "a(" + i + ")"); diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/sqlInstanceId/SQLWithXmlELInstanceIdSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/sqlInstanceId/SQLWithXmlELInstanceIdSpringbootTest.java index 7ad62d83f..e8f32ee8c 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/sqlInstanceId/SQLWithXmlELInstanceIdSpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/sqlInstanceId/SQLWithXmlELInstanceIdSpringbootTest.java @@ -2,8 +2,8 @@ package com.yomahub.liteflow.test.sqlInstanceId; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; -import com.yomahub.liteflow.flow.instanceId.InstanceIdGeneratorHolder; import com.yomahub.liteflow.flow.instanceId.InstanceIdGeneratorSpi; +import com.yomahub.liteflow.flow.instanceId.NodeInstanceIdManageSpi; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; import com.yomahub.liteflow.parser.sql.vo.SQLParserVO; import com.yomahub.liteflow.property.LiteflowConfig; @@ -28,7 +28,6 @@ import java.sql.*; import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -83,7 +82,7 @@ public class SQLWithXmlELInstanceIdSpringbootTest extends BaseTest { String executeStepStrWithInstanceId = response.getExecuteStepStrWithInstanceId(); List strings = extractValuesList(executeStepStrWithInstanceId); - InstanceIdGeneratorSpi instanceIdGenerator = InstanceIdGeneratorHolder.getInstance().getInstanceIdGenerator(); + InstanceIdGeneratorSpi instanceIdGenerator = NodeInstanceIdManageSpi.getInstance().getInstanceIdGenerator(); String[] nodes = new String[]{"c", "b", "a"}; for (int i = 0; i < strings.size(); i++) { @@ -114,7 +113,7 @@ public class SQLWithXmlELInstanceIdSpringbootTest extends BaseTest { sqlParserVO.getPassword()); Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery("select * from NODE_INSTANCE_ID_TABLE where APPLICATION_NAME = 'demo' " + - "and CHAIN_NAME = '" + chainId + "' "); + "and chain_id = '" + chainId + "' "); String res = ""; while (rs.next()) { diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/schema.sql b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/schema.sql index a4d86288e..582ace9d9 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/schema.sql +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/schema.sql @@ -26,7 +26,7 @@ create table IF NOT EXISTS `node_instance_id_table` ( `id` bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, `application_name` varchar(32) NOT NULL, - `chain_name` varchar(32) NOT NULL, + `chain_id` varchar(32) NOT NULL, `el_data_md5` varchar(128) NOT NULL, `group_key_instance_id` varchar(1024) NOT NULL, PRIMARY KEY (`id`)