ソースを参照

enhancement #I8BPM9 SQL插件增加enable字段的映射

everywhere.z 1 年間 前
コミット
f8e064f9da

+ 3 - 0
liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/constant/SqlReadConstant.java

@@ -5,12 +5,15 @@ package com.yomahub.liteflow.parser.constant;
  *
  * @author tangkc
  * @author houxinyu
+ * @author Bryan.Zhang
  * @since 2.11.1
  */
 public class SqlReadConstant {
 
     public static final String SQL_PATTERN = "SELECT {},{} FROM {} WHERE {}=?";
 
+    public static final String SQL_ENABLE_PATTERN = "AND {}=?";
+
     public static final String SCRIPT_SQL_CHECK_PATTERN = "SELECT 1 FROM {} ";
 
     public static final String SCRIPT_SQL_PATTERN = "SELECT {},{},{},{} FROM {} WHERE {}=?";

+ 6 - 4
liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/AbstractSqlRead.java

@@ -8,10 +8,7 @@ import com.yomahub.liteflow.parser.sql.exception.ELSQLException;
 import com.yomahub.liteflow.parser.sql.util.LiteFlowJdbcUtil;
 import com.yomahub.liteflow.parser.sql.vo.SQLParserVO;
 
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.sql.*;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -20,6 +17,7 @@ import java.util.Map;
  *
  * @author tangkc
  * @author houxinyu
+ * @author Bryan.Zhang
  * @since 2.11.1
  */
 public abstract class AbstractSqlRead implements SqlRead {
@@ -52,6 +50,10 @@ public abstract class AbstractSqlRead implements SqlRead {
             // 设置游标拉取数量
             stmt.setFetchSize(SqlReadConstant.FETCH_SIZE_MAX);
             stmt.setString(1, config.getApplicationName());
+            ParameterMetaData parameterMetaData = stmt.getParameterMetaData();
+            if (parameterMetaData.getParameterCount() == 2){
+                stmt.setBoolean(2, true);
+            }
             rs = stmt.executeQuery();
 
             while (rs.next()) {

+ 8 - 1
liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ChainRead.java

@@ -30,6 +30,7 @@ public class ChainRead extends AbstractSqlRead {
         String chainNameField = super.config.getChainNameField();
         String chainApplicationNameField = super.config.getChainApplicationNameField();
         String applicationName = super.config.getApplicationName();
+        String chainEnableField = super.config.getChainEnableField();
 
         if (StrUtil.isBlank(chainTableName)) {
             throw new ELSQLException("You did not define the chainTableName property");
@@ -39,8 +40,14 @@ public class ChainRead extends AbstractSqlRead {
             throw new ELSQLException("You did not define the applicationName or chainApplicationNameField property");
         }
 
-        return StrUtil.format(SqlReadConstant.SQL_PATTERN, chainNameField, elDataField, chainTableName,
+        String sqlCmd = StrUtil.format(SqlReadConstant.SQL_PATTERN, chainNameField, elDataField, chainTableName,
                 chainApplicationNameField);
+
+        if (StrUtil.isNotBlank(chainEnableField)){
+            sqlCmd = StrUtil.format("{} {}", sqlCmd, StrUtil.format(SqlReadConstant.SQL_ENABLE_PATTERN, chainEnableField));
+        }
+
+        return sqlCmd;
     }
 
     @Override

+ 4 - 0
liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/read/impl/ScriptRead.java

@@ -40,6 +40,7 @@ public class ScriptRead extends AbstractSqlRead {
         String scriptTypeField = super.config.getScriptTypeField();
         String scriptApplicationNameField = super.config.getScriptApplicationNameField();
         String applicationName = super.config.getApplicationName();
+        String scriptEnableField = super.config.getScriptEnableField();
 
         if (StrUtil.isBlank(applicationName) || StrUtil.isBlank(scriptApplicationNameField)) {
             throw new ELSQLException("You did not define the applicationName or scriptApplicationNameField property");
@@ -74,6 +75,9 @@ public class ScriptRead extends AbstractSqlRead {
             );
         }
 
+        if (StrUtil.isNotBlank(scriptEnableField)){
+            sqlCmd = StrUtil.format("{} {}", sqlCmd, StrUtil.format(SqlReadConstant.SQL_ENABLE_PATTERN, scriptEnableField));
+        }
 
         return sqlCmd;
     }

+ 27 - 0
liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/vo/SQLParserVO.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
  * 用于解析 RuleSourceExtData 的 VO 类,用于 sql 模式中
  *
  * @author tangkc
+ * @author Bryan.Zhang
  * @since 2.9.0
  */
 public class SQLParserVO {
@@ -55,6 +56,11 @@ public class SQLParserVO {
      */
     private String elDataField = "el_data";
 
+    /**
+     * 是否启动某一条chain
+     */
+    private String chainEnableField;
+
     /**
      * 脚本 node 表名
      */
@@ -90,6 +96,11 @@ public class SQLParserVO {
      */
     private String scriptLanguageField;
 
+    /**
+     * 是否启动这一条脚本
+     */
+    private String scriptEnableField;
+
     /**
      * 轮询机制是否开启 默认不开启
      */
@@ -276,4 +287,20 @@ public class SQLParserVO {
     public void setSqlLogEnabled(Boolean sqlLogEnabled) {
         this.sqlLogEnabled = sqlLogEnabled;
     }
+
+    public String getChainEnableField() {
+        return chainEnableField;
+    }
+
+    public void setChainEnableField(String chainEnableField) {
+        this.chainEnableField = chainEnableField;
+    }
+
+    public String getScriptEnableField() {
+        return scriptEnableField;
+    }
+
+    public void setScriptEnableField(String scriptEnableField) {
+        this.scriptEnableField = scriptEnableField;
+    }
 }