From 689ef2e6d53651f23549b39de6586294a3fe318d Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Sat, 24 Aug 2024 13:52:08 +0800 Subject: [PATCH 01/13] =?UTF-8?q?feature=20#I9H6GY=20SQL=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=9C=A8=E9=85=8D=E7=BD=AE=E4=B8=8A=E6=94=AF=E6=8C=81=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9A=84=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/constant/SqlReadConstant.java | 2 + .../parser/sql/read/AbstractSqlRead.java | 6 ++- .../parser/sql/read/impl/ChainRead.java | 22 +++++++---- .../liteflow/parser/sql/vo/SQLParserVO.java | 26 +++++++++++++ ...SQLWithXmlELWithSuffix2SpringbootTest.java | 38 +++++++++++++++++++ .../SQLWithXmlELWithSuffixSpringbootTest.java | 37 ++++++++++++++++++ ...ion-data-source-with-suffix-xml.properties | 23 +++++++++++ ...on-data-source-with-suffix2-xml.properties | 23 +++++++++++ .../src/test/resources/sql/data.sql | 2 + .../src/test/resources/sql/schema.sql | 1 + 10 files changed, 170 insertions(+), 10 deletions(-) create mode 100644 liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties create mode 100644 liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java index 6cc4015db..5f07cdd2a 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java @@ -12,6 +12,8 @@ public class SqlReadConstant { public static final String SQL_PATTERN = "SELECT * FROM {} WHERE {}=?"; + public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {}=?"; + public static final String SCRIPT_SQL_CHECK_PATTERN = "SELECT 1 FROM {} "; public static final String SCRIPT_SQL_PATTERN = "SELECT * FROM {} WHERE {}=?"; diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java index 599815897..7acd9f76c 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java @@ -10,9 +10,7 @@ import com.yomahub.liteflow.parser.sql.vo.SQLParserVO; import java.sql.*; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * sql 读取抽象类,维护公共方法 @@ -53,6 +51,10 @@ public abstract class AbstractSqlRead implements SqlRead { stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX); stmt.setString(1, config.getApplicationName()); + if (sqlCmd.contains(config.getChainSuffixTypeField()) && StrUtil.isNotBlank(config.getChainSuffixType())) { + stmt.setString(2, config.getChainSuffixType()); + } + rs = stmt.executeQuery(); while (rs.next()) { diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index b7ce9ef97..dffe02ee7 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -29,10 +29,10 @@ public class ChainRead extends AbstractSqlRead { ChainVO chainVO = new ChainVO(); chainVO.setChainId(getStringFromRsWithCheck(rs, super.config.getChainNameField())); chainVO.setBody(getStringFromRsWithCheck(rs, super.config.getElDataField())); - if (StrUtil.isNotBlank(super.config.getNamespaceField())){ + if (StrUtil.isNotBlank(super.config.getNamespaceField())) { chainVO.setNamespace(getStringFromRs(rs, super.config.getNamespaceField())); } - if (StrUtil.isNotBlank(super.config.getRouteField())){ + if (StrUtil.isNotBlank(super.config.getRouteField())) { chainVO.setRoute(getStringFromRs(rs, super.config.getRouteField())); } return chainVO; @@ -56,8 +56,14 @@ public class ChainRead extends AbstractSqlRead { public String buildQuerySql() { String chainTableName = super.config.getChainTableName(); String chainApplicationNameField = super.config.getChainApplicationNameField(); + String chainSuffixTypeField = super.config.getChainSuffixTypeField(); - return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField); + if (StrUtil.isNotBlank(chainSuffixTypeField)) { + return StrUtil.format(SqlReadConstant.SQL_PATTERN_WITH_SUFFIX, chainTableName, + chainApplicationNameField, chainSuffixTypeField); + } else { + return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField); + } } @Override @@ -68,19 +74,19 @@ public class ChainRead extends AbstractSqlRead { String chainApplicationNameField = super.config.getChainApplicationNameField(); String applicationName = super.config.getApplicationName(); - if (StrUtil.isBlank(chainTableName)){ + if (StrUtil.isBlank(chainTableName)) { throw new ELSQLException("You did not define the chainTableName property"); } - if (StrUtil.isBlank(elDataField)){ + if (StrUtil.isBlank(elDataField)) { throw new ELSQLException("You did not define the elDataField property"); } - if (StrUtil.isBlank(chainNameField)){ + if (StrUtil.isBlank(chainNameField)) { throw new ELSQLException("You did not define the chainNameField property"); } - if (StrUtil.isBlank(chainApplicationNameField)){ + if (StrUtil.isBlank(chainApplicationNameField)) { throw new ELSQLException("You did not define the chainApplicationNameField property"); } - if (StrUtil.isBlank(applicationName)){ + if (StrUtil.isBlank(applicationName)) { throw new ELSQLException("You did not define the applicationName property"); } } 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 c654df2a1..0c2a0f430 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 @@ -71,6 +71,16 @@ public class SQLParserVO { */ private String chainEnableField; + /** + * chain 后缀 + */ + private String chainSuffixType; + + /** + * chain 后缀字段名 + */ + private String chainSuffixTypeField = "chain_suffix_type"; + /** * 脚本 node 表名 */ @@ -336,4 +346,20 @@ public class SQLParserVO { public void setNamespaceField(String namespaceField) { this.namespaceField = namespaceField; } + + public String getChainSuffixType() { + return chainSuffixType; + } + + public void setChainSuffixType(String chainSuffixType) { + this.chainSuffixType = chainSuffixType; + } + + public String getChainSuffixTypeField() { + return chainSuffixTypeField; + } + + public void setChainSuffixTypeField(String chainSuffixTypeField) { + this.chainSuffixTypeField = chainSuffixTypeField; + } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java new file mode 100644 index 000000000..310d78951 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java @@ -0,0 +1,38 @@ +package com.yomahub.liteflow.test.withSuffix; + +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import javax.annotation.Resource; +import javax.sql.DataSource; + +/** + * @author jay li + * @since 2.12.0 + */ +@ExtendWith(SpringExtension.class) +@TestPropertySource(value = "classpath:/application-data-source-with-suffix2-xml.properties") +@SpringBootTest(classes = SQLWithXmlELWithSuffix2SpringbootTest.class) +@EnableAutoConfiguration +@ComponentScan({"com.yomahub.liteflow.test.sql.cmp"}) +public class SQLWithXmlELWithSuffix2SpringbootTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + @Test + public void testSQLWithXmlChain1() { + LiteflowResponse response = flowExecutor.execute2Resp("r_chain1", "arg"); + Assertions.assertEquals("c==>b==>a", response.getExecuteStepStr()); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java new file mode 100644 index 000000000..d05791dc2 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java @@ -0,0 +1,37 @@ +package com.yomahub.liteflow.test.withSuffix; + +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.test.BaseTest; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import javax.annotation.Resource; +import javax.sql.DataSource; + +/** + * @author jay li + * @since 2.12.0 + */ +@ExtendWith(SpringExtension.class) +@TestPropertySource(value = "classpath:/application-data-source-with-suffix-xml.properties") +@SpringBootTest(classes = SQLWithXmlELWithSuffixSpringbootTest.class) +@EnableAutoConfiguration +@ComponentScan({"com.yomahub.liteflow.test.sql.cmp"}) +public class SQLWithXmlELWithSuffixSpringbootTest extends BaseTest { + + @Resource + private FlowExecutor flowExecutor; + + @Test + public void testSQLWithXmlChain1() { + LiteflowResponse response = flowExecutor.execute2Resp("r_chain1", "arg"); + Assertions.assertEquals("a==>b==>c", response.getExecuteStepStr()); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties new file mode 100644 index 000000000..c1cfe009f --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties @@ -0,0 +1,23 @@ +liteflow.rule-source-ext-data={\ + "applicationName":"demo",\ + "chainTableName":"EL_TABLE",\ + "chainApplicationNameField":"application_name",\ + "chainNameField":"chain_name",\ + "chainSuffixTypeField":"chain_suffix_type",\ + "chainSuffixType":"biz1",\ + "elDataField":"EL_DATA",\ + "scriptTableName":"script_node_table",\ + "scriptApplicationNameField":"application_name",\ + "scriptIdField":"script_node_id",\ + "scriptNameField":"script_node_name",\ + "scriptDataField":"script_node_data",\ + "scriptLanguageField":"script_language",\ + "scriptTypeField":"script_node_type"\ + } +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.url=jdbc:h2:mem:test_db;MODE=MySQL +spring.datasource.username=root +spring.datasource.password=123456 +spring.datasource.schema=classpath:/sql/schema.sql +spring.datasource.data=classpath:/sql/data.sql +spring.datasource.platform=h2 \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties new file mode 100644 index 000000000..93ef74aa5 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties @@ -0,0 +1,23 @@ +liteflow.rule-source-ext-data={\ + "applicationName":"demo",\ + "chainTableName":"EL_TABLE",\ + "chainApplicationNameField":"application_name",\ + "chainNameField":"chain_name",\ + "chainSuffixTypeField":"chain_suffix_type",\ + "chainSuffixType":"biz2",\ + "elDataField":"EL_DATA",\ + "scriptTableName":"script_node_table",\ + "scriptApplicationNameField":"application_name",\ + "scriptIdField":"script_node_id",\ + "scriptNameField":"script_node_name",\ + "scriptDataField":"script_node_data",\ + "scriptLanguageField":"script_language",\ + "scriptTypeField":"script_node_type"\ + } +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.url=jdbc:h2:mem:test_db;MODE=MySQL +spring.datasource.username=root +spring.datasource.password=123456 +spring.datasource.schema=classpath:/sql/schema.sql +spring.datasource.data=classpath:/sql/data.sql +spring.datasource.platform=h2 \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql index e885458bf..c4df6d8be 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql @@ -7,6 +7,8 @@ INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA) values ('demo',' Date: Sun, 25 Aug 2024 10:01:54 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=90=8E=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yomahub/liteflow/parser/constant/SqlReadConstant.java | 2 +- .../com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java index 5f07cdd2a..ae2817368 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java @@ -12,7 +12,7 @@ public class SqlReadConstant { public static final String SQL_PATTERN = "SELECT * FROM {} WHERE {}=?"; - public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {}=?"; + public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {} LIKE ? "; public static final String SCRIPT_SQL_CHECK_PATTERN = "SELECT 1 FROM {} "; diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java index 7acd9f76c..b41a3957b 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java @@ -52,7 +52,7 @@ public abstract class AbstractSqlRead implements SqlRead { stmt.setString(1, config.getApplicationName()); if (sqlCmd.contains(config.getChainSuffixTypeField()) && StrUtil.isNotBlank(config.getChainSuffixType())) { - stmt.setString(2, config.getChainSuffixType()); + stmt.setString(2, "%" + config.getChainSuffixType()); } rs = stmt.executeQuery(); -- Gitee From c636847ce6bf20e32d0d46edbfba72fcc2a7a385 Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Mon, 26 Aug 2024 22:56:44 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/constant/SqlReadConstant.java | 2 +- .../parser/sql/read/AbstractSqlRead.java | 4 +- .../parser/sql/read/impl/ChainRead.java | 8 ++-- .../liteflow/parser/sql/vo/SQLParserVO.java | 37 +++++++++++++------ ...ion-data-source-with-suffix-xml.properties | 5 ++- ...on-data-source-with-suffix2-xml.properties | 5 ++- .../src/test/resources/sql/data.sql | 4 +- .../src/test/resources/sql/schema.sql | 2 +- 8 files changed, 41 insertions(+), 26 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java index ae2817368..5351be539 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java @@ -12,7 +12,7 @@ public class SqlReadConstant { public static final String SQL_PATTERN = "SELECT * FROM {} WHERE {}=?"; - public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {} LIKE ? "; + public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {} {} ?"; public static final String SCRIPT_SQL_CHECK_PATTERN = "SELECT 1 FROM {} "; diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java index b41a3957b..1bf6a75da 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java @@ -51,8 +51,8 @@ public abstract class AbstractSqlRead implements SqlRead { stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX); stmt.setString(1, config.getApplicationName()); - if (sqlCmd.contains(config.getChainSuffixTypeField()) && StrUtil.isNotBlank(config.getChainSuffixType())) { - stmt.setString(2, "%" + config.getChainSuffixType()); + if (sqlCmd.contains(config.getCustomFilterTypeField()) && StrUtil.isNotBlank(config.getCustomFilterType())) { + stmt.setString(2, config.getCustomFilterType()); } rs = stmt.executeQuery(); diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index dffe02ee7..bb18c9f9b 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -56,11 +56,11 @@ public class ChainRead extends AbstractSqlRead { public String buildQuerySql() { String chainTableName = super.config.getChainTableName(); String chainApplicationNameField = super.config.getChainApplicationNameField(); - String chainSuffixTypeField = super.config.getChainSuffixTypeField(); - - if (StrUtil.isNotBlank(chainSuffixTypeField)) { + String chainSuffixTypeField = super.config.getCustomFilterTypeField(); + String chainSuffixOperator = super.config.getCustomFilterOperator(); + if (StrUtil.isNotBlank(chainSuffixTypeField) && StrUtil.isNotBlank(chainSuffixOperator)) { return StrUtil.format(SqlReadConstant.SQL_PATTERN_WITH_SUFFIX, chainTableName, - chainApplicationNameField, chainSuffixTypeField); + chainApplicationNameField, chainSuffixTypeField, chainSuffixOperator); } else { return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField); } 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 0c2a0f430..32c01ef94 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 @@ -72,14 +72,19 @@ public class SQLParserVO { private String chainEnableField; /** - * chain 后缀 + * 自定义过滤值 */ - private String chainSuffixType; + private String customFilterType; /** - * chain 后缀字段名 + * 自定义过滤操作符 */ - private String chainSuffixTypeField = "chain_suffix_type"; + private String customFilterOperator; + + /** + * 自定义过滤字段名 + */ + private String customFilterTypeField = "custom_filter_type"; /** * 脚本 node 表名 @@ -347,19 +352,27 @@ public class SQLParserVO { this.namespaceField = namespaceField; } - public String getChainSuffixType() { - return chainSuffixType; + public String getCustomFilterType() { + return customFilterType; + } + + public void setCustomFilterType(String customFilterType) { + this.customFilterType = customFilterType; + } + + public String getCustomFilterTypeField() { + return customFilterTypeField; } - public void setChainSuffixType(String chainSuffixType) { - this.chainSuffixType = chainSuffixType; + public void setCustomFilterTypeField(String customFilterTypeField) { + this.customFilterTypeField = customFilterTypeField; } - public String getChainSuffixTypeField() { - return chainSuffixTypeField; + public String getCustomFilterOperator() { + return customFilterOperator; } - public void setChainSuffixTypeField(String chainSuffixTypeField) { - this.chainSuffixTypeField = chainSuffixTypeField; + public void setCustomFilterOperator(String customFilterOperator) { + this.customFilterOperator = customFilterOperator; } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties index c1cfe009f..3446ccc5f 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties @@ -3,8 +3,9 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "chainSuffixTypeField":"chain_suffix_type",\ - "chainSuffixType":"biz1",\ + "customFilterTypeField":"custom_filter_type",\ + "customFilterOperator":"LIKE",\ + "customFilterType":"%biz1",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties index 93ef74aa5..914c96a3c 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties @@ -3,8 +3,9 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "chainSuffixTypeField":"chain_suffix_type",\ - "chainSuffixType":"biz2",\ + "customFilterTypeField":"custom_filter_type",\ + "customFilterOperator":"LIKE",\ + "customFilterType":"%biz2",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql index c4df6d8be..81f380cf7 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql @@ -7,8 +7,8 @@ INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA) values ('demo',' Date: Thu, 29 Aug 2024 08:42:16 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/constant/SqlReadConstant.java | 2 +- .../parser/sql/read/AbstractSqlRead.java | 4 --- .../parser/sql/read/impl/ChainRead.java | 8 +++--- .../liteflow/parser/sql/vo/SQLParserVO.java | 26 ------------------- ...ion-data-source-with-suffix-xml.properties | 4 +-- ...on-data-source-with-suffix2-xml.properties | 4 +-- 6 files changed, 7 insertions(+), 41 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java index 5351be539..50dd26531 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java @@ -12,7 +12,7 @@ public class SqlReadConstant { public static final String SQL_PATTERN = "SELECT * FROM {} WHERE {}=?"; - public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {} {} ?"; + public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {}"; public static final String SCRIPT_SQL_CHECK_PATTERN = "SELECT 1 FROM {} "; diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java index 1bf6a75da..6fa0a17af 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java @@ -51,10 +51,6 @@ public abstract class AbstractSqlRead implements SqlRead { stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX); stmt.setString(1, config.getApplicationName()); - if (sqlCmd.contains(config.getCustomFilterTypeField()) && StrUtil.isNotBlank(config.getCustomFilterType())) { - stmt.setString(2, config.getCustomFilterType()); - } - rs = stmt.executeQuery(); while (rs.next()) { diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index bb18c9f9b..af5217bce 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -56,11 +56,11 @@ public class ChainRead extends AbstractSqlRead { public String buildQuerySql() { String chainTableName = super.config.getChainTableName(); String chainApplicationNameField = super.config.getChainApplicationNameField(); - String chainSuffixTypeField = super.config.getCustomFilterTypeField(); - String chainSuffixOperator = super.config.getCustomFilterOperator(); - if (StrUtil.isNotBlank(chainSuffixTypeField) && StrUtil.isNotBlank(chainSuffixOperator)) { + String customFilterType = super.config.getCustomFilterType(); + + if (StrUtil.isNotBlank(customFilterType)) { return StrUtil.format(SqlReadConstant.SQL_PATTERN_WITH_SUFFIX, chainTableName, - chainApplicationNameField, chainSuffixTypeField, chainSuffixOperator); + chainApplicationNameField, customFilterType); } else { return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField); } 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 32c01ef94..ac89d3b91 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 @@ -76,16 +76,6 @@ public class SQLParserVO { */ private String customFilterType; - /** - * 自定义过滤操作符 - */ - private String customFilterOperator; - - /** - * 自定义过滤字段名 - */ - private String customFilterTypeField = "custom_filter_type"; - /** * 脚本 node 表名 */ @@ -359,20 +349,4 @@ public class SQLParserVO { public void setCustomFilterType(String customFilterType) { this.customFilterType = customFilterType; } - - public String getCustomFilterTypeField() { - return customFilterTypeField; - } - - public void setCustomFilterTypeField(String customFilterTypeField) { - this.customFilterTypeField = customFilterTypeField; - } - - public String getCustomFilterOperator() { - return customFilterOperator; - } - - public void setCustomFilterOperator(String customFilterOperator) { - this.customFilterOperator = customFilterOperator; - } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties index 3446ccc5f..ab289223f 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties @@ -3,9 +3,7 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "customFilterTypeField":"custom_filter_type",\ - "customFilterOperator":"LIKE",\ - "customFilterType":"%biz1",\ + "customFilterType":"custom_filter_type = 'biz1'",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties index 914c96a3c..09e7a7102 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties @@ -3,9 +3,7 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "customFilterTypeField":"custom_filter_type",\ - "customFilterOperator":"LIKE",\ - "customFilterType":"%biz2",\ + "customFilterType":"custom_filter_type = 'biz2' ",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ -- Gitee From 923b3371ceced4d9d508ce4d98674a8d12b5e5f5 Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Fri, 30 Aug 2024 09:24:47 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/parser/sql/read/impl/ChainRead.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index af5217bce..f4dd72558 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -59,8 +59,15 @@ public class ChainRead extends AbstractSqlRead { String customFilterType = super.config.getCustomFilterType(); if (StrUtil.isNotBlank(customFilterType)) { + String replace = customFilterType.replace("where", "").replace("WHERE", ""); + String trim = replace.trim(); + + if (trim.startsWith("AND") || trim.startsWith("and")) { + trim = trim.substring(3); + } + return StrUtil.format(SqlReadConstant.SQL_PATTERN_WITH_SUFFIX, chainTableName, - chainApplicationNameField, customFilterType); + chainApplicationNameField, trim); } else { return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField); } -- Gitee From d8d1c3935342a332b2af1d252473fde850a518a2 Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Sat, 31 Aug 2024 21:51:16 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=AE=9E=E7=8E=B0=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?chain?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/sql/read/CustomSqlRead.java | 8 +++++ .../liteflow/parser/sql/util/JDBCHelper.java | 16 +++++++--- ...SQLWithXmlELWithSuffix2SpringbootTest.java | 30 ++++++++++++++++++- 3 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java new file mode 100644 index 000000000..83532797f --- /dev/null +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java @@ -0,0 +1,8 @@ +package com.yomahub.liteflow.parser.sql.read; + +import java.util.List; + + +public interface CustomSqlRead { + List getCustomChain(); +} diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java index 7dd44dc95..18aa85fe6 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.parser.sql.util; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.thread.NamedThreadFactory; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -9,15 +10,15 @@ import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; import com.yomahub.liteflow.parser.constant.ReadType; -import com.yomahub.liteflow.parser.helper.NodeConvertHelper; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; import com.yomahub.liteflow.parser.sql.polling.SqlReadPollTask; -import com.yomahub.liteflow.parser.sql.read.AbstractSqlRead; +import com.yomahub.liteflow.parser.sql.read.CustomSqlRead; import com.yomahub.liteflow.parser.sql.read.SqlRead; import com.yomahub.liteflow.parser.sql.read.SqlReadFactory; import com.yomahub.liteflow.parser.sql.read.vo.ChainVO; import com.yomahub.liteflow.parser.sql.read.vo.ScriptVO; import com.yomahub.liteflow.parser.sql.vo.SQLParserVO; +import com.yomahub.liteflow.spi.holder.ContextAwareHolder; import org.apache.commons.lang.StringUtils; import java.util.*; @@ -25,8 +26,6 @@ import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; -import java.util.function.Consumer; -import java.util.function.Predicate; import static com.yomahub.liteflow.parser.constant.SqlReadConstant.*; @@ -42,6 +41,8 @@ public class JDBCHelper { private static JDBCHelper INSTANCE; + private CustomSqlRead customSqlRead; + /** * 定时任务线程池核心线程数 */ @@ -95,6 +96,13 @@ public class JDBCHelper { // 获取 chain 数据 List chainVOList = chainRead.read(); + if (ContextAwareHolder.loadContextAware().hasBean("CustomSqlRead")) { + this.customSqlRead = ContextAwareHolder.loadContextAware().getBean("CustomSqlRead"); + List customChain = customSqlRead.getCustomChain(); + if (CollectionUtil.isNotEmpty(customChain)) { + chainVOList = customChain; + } + } List chainList = new ArrayList<>(); chainVOList.forEach( diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java index 310d78951..ef0c6ddad 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java @@ -2,18 +2,27 @@ package com.yomahub.liteflow.test.withSuffix; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; +import com.yomahub.liteflow.parser.sql.read.CustomSqlRead; +import com.yomahub.liteflow.parser.sql.read.vo.ChainVO; import com.yomahub.liteflow.test.BaseTest; +import com.yomahub.liteflow.test.sqlroute.cmp.CustomChainImpl; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import javax.annotation.Resource; -import javax.sql.DataSource; + +import java.util.Collections; +import java.util.List; + +import static org.mockito.Mockito.when; /** * @author jay li @@ -26,6 +35,9 @@ import javax.sql.DataSource; @ComponentScan({"com.yomahub.liteflow.test.sql.cmp"}) public class SQLWithXmlELWithSuffix2SpringbootTest extends BaseTest { + @MockBean(name = "CustomSqlRead") + private static CustomSqlRead customChain; + @Resource private FlowExecutor flowExecutor; @@ -35,4 +47,20 @@ public class SQLWithXmlELWithSuffix2SpringbootTest extends BaseTest { Assertions.assertEquals("c==>b==>a", response.getExecuteStepStr()); } + + @Test + public void testSQLWithXmlChain2() { + ChainVO chainVO = new ChainVO(); + chainVO.setChainId("r_chain1"); + chainVO.setBody("THEN(c,a,b);"); + + List chainVOS = Collections.singletonList(chainVO); + + when(customChain.getCustomChain()).thenReturn(chainVOS); + + flowExecutor.init(false); + + LiteflowResponse response = flowExecutor.execute2Resp("r_chain1", "arg"); + Assertions.assertEquals("c==>a==>b", response.getExecuteStepStr()); + } } -- Gitee From 60b6675d115d38ab5d06b1c31e88cc44a0792536 Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Sat, 31 Aug 2024 21:57:38 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E5=87=BA=E9=94=99=E7=9A=84=E7=94=A8=E6=88=B7=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/parser/sql/read/impl/ChainRead.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index f4dd72558..10c09ce78 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -59,10 +59,12 @@ public class ChainRead extends AbstractSqlRead { String customFilterType = super.config.getCustomFilterType(); if (StrUtil.isNotBlank(customFilterType)) { - String replace = customFilterType.replace("where", "").replace("WHERE", ""); - String trim = replace.trim(); + String trim = customFilterType.trim(); + if (trim.startsWith("where ") || trim.startsWith("WHERE ")) { + trim = trim.substring(5).trim(); + } - if (trim.startsWith("AND") || trim.startsWith("and")) { + if (trim.startsWith("AND ") || trim.startsWith("and ")) { trim = trim.substring(3); } -- Gitee From 01f5c3734c936c62fd4ba4a5d500e750e321106d Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Sun, 1 Sep 2024 21:54:50 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E8=A7=84=E8=8C=83=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteflow/parser/sql/SQLXmlELParser.java | 14 +++++++++++ .../parser/sql/read/AbstractSqlRead.java | 5 +++- .../parser/sql/read/CustomSqlRead.java | 6 ++--- .../parser/sql/read/impl/ChainRead.java | 20 +++++++++------ .../liteflow/parser/sql/util/JDBCHelper.java | 9 ------- .../liteflow/parser/sql/vo/SQLParserVO.java | 25 ++++++++++++++----- ...SQLWithXmlELWithSuffix2SpringbootTest.java | 19 +++----------- ...ion-data-source-with-suffix-xml.properties | 2 +- ...on-data-source-with-suffix2-xml.properties | 2 +- 9 files changed, 56 insertions(+), 46 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java index a758fd606..655d21a26 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java @@ -9,11 +9,13 @@ import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.parser.constant.ReadType; import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; +import com.yomahub.liteflow.parser.sql.read.CustomSqlRead; import com.yomahub.liteflow.parser.sql.read.SqlReadFactory; import com.yomahub.liteflow.parser.sql.util.JDBCHelper; import com.yomahub.liteflow.parser.sql.vo.SQLParserVO; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.property.LiteflowConfigGetter; +import com.yomahub.liteflow.spi.holder.ContextAwareHolder; import com.yomahub.liteflow.util.JsonUtil; import java.util.Objects; @@ -32,6 +34,9 @@ public class SQLXmlELParser extends ClassXmlFlowELParser { private static final String ERROR_COMMON_MSG = "rule-source-ext-data is empty"; + // 返回用户接口自定义sql + private CustomSqlRead customSqlRead; + /** * 构造函数 */ @@ -49,6 +54,15 @@ public class SQLXmlELParser extends ClassXmlFlowELParser { throw new ELSQLException(ERROR_COMMON_MSG); } + // 自定义sql + if (ContextAwareHolder.loadContextAware().hasBean("CustomSqlRead")) { + this.customSqlRead = ContextAwareHolder.loadContextAware().getBean("CustomSqlRead"); + String customChainSql = customSqlRead.getCustomChainSql(); + if (StrUtil.isNotBlank(customChainSql)) { + sqlParserVO.setCustomSql(customChainSql); + } + } + // 检查配置文件 checkParserVO(sqlParserVO); diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java index 6fa0a17af..aa7393dbd 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java @@ -49,7 +49,10 @@ public abstract class AbstractSqlRead implements SqlRead { stmt = conn.prepareStatement(sqlCmd, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); // 设置游标拉取数量 stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX); - stmt.setString(1, config.getApplicationName()); + + if (StrUtil.isBlank(config.getCustomSql())) { + stmt.setString(1, config.getApplicationName()); + } rs = stmt.executeQuery(); diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java index 83532797f..528b85c5e 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java @@ -1,8 +1,6 @@ package com.yomahub.liteflow.parser.sql.read; -import java.util.List; - -public interface CustomSqlRead { - List getCustomChain(); +public interface CustomSqlRead { + String getCustomChainSql(); } diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index 10c09ce78..3a05491c8 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -54,22 +54,26 @@ public class ChainRead extends AbstractSqlRead { @Override public String buildQuerySql() { + if (StrUtil.isNotBlank(super.config.getCustomSql())) { + return super.config.getCustomSql(); + } + String chainTableName = super.config.getChainTableName(); String chainApplicationNameField = super.config.getChainApplicationNameField(); - String customFilterType = super.config.getCustomFilterType(); + String customFilterSql = super.config.getCustomFilterSql(); - if (StrUtil.isNotBlank(customFilterType)) { - String trim = customFilterType.trim(); - if (trim.startsWith("where ") || trim.startsWith("WHERE ")) { - trim = trim.substring(5).trim(); + if (StrUtil.isNotBlank(customFilterSql)) { + String customFilterSqlTrim = customFilterSql.trim(); + if (customFilterSqlTrim.startsWith("where ") || customFilterSqlTrim.startsWith("WHERE ")) { + customFilterSqlTrim = customFilterSqlTrim.substring(5).trim(); } - if (trim.startsWith("AND ") || trim.startsWith("and ")) { - trim = trim.substring(3); + if (customFilterSqlTrim.startsWith("AND ") || customFilterSqlTrim.startsWith("and ")) { + customFilterSqlTrim = customFilterSqlTrim.substring(3); } return StrUtil.format(SqlReadConstant.SQL_PATTERN_WITH_SUFFIX, chainTableName, - chainApplicationNameField, trim); + chainApplicationNameField, customFilterSqlTrim); } else { return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField); } diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java index 18aa85fe6..3c2c4b272 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java @@ -41,8 +41,6 @@ public class JDBCHelper { private static JDBCHelper INSTANCE; - private CustomSqlRead customSqlRead; - /** * 定时任务线程池核心线程数 */ @@ -96,13 +94,6 @@ public class JDBCHelper { // 获取 chain 数据 List chainVOList = chainRead.read(); - if (ContextAwareHolder.loadContextAware().hasBean("CustomSqlRead")) { - this.customSqlRead = ContextAwareHolder.loadContextAware().getBean("CustomSqlRead"); - List customChain = customSqlRead.getCustomChain(); - if (CollectionUtil.isNotEmpty(customChain)) { - chainVOList = customChain; - } - } List chainList = new ArrayList<>(); chainVOList.forEach( 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 ac89d3b91..8004da2e7 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 @@ -72,9 +72,14 @@ public class SQLParserVO { private String chainEnableField; /** - * 自定义过滤值 + * 后缀 自定义过滤 sql */ - private String customFilterType; + private String customFilterSql; + + /** + * 自定义 sql + */ + private String customSql; /** * 脚本 node 表名 @@ -342,11 +347,19 @@ public class SQLParserVO { this.namespaceField = namespaceField; } - public String getCustomFilterType() { - return customFilterType; + public String getCustomFilterSql() { + return customFilterSql; + } + + public void setCustomFilterSql(String customFilterSql) { + this.customFilterSql = customFilterSql; + } + + public String getCustomSql() { + return customSql; } - public void setCustomFilterType(String customFilterType) { - this.customFilterType = customFilterType; + public void setCustomSql(String customSql) { + this.customSql = customSql; } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java index ef0c6ddad..0987b5c0f 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java @@ -3,13 +3,10 @@ package com.yomahub.liteflow.test.withSuffix; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.parser.sql.read.CustomSqlRead; -import com.yomahub.liteflow.parser.sql.read.vo.ChainVO; import com.yomahub.liteflow.test.BaseTest; -import com.yomahub.liteflow.test.sqlroute.cmp.CustomChainImpl; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; @@ -19,9 +16,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; - import static org.mockito.Mockito.when; /** @@ -50,17 +44,10 @@ public class SQLWithXmlELWithSuffix2SpringbootTest extends BaseTest { @Test public void testSQLWithXmlChain2() { - ChainVO chainVO = new ChainVO(); - chainVO.setChainId("r_chain1"); - chainVO.setBody("THEN(c,a,b);"); - - List chainVOS = Collections.singletonList(chainVO); - - when(customChain.getCustomChain()).thenReturn(chainVOS); - - flowExecutor.init(false); + when(customChain.getCustomChainSql()) + .thenReturn(" SELECT * FROM EL_TABLE WHERE custom_filter_type = 'biz1' "); LiteflowResponse response = flowExecutor.execute2Resp("r_chain1", "arg"); - Assertions.assertEquals("c==>a==>b", response.getExecuteStepStr()); + Assertions.assertEquals("c==>b==>a", response.getExecuteStepStr()); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties index ab289223f..d7d10daa5 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties @@ -3,7 +3,7 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "customFilterType":"custom_filter_type = 'biz1'",\ + "customFilterSql":"custom_filter_type = 'biz1'",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties index 09e7a7102..a749e2a36 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties @@ -3,7 +3,7 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "customFilterType":"custom_filter_type = 'biz2' ",\ + "customFilterSql":"custom_filter_type = 'biz2' ",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ -- Gitee From 0ac7710a87eb710124c27d81cdcc88c5f43017ee Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Sun, 1 Sep 2024 22:56:40 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E5=88=A4=E6=96=ADreadType=E5=92=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/sql/polling/AbstractSqlReadPollTask.java | 6 +++--- .../liteflow/parser/sql/polling/SqlReadPollTask.java | 2 +- .../liteflow/parser/sql/read/AbstractSqlRead.java | 5 +++-- .../com/yomahub/liteflow/parser/sql/read/SqlRead.java | 3 +-- .../yomahub/liteflow/parser/sql/util/JDBCHelper.java | 8 ++++---- .../SQLWithXmlELWithSuffix2SpringbootTest.java | 10 ++++++---- .../SQLWithXmlELWithSuffixSpringbootTest.java | 2 +- .../src/test/resources/sql/data.sql | 4 ++-- 8 files changed, 21 insertions(+), 19 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java index 715d75e6f..270924fa3 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java @@ -3,6 +3,7 @@ package com.yomahub.liteflow.parser.sql.polling; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.DigestUtil; +import com.yomahub.liteflow.parser.constant.ReadType; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; import com.yomahub.liteflow.parser.sql.read.SqlRead; @@ -11,7 +12,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Function; import java.util.stream.Collectors; /** @@ -35,8 +35,8 @@ public abstract class AbstractSqlReadPollTask implements SqlReadPollTask { } @Override - public void execute() { - List dataList = read.read(); + public void execute(ReadType readType) { + List dataList = read.read(readType); // 新增或者更新的元素 List saveElementList = new ArrayList<>(); // 删除的元素 diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java index 7d8ac7e9e..24567cd9f 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java @@ -17,7 +17,7 @@ public interface SqlReadPollTask { /** * 执行 */ - void execute(); + void execute(ReadType readType); /** * 初始化数据 diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java index aa7393dbd..05a3e641b 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java @@ -3,6 +3,7 @@ package com.yomahub.liteflow.parser.sql.read; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; +import com.yomahub.liteflow.parser.constant.ReadType; import com.yomahub.liteflow.parser.constant.SqlReadConstant; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; import com.yomahub.liteflow.parser.sql.util.LiteFlowJdbcUtil; @@ -29,7 +30,7 @@ public abstract class AbstractSqlRead implements SqlRead { } @Override - public List read() { + public List read(ReadType readType) { // 如果不需要读取直接返回 if (!needRead()) { return new ArrayList<>(); @@ -50,7 +51,7 @@ public abstract class AbstractSqlRead implements SqlRead { // 设置游标拉取数量 stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX); - if (StrUtil.isBlank(config.getCustomSql())) { + if (!(readType == ReadType.CHAIN && StrUtil.isNotBlank(config.getCustomSql()))) { stmt.setString(1, config.getApplicationName()); } diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java index e6c8c96f9..423dc06f5 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java @@ -3,7 +3,6 @@ package com.yomahub.liteflow.parser.sql.read; import com.yomahub.liteflow.parser.constant.ReadType; import java.util.List; -import java.util.Map; /** * sql 读取接口 @@ -19,7 +18,7 @@ public interface SqlRead { * * @return 返回读取到的数据 */ - List read(); + List read(ReadType readType); /** * 类型 diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java index 3c2c4b272..09447c558 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java @@ -93,7 +93,7 @@ public class JDBCHelper { SqlRead scriptRead = SqlReadFactory.getSqlRead(ReadType.SCRIPT); // 获取 chain 数据 - List chainVOList = chainRead.read(); + List chainVOList = chainRead.read(ReadType.CHAIN); List chainList = new ArrayList<>(); chainVOList.forEach( @@ -104,7 +104,7 @@ public class JDBCHelper { String chainsContent = CollUtil.join(chainList, StrUtil.EMPTY); // 获取脚本数据 - List scriptVOList = scriptRead.read(); + List scriptVOList = scriptRead.read(ReadType.SCRIPT); List scriptList = new ArrayList<>(); scriptVOList.forEach(scriptVO -> { @@ -139,8 +139,8 @@ public class JDBCHelper { pollExecutor.scheduleAtFixedRate( () -> { try { - SqlReadFactory.getSqlReadPollTask(ReadType.SCRIPT).execute(); - SqlReadFactory.getSqlReadPollTask(ReadType.CHAIN).execute(); + SqlReadFactory.getSqlReadPollTask(ReadType.SCRIPT).execute(ReadType.SCRIPT); + SqlReadFactory.getSqlReadPollTask(ReadType.CHAIN).execute(ReadType.CHAIN); } catch (Exception ex) { LOG.error("poll chain fail", ex); } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java index 0987b5c0f..2e76e210f 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java @@ -37,7 +37,7 @@ public class SQLWithXmlELWithSuffix2SpringbootTest extends BaseTest { @Test public void testSQLWithXmlChain1() { - LiteflowResponse response = flowExecutor.execute2Resp("r_chain1", "arg"); + LiteflowResponse response = flowExecutor.execute2Resp("r_chain4", "arg"); Assertions.assertEquals("c==>b==>a", response.getExecuteStepStr()); } @@ -45,9 +45,11 @@ public class SQLWithXmlELWithSuffix2SpringbootTest extends BaseTest { @Test public void testSQLWithXmlChain2() { when(customChain.getCustomChainSql()) - .thenReturn(" SELECT * FROM EL_TABLE WHERE custom_filter_type = 'biz1' "); + .thenReturn(" SELECT APPLICATION_NAME,CHAIN_NAME,'THEN(c,b,c);' as EL_DATA,CUSTOM_FILTER_TYPE FROM EL_TABLE WHERE custom_filter_type = 'biz2' "); - LiteflowResponse response = flowExecutor.execute2Resp("r_chain1", "arg"); - Assertions.assertEquals("c==>b==>a", response.getExecuteStepStr()); + flowExecutor.init(false); + + LiteflowResponse response = flowExecutor.execute2Resp("r_chain4", "arg"); + Assertions.assertEquals("c==>b==>c", response.getExecuteStepStr()); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java index d05791dc2..add48ccbd 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffixSpringbootTest.java @@ -31,7 +31,7 @@ public class SQLWithXmlELWithSuffixSpringbootTest extends BaseTest { @Test public void testSQLWithXmlChain1() { - LiteflowResponse response = flowExecutor.execute2Resp("r_chain1", "arg"); + LiteflowResponse response = flowExecutor.execute2Resp("r_chain3", "arg"); Assertions.assertEquals("a==>b==>c", response.getExecuteStepStr()); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql index 81f380cf7..1da2fc523 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/sql/data.sql @@ -7,8 +7,8 @@ INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA) values ('demo',' Date: Tue, 10 Sep 2024 16:08:39 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/parser/constant/SqlReadConstant.java | 6 +++--- .../parser/sql/polling/AbstractSqlReadPollTask.java | 4 ++-- .../liteflow/parser/sql/polling/SqlReadPollTask.java | 2 +- .../yomahub/liteflow/parser/sql/read/AbstractSqlRead.java | 6 +----- .../com/yomahub/liteflow/parser/sql/read/SqlRead.java | 2 +- .../yomahub/liteflow/parser/sql/read/impl/ChainRead.java | 5 +++-- .../yomahub/liteflow/parser/sql/read/impl/ScriptRead.java | 5 +++-- .../com/yomahub/liteflow/parser/sql/util/JDBCHelper.java | 8 ++++---- 8 files changed, 18 insertions(+), 20 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java index 50dd26531..f199b7fe1 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java @@ -10,13 +10,13 @@ package com.yomahub.liteflow.parser.constant; */ public class SqlReadConstant { - public static final String SQL_PATTERN = "SELECT * FROM {} WHERE {}=?"; + public static final String SQL_PATTERN = "SELECT * FROM {} WHERE {}='{}'"; - public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}=? AND {}"; + public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}='{}' AND {}"; public static final String SCRIPT_SQL_CHECK_PATTERN = "SELECT 1 FROM {} "; - public static final String SCRIPT_SQL_PATTERN = "SELECT * FROM {} WHERE {}=?"; + public static final String SCRIPT_SQL_PATTERN = "SELECT * FROM {} WHERE {}='{}'"; public static final String CHAIN_XML_PATTERN = ""; diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java index 270924fa3..2151ecdc9 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/AbstractSqlReadPollTask.java @@ -35,8 +35,8 @@ public abstract class AbstractSqlReadPollTask implements SqlReadPollTask { } @Override - public void execute(ReadType readType) { - List dataList = read.read(readType); + public void execute() { + List dataList = read.read(); // 新增或者更新的元素 List saveElementList = new ArrayList<>(); // 删除的元素 diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java index 24567cd9f..7d8ac7e9e 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java @@ -17,7 +17,7 @@ public interface SqlReadPollTask { /** * 执行 */ - void execute(ReadType readType); + void execute(); /** * 初始化数据 diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java index 05a3e641b..01cb01148 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java @@ -30,7 +30,7 @@ public abstract class AbstractSqlRead implements SqlRead { } @Override - public List read(ReadType readType) { + public List read() { // 如果不需要读取直接返回 if (!needRead()) { return new ArrayList<>(); @@ -51,10 +51,6 @@ public abstract class AbstractSqlRead implements SqlRead { // 设置游标拉取数量 stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX); - if (!(readType == ReadType.CHAIN && StrUtil.isNotBlank(config.getCustomSql()))) { - stmt.setString(1, config.getApplicationName()); - } - rs = stmt.executeQuery(); while (rs.next()) { diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java index 423dc06f5..b56b31a30 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/SqlRead.java @@ -18,7 +18,7 @@ public interface SqlRead { * * @return 返回读取到的数据 */ - List read(ReadType readType); + List read(); /** * 类型 diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index 3a05491c8..8064cb1f3 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -61,6 +61,7 @@ public class ChainRead extends AbstractSqlRead { String chainTableName = super.config.getChainTableName(); String chainApplicationNameField = super.config.getChainApplicationNameField(); String customFilterSql = super.config.getCustomFilterSql(); + String applicationName = super.config.getApplicationName(); if (StrUtil.isNotBlank(customFilterSql)) { String customFilterSqlTrim = customFilterSql.trim(); @@ -73,9 +74,9 @@ public class ChainRead extends AbstractSqlRead { } return StrUtil.format(SqlReadConstant.SQL_PATTERN_WITH_SUFFIX, chainTableName, - chainApplicationNameField, customFilterSqlTrim); + chainApplicationNameField, applicationName, customFilterSqlTrim); } else { - return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField); + return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField, applicationName); } } diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java index fa10a616c..00a6f9c15 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java @@ -60,11 +60,12 @@ public class ScriptRead extends AbstractSqlRead { public String buildQuerySql() { String scriptTableName = super.config.getScriptTableName(); String scriptApplicationNameField = super.config.getScriptApplicationNameField(); - + String applicationName = super.config.getApplicationName(); return StrUtil.format( SqlReadConstant.SCRIPT_SQL_PATTERN, scriptTableName, - scriptApplicationNameField); + scriptApplicationNameField, + applicationName); } @Override diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java index 09447c558..3c2c4b272 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java @@ -93,7 +93,7 @@ public class JDBCHelper { SqlRead scriptRead = SqlReadFactory.getSqlRead(ReadType.SCRIPT); // 获取 chain 数据 - List chainVOList = chainRead.read(ReadType.CHAIN); + List chainVOList = chainRead.read(); List chainList = new ArrayList<>(); chainVOList.forEach( @@ -104,7 +104,7 @@ public class JDBCHelper { String chainsContent = CollUtil.join(chainList, StrUtil.EMPTY); // 获取脚本数据 - List scriptVOList = scriptRead.read(ReadType.SCRIPT); + List scriptVOList = scriptRead.read(); List scriptList = new ArrayList<>(); scriptVOList.forEach(scriptVO -> { @@ -139,8 +139,8 @@ public class JDBCHelper { pollExecutor.scheduleAtFixedRate( () -> { try { - SqlReadFactory.getSqlReadPollTask(ReadType.SCRIPT).execute(ReadType.SCRIPT); - SqlReadFactory.getSqlReadPollTask(ReadType.CHAIN).execute(ReadType.CHAIN); + SqlReadFactory.getSqlReadPollTask(ReadType.SCRIPT).execute(); + SqlReadFactory.getSqlReadPollTask(ReadType.CHAIN).execute(); } catch (Exception ex) { LOG.error("poll chain fail", ex); } -- Gitee From 3db6aee66535ff30cfba67009124ad28cccca928 Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Tue, 10 Sep 2024 22:39:15 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96bean?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/parser/sql/SQLXmlELParser.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java index 655d21a26..5e15fc7c5 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java @@ -18,6 +18,7 @@ import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.ContextAwareHolder; import com.yomahub.liteflow.util.JsonUtil; +import java.util.Map; import java.util.Objects; /** @@ -34,9 +35,6 @@ public class SQLXmlELParser extends ClassXmlFlowELParser { private static final String ERROR_COMMON_MSG = "rule-source-ext-data is empty"; - // 返回用户接口自定义sql - private CustomSqlRead customSqlRead; - /** * 构造函数 */ @@ -55,9 +53,11 @@ public class SQLXmlELParser extends ClassXmlFlowELParser { } // 自定义sql - if (ContextAwareHolder.loadContextAware().hasBean("CustomSqlRead")) { - this.customSqlRead = ContextAwareHolder.loadContextAware().getBean("CustomSqlRead"); + Map beansOfType = ContextAwareHolder.loadContextAware().getBeansOfType(CustomSqlRead.class); + for (Map.Entry entry : beansOfType.entrySet()) { + CustomSqlRead customSqlRead = entry.getValue(); String customChainSql = customSqlRead.getCustomChainSql(); + if (StrUtil.isNotBlank(customChainSql)) { sqlParserVO.setCustomSql(customChainSql); } -- Gitee From 1460ebb2cae7b4185e1308ef3e8de4085c362629 Mon Sep 17 00:00:00 2001 From: jay li <2215313286@qq.com> Date: Fri, 13 Sep 2024 17:22:12 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E9=87=87=E7=94=A8=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=85=A8sql=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/constant/SqlReadConstant.java | 3 +-- .../liteflow/parser/sql/SQLXmlELParser.java | 14 ----------- .../parser/sql/read/impl/ChainRead.java | 22 +++------------- .../parser/sql/read/impl/ScriptRead.java | 12 +++++---- .../liteflow/parser/sql/util/JDBCHelper.java | 3 --- .../liteflow/parser/sql/vo/SQLParserVO.java | 25 ++++++++++--------- ...SQLWithXmlELWithSuffix2SpringbootTest.java | 19 +------------- ...ion-data-source-with-suffix-xml.properties | 2 +- ...on-data-source-with-suffix2-xml.properties | 2 +- 9 files changed, 28 insertions(+), 74 deletions(-) diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java index f199b7fe1..87281e206 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java @@ -6,14 +6,13 @@ package com.yomahub.liteflow.parser.constant; * @author tangkc * @author houxinyu * @author Bryan.Zhang + * @author jay li * @since 2.11.1 */ public class SqlReadConstant { public static final String SQL_PATTERN = "SELECT * FROM {} WHERE {}='{}'"; - public static final String SQL_PATTERN_WITH_SUFFIX = "SELECT * FROM {} WHERE {}='{}' AND {}"; - public static final String SCRIPT_SQL_CHECK_PATTERN = "SELECT 1 FROM {} "; public static final String SCRIPT_SQL_PATTERN = "SELECT * FROM {} WHERE {}='{}'"; diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java index 5e15fc7c5..a758fd606 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java @@ -9,16 +9,13 @@ import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.parser.constant.ReadType; import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; -import com.yomahub.liteflow.parser.sql.read.CustomSqlRead; import com.yomahub.liteflow.parser.sql.read.SqlReadFactory; import com.yomahub.liteflow.parser.sql.util.JDBCHelper; import com.yomahub.liteflow.parser.sql.vo.SQLParserVO; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.property.LiteflowConfigGetter; -import com.yomahub.liteflow.spi.holder.ContextAwareHolder; import com.yomahub.liteflow.util.JsonUtil; -import java.util.Map; import java.util.Objects; /** @@ -52,17 +49,6 @@ public class SQLXmlELParser extends ClassXmlFlowELParser { throw new ELSQLException(ERROR_COMMON_MSG); } - // 自定义sql - Map beansOfType = ContextAwareHolder.loadContextAware().getBeansOfType(CustomSqlRead.class); - for (Map.Entry entry : beansOfType.entrySet()) { - CustomSqlRead customSqlRead = entry.getValue(); - String customChainSql = customSqlRead.getCustomChainSql(); - - if (StrUtil.isNotBlank(customChainSql)) { - sqlParserVO.setCustomSql(customChainSql); - } - } - // 检查配置文件 checkParserVO(sqlParserVO); diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java index 8064cb1f3..d4b6d7824 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java @@ -16,6 +16,7 @@ import java.sql.SQLException; * * @author tangkc * @author houxinyu + * @author jay li * @since 2.11.1 */ public class ChainRead extends AbstractSqlRead { @@ -54,30 +55,15 @@ public class ChainRead extends AbstractSqlRead { @Override public String buildQuerySql() { - if (StrUtil.isNotBlank(super.config.getCustomSql())) { - return super.config.getCustomSql(); + if (StrUtil.isNotBlank(super.config.getChainCustomSql())) { + return super.config.getChainCustomSql(); } String chainTableName = super.config.getChainTableName(); String chainApplicationNameField = super.config.getChainApplicationNameField(); - String customFilterSql = super.config.getCustomFilterSql(); String applicationName = super.config.getApplicationName(); - if (StrUtil.isNotBlank(customFilterSql)) { - String customFilterSqlTrim = customFilterSql.trim(); - if (customFilterSqlTrim.startsWith("where ") || customFilterSqlTrim.startsWith("WHERE ")) { - customFilterSqlTrim = customFilterSqlTrim.substring(5).trim(); - } - - if (customFilterSqlTrim.startsWith("AND ") || customFilterSqlTrim.startsWith("and ")) { - customFilterSqlTrim = customFilterSqlTrim.substring(3); - } - - return StrUtil.format(SqlReadConstant.SQL_PATTERN_WITH_SUFFIX, chainTableName, - chainApplicationNameField, applicationName, customFilterSqlTrim); - } else { - return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField, applicationName); - } + return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainTableName, chainApplicationNameField, applicationName); } @Override diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java index 00a6f9c15..c8c38c599 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java @@ -1,9 +1,6 @@ package com.yomahub.liteflow.parser.sql.read.impl; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import com.yomahub.liteflow.enums.NodeTypeEnum; -import com.yomahub.liteflow.enums.ScriptTypeEnum; import com.yomahub.liteflow.parser.constant.ReadType; import com.yomahub.liteflow.parser.constant.SqlReadConstant; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; @@ -11,18 +8,19 @@ import com.yomahub.liteflow.parser.sql.read.AbstractSqlRead; import com.yomahub.liteflow.parser.sql.read.vo.ScriptVO; import com.yomahub.liteflow.parser.sql.util.LiteFlowJdbcUtil; import com.yomahub.liteflow.parser.sql.vo.SQLParserVO; +import org.apache.commons.lang.StringUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.List; -import java.util.Objects; + /** * 脚本读取 * * @author tangkc * @author houxinyu + * @author jay li * @since 2.11.1 */ public class ScriptRead extends AbstractSqlRead { @@ -58,6 +56,10 @@ public class ScriptRead extends AbstractSqlRead { @Override public String buildQuerySql() { + if (StringUtils.isNotBlank(super.config.getScriptCustomSql())) { + return super.config.getScriptCustomSql(); + } + String scriptTableName = super.config.getScriptTableName(); String scriptApplicationNameField = super.config.getScriptApplicationNameField(); String applicationName = super.config.getApplicationName(); diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java index 3c2c4b272..7d9a66633 100644 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java +++ b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/util/JDBCHelper.java @@ -1,7 +1,6 @@ package com.yomahub.liteflow.parser.sql.util; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.thread.NamedThreadFactory; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -12,13 +11,11 @@ import com.yomahub.liteflow.parser.constant.ReadType; import com.yomahub.liteflow.parser.sql.exception.ELSQLException; import com.yomahub.liteflow.parser.sql.polling.SqlReadPollTask; -import com.yomahub.liteflow.parser.sql.read.CustomSqlRead; import com.yomahub.liteflow.parser.sql.read.SqlRead; import com.yomahub.liteflow.parser.sql.read.SqlReadFactory; import com.yomahub.liteflow.parser.sql.read.vo.ChainVO; import com.yomahub.liteflow.parser.sql.read.vo.ScriptVO; import com.yomahub.liteflow.parser.sql.vo.SQLParserVO; -import com.yomahub.liteflow.spi.holder.ContextAwareHolder; import org.apache.commons.lang.StringUtils; import java.util.*; 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 8004da2e7..932a60be3 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 @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; * * @author tangkc * @author Bryan.Zhang + * @author jay li * @since 2.9.0 */ public class SQLParserVO { @@ -72,14 +73,14 @@ public class SQLParserVO { private String chainEnableField; /** - * 后缀 自定义过滤 sql + * chain 自定义 sql */ - private String customFilterSql; + private String chainCustomSql; /** - * 自定义 sql + * 脚本 自定义 sql */ - private String customSql; + private String scriptCustomSql; /** * 脚本 node 表名 @@ -347,19 +348,19 @@ public class SQLParserVO { this.namespaceField = namespaceField; } - public String getCustomFilterSql() { - return customFilterSql; + public String getChainCustomSql() { + return chainCustomSql; } - public void setCustomFilterSql(String customFilterSql) { - this.customFilterSql = customFilterSql; + public void setChainCustomSql(String chainCustomSql) { + this.chainCustomSql = chainCustomSql; } - public String getCustomSql() { - return customSql; + public String getScriptCustomSql() { + return scriptCustomSql; } - public void setCustomSql(String customSql) { - this.customSql = customSql; + public void setScriptCustomSql(String scriptCustomSql) { + this.scriptCustomSql = scriptCustomSql; } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java index 2e76e210f..7a11c4e2e 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/withSuffix/SQLWithXmlELWithSuffix2SpringbootTest.java @@ -2,21 +2,18 @@ package com.yomahub.liteflow.test.withSuffix; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; -import com.yomahub.liteflow.parser.sql.read.CustomSqlRead; import com.yomahub.liteflow.test.BaseTest; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import javax.annotation.Resource; -import static org.mockito.Mockito.when; /** * @author jay li @@ -29,26 +26,12 @@ import static org.mockito.Mockito.when; @ComponentScan({"com.yomahub.liteflow.test.sql.cmp"}) public class SQLWithXmlELWithSuffix2SpringbootTest extends BaseTest { - @MockBean(name = "CustomSqlRead") - private static CustomSqlRead customChain; @Resource private FlowExecutor flowExecutor; @Test - public void testSQLWithXmlChain1() { - LiteflowResponse response = flowExecutor.execute2Resp("r_chain4", "arg"); - Assertions.assertEquals("c==>b==>a", response.getExecuteStepStr()); - } - - - @Test - public void testSQLWithXmlChain2() { - when(customChain.getCustomChainSql()) - .thenReturn(" SELECT APPLICATION_NAME,CHAIN_NAME,'THEN(c,b,c);' as EL_DATA,CUSTOM_FILTER_TYPE FROM EL_TABLE WHERE custom_filter_type = 'biz2' "); - - flowExecutor.init(false); - + public void testSQLWithXmlChain() { LiteflowResponse response = flowExecutor.execute2Resp("r_chain4", "arg"); Assertions.assertEquals("c==>b==>c", response.getExecuteStepStr()); } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties index d7d10daa5..d425b9a10 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix-xml.properties @@ -3,7 +3,7 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "customFilterSql":"custom_filter_type = 'biz1'",\ + "scriptCustomSql":" SELECT * FROM script_node_table WHERE application_name = 'demo' ",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties index a749e2a36..2898f24e1 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/resources/application-data-source-with-suffix2-xml.properties @@ -3,7 +3,7 @@ liteflow.rule-source-ext-data={\ "chainTableName":"EL_TABLE",\ "chainApplicationNameField":"application_name",\ "chainNameField":"chain_name",\ - "customFilterSql":"custom_filter_type = 'biz2' ",\ + "chainCustomSql":" SELECT APPLICATION_NAME,CHAIN_NAME,'THEN(c,b,c);' as EL_DATA,CUSTOM_FILTER_TYPE FROM EL_TABLE WHERE custom_filter_type = 'biz2' ",\ "elDataField":"EL_DATA",\ "scriptTableName":"script_node_table",\ "scriptApplicationNameField":"application_name",\ -- Gitee From b3dd47905cb5d7fa22638ca2fbed256c13b0872b Mon Sep 17 00:00:00 2001 From: jay li <221531386@qq.com> Date: Fri, 13 Sep 2024 23:29:09 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java diff --git a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java b/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java deleted file mode 100644 index 528b85c5e..000000000 --- a/liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/CustomSqlRead.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.yomahub.liteflow.parser.sql.read; - - -public interface CustomSqlRead { - String getCustomChainSql(); -} -- Gitee