修改为支持自定义过滤

This commit is contained in:
jay li
2024-08-26 22:56:44 +08:00
parent cbf4cbaef2
commit c636847ce6
8 changed files with 41 additions and 26 deletions

View File

@@ -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 {} ";

View File

@@ -51,8 +51,8 @@ public abstract class AbstractSqlRead<T> implements SqlRead<T> {
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();

View File

@@ -56,11 +56,11 @@ public class ChainRead extends AbstractSqlRead<ChainVO> {
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);
}

View File

@@ -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 setChainSuffixType(String chainSuffixType) {
this.chainSuffixType = chainSuffixType;
public void setCustomFilterType(String customFilterType) {
this.customFilterType = customFilterType;
}
public String getChainSuffixTypeField() {
return chainSuffixTypeField;
public String getCustomFilterTypeField() {
return customFilterTypeField;
}
public void setChainSuffixTypeField(String chainSuffixTypeField) {
this.chainSuffixTypeField = chainSuffixTypeField;
public void setCustomFilterTypeField(String customFilterTypeField) {
this.customFilterTypeField = customFilterTypeField;
}
public String getCustomFilterOperator() {
return customFilterOperator;
}
public void setCustomFilterOperator(String customFilterOperator) {
this.customFilterOperator = customFilterOperator;
}
}

View File

@@ -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",\

View File

@@ -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",\

View File

@@ -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,CHAIN_SUFFIX_TYPE) values ('demo','r_chain1','THEN(a,b,c);','biz1');
INSERT INTO EL_TABLE (APPLICATION_NAME,CHAIN_NAME,EL_DATA,CHAIN_SUFFIX_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_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');
DELETE FROM SCRIPT_NODE_TABLE;

View File

@@ -6,7 +6,7 @@ create table IF NOT EXISTS `EL_TABLE`
`el_data` varchar(1024) NOT NULL,
`route` varchar(1024),
`namespace` varchar(32),
`chain_suffix_type` varchar(32),
`CUSTOM_FILTER_TYPE` varchar(32),
PRIMARY KEY (`id`)
);