Sfoglia il codice sorgente

判断readType和修改单元测试

jay li 8 mesi fa
parent
commit
0ac7710a87

+ 3 - 3
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<T> implements SqlReadPollTask<T> {
     }
 
     @Override
-    public void execute() {
-        List<T> dataList = read.read();
+    public void execute(ReadType readType) {
+        List<T> dataList = read.read(readType);
         // 新增或者更新的元素
         List<T> saveElementList = new ArrayList<>();
         // 删除的元素

+ 1 - 1
liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/polling/SqlReadPollTask.java

@@ -17,7 +17,7 @@ public interface SqlReadPollTask<T> {
     /**
      * 执行
      */
-    void execute();
+    void execute(ReadType readType);
 
     /**
      * 初始化数据

+ 3 - 2
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<T> implements SqlRead<T> {
     }
 
     @Override
-    public List<T> read() {
+    public List<T> read(ReadType readType) {
         // 如果不需要读取直接返回
         if (!needRead()) {
             return new ArrayList<>();
@@ -50,7 +51,7 @@ public abstract class AbstractSqlRead<T> implements SqlRead<T> {
             // 设置游标拉取数量
             stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX);
 
-            if (StrUtil.isBlank(config.getCustomSql())) {
+            if (!(readType == ReadType.CHAIN && StrUtil.isNotBlank(config.getCustomSql()))) {
                 stmt.setString(1, config.getApplicationName());
             }
 

+ 1 - 2
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<T> {
      *
      * @return 返回读取到的数据
      */
-    List<T> read();
+    List<T> read(ReadType readType);
 
     /**
      * 类型

+ 4 - 4
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<ScriptVO> scriptRead = SqlReadFactory.getSqlRead(ReadType.SCRIPT);
 
         // 获取 chain 数据
-        List<ChainVO> chainVOList = chainRead.read();
+        List<ChainVO> chainVOList = chainRead.read(ReadType.CHAIN);
         List<String> chainList = new ArrayList<>();
 
         chainVOList.forEach(
@@ -104,7 +104,7 @@ public class JDBCHelper {
         String chainsContent = CollUtil.join(chainList, StrUtil.EMPTY);
 
         // 获取脚本数据
-        List<ScriptVO> scriptVOList = scriptRead.read();
+        List<ScriptVO> scriptVOList = scriptRead.read(ReadType.SCRIPT);
         List<String> 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);
                     }

+ 6 - 4
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());
 	}
 }

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

+ 2 - 2
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','<chai
 INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA) values ('demo','chain4','IF(x2, IF(x0, THEN(a, b)));');
 INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA,ROUTE,NAMESPACE) values ('demo','r_chain1','THEN(a,b,c);','r1','ns');
 INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA,ROUTE,NAMESPACE) values ('demo','r_chain2','THEN(c,b,a);','OR(r1,r2)','ns');
-INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA,CUSTOM_FILTER_TYPE) values ('demo','r_chain1','THEN(a,b,c);','biz1');
-INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA,CUSTOM_FILTER_TYPE) values ('demo','r_chain1','THEN(c,b,a);','biz2');
+INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA,CUSTOM_FILTER_TYPE) values ('demo','r_chain3','THEN(a,b,c);','biz1');
+INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA,CUSTOM_FILTER_TYPE) values ('demo','r_chain4','THEN(c,b,a);','biz2');
 
 DELETE FROM SCRIPT_NODE_TABLE;