Преглед изворни кода

enhancement #I5X7IT rule-source-ext-data支持在springboot yml配置文件中的原生配置

everywhere.z пре 2 година
родитељ
комит
805143bf1f

+ 12 - 0
liteflow-core/src/main/java/com/yomahub/liteflow/property/LiteflowConfig.java

@@ -11,6 +11,8 @@ package com.yomahub.liteflow.property;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 
+import java.util.Map;
+
 /**
  * liteflow的配置实体类
  * 这个类中的属性为什么不用基本类型,而用包装类型呢
@@ -32,6 +34,8 @@ public class LiteflowConfig {
     //流程资源扩展数据
     private String ruleSourceExtData;
 
+    private Map<String, String> ruleSourceExtDataMap;
+
     //slot的数量
     private Integer slotSize;
 
@@ -340,4 +344,12 @@ public class LiteflowConfig {
     public void setRuleSourceExtData(String ruleSourceExtData) {
         this.ruleSourceExtData = ruleSourceExtData;
     }
+
+    public Map<String, String> getRuleSourceExtDataMap() {
+        return ruleSourceExtDataMap;
+    }
+
+    public void setRuleSourceExtDataMap(Map<String, String> ruleSourceExtDataMap) {
+        this.ruleSourceExtDataMap = ruleSourceExtDataMap;
+    }
 }

+ 14 - 6
liteflow-rule-plugin/liteflow-rule-etcd/src/main/java/com/yomahub/liteflow/parser/etcd/EtcdXmlELParser.java

@@ -1,5 +1,8 @@
 package com.yomahub.liteflow.parser.etcd;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser;
 import com.yomahub.liteflow.parser.etcd.exception.EtcdException;
@@ -9,6 +12,7 @@ import com.yomahub.liteflow.property.LiteflowConfig;
 import com.yomahub.liteflow.property.LiteflowConfigGetter;
 import com.yomahub.liteflow.util.JsonUtil;
 
+import java.util.Objects;
 import java.util.function.Consumer;
 
 /**
@@ -23,13 +27,17 @@ public class EtcdXmlELParser extends ClassXmlFlowELParser {
 	public EtcdXmlELParser() {
 		LiteflowConfig liteflowConfig = LiteflowConfigGetter.get();
 
-		if (StrUtil.isBlank(liteflowConfig.getRuleSourceExtData())){
-			throw new EtcdException("rule-source-ext-data is empty");
-		}
-
 		try{
-			EtcdParserVO etcdParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), EtcdParserVO.class);
-			assert etcdParserVO != null;
+			EtcdParserVO etcdParserVO = null;
+			if(MapUtil.isNotEmpty((liteflowConfig.getRuleSourceExtDataMap()))){
+				etcdParserVO = BeanUtil.toBean(liteflowConfig.getRuleSourceExtDataMap(), EtcdParserVO.class, CopyOptions.create());
+			}else if (StrUtil.isNotBlank(liteflowConfig.getRuleSourceExtData())){
+				etcdParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), EtcdParserVO.class);
+			}
+
+			if (Objects.isNull(etcdParserVO)) {
+				throw new EtcdException("rule-source-ext-data is empty");
+			}
 
 			if (StrUtil.isBlank(etcdParserVO.getNodePath())){
 				etcdParserVO.setNodePath("/lite-flow/flow");

+ 15 - 6
liteflow-rule-plugin/liteflow-rule-nacos/src/main/java/com/yomahub/liteflow/parser/nacos/NacosXmlELParser.java

@@ -1,5 +1,8 @@
 package com.yomahub.liteflow.parser.nacos;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser;
 import com.yomahub.liteflow.parser.nacos.exception.NacosException;
@@ -9,6 +12,7 @@ import com.yomahub.liteflow.property.LiteflowConfig;
 import com.yomahub.liteflow.property.LiteflowConfigGetter;
 import com.yomahub.liteflow.util.JsonUtil;
 
+import java.util.Objects;
 import java.util.function.Consumer;
 
 /**
@@ -23,13 +27,18 @@ public class NacosXmlELParser extends ClassXmlFlowELParser {
     public NacosXmlELParser() {
         LiteflowConfig liteflowConfig = LiteflowConfigGetter.get();
 
-        if (StrUtil.isBlank(liteflowConfig.getRuleSourceExtData())){
-            throw new NacosException("rule-source-ext-data for nacos is empty");
-        }
-
         try{
-            NacosParserVO nacosParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), NacosParserVO.class);
-            assert nacosParserVO != null;
+            NacosParserVO nacosParserVO = null;
+            if(MapUtil.isNotEmpty((liteflowConfig.getRuleSourceExtDataMap()))){
+                nacosParserVO = BeanUtil.toBean(liteflowConfig.getRuleSourceExtDataMap(), NacosParserVO.class, CopyOptions.create());
+            }else if (StrUtil.isNotBlank(liteflowConfig.getRuleSourceExtData())){
+                nacosParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), NacosParserVO.class);
+            }
+
+            if (Objects.isNull(nacosParserVO)) {
+                throw new NacosException("rule-source-ext-data is empty");
+            }
+
             if (StrUtil.isBlank(nacosParserVO.getServerAddr())){
                 nacosParserVO.setServerAddr("127.0.0.1:8848");
             }

+ 10 - 5
liteflow-rule-plugin/liteflow-rule-sql/src/main/java/com/yomahub/liteflow/parser/sql/SQLXmlELParser.java

@@ -1,5 +1,8 @@
 package com.yomahub.liteflow.parser.sql;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.text.StrFormatter;
 import cn.hutool.core.util.StrUtil;
 import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser;
@@ -10,6 +13,7 @@ import com.yomahub.liteflow.property.LiteflowConfig;
 import com.yomahub.liteflow.property.LiteflowConfigGetter;
 import com.yomahub.liteflow.util.JsonUtil;
 
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -29,12 +33,13 @@ public class SQLXmlELParser extends ClassXmlFlowELParser {
 	public SQLXmlELParser() {
 		LiteflowConfig liteflowConfig = LiteflowConfigGetter.get();
 
-		if (StrUtil.isBlank(liteflowConfig.getRuleSourceExtData())) {
-			throw new ELSQLException(ERROR_COMMON_MSG);
-		}
-
 		try {
-			SQLParserVO sqlParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), SQLParserVO.class);
+			SQLParserVO sqlParserVO = null;
+			if(MapUtil.isNotEmpty((liteflowConfig.getRuleSourceExtDataMap()))){
+				sqlParserVO = BeanUtil.toBean(liteflowConfig.getRuleSourceExtDataMap(), SQLParserVO.class, CopyOptions.create());
+			}else if (StrUtil.isNotBlank(liteflowConfig.getRuleSourceExtData())){
+				sqlParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), SQLParserVO.class);
+			}
 			if (Objects.isNull(sqlParserVO)) {
 				throw new ELSQLException(ERROR_COMMON_MSG);
 			}

+ 14 - 7
liteflow-rule-plugin/liteflow-rule-zk/src/main/java/com/yomahub/liteflow/parser/zk/ZkXmlELParser.java

@@ -1,5 +1,8 @@
 package com.yomahub.liteflow.parser.zk;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser;
 import com.yomahub.liteflow.parser.zk.exception.ZkException;
@@ -8,8 +11,8 @@ import com.yomahub.liteflow.parser.zk.vo.ZkParserVO;
 import com.yomahub.liteflow.property.LiteflowConfig;
 import com.yomahub.liteflow.property.LiteflowConfigGetter;
 import com.yomahub.liteflow.util.JsonUtil;
-import org.apache.curator.framework.CuratorFramework;
 
+import java.util.Objects;
 import java.util.function.Consumer;
 
 /**
@@ -31,13 +34,17 @@ public class ZkXmlELParser extends ClassXmlFlowELParser {
         };
         LiteflowConfig liteflowConfig = LiteflowConfigGetter.get();
 
-        if (StrUtil.isBlank(liteflowConfig.getRuleSourceExtData())){
-            throw new ZkException("rule-source-ext-data is empty");
-        }
-
         try{
-            ZkParserVO zkParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), ZkParserVO.class);
-            assert zkParserVO != null;
+            ZkParserVO zkParserVO = null;
+            if(MapUtil.isNotEmpty((liteflowConfig.getRuleSourceExtDataMap()))){
+                zkParserVO = BeanUtil.toBean(liteflowConfig.getRuleSourceExtDataMap(), ZkParserVO.class, CopyOptions.create());
+            }else if (StrUtil.isNotBlank(liteflowConfig.getRuleSourceExtData())){
+                zkParserVO = JsonUtil.parseObject(liteflowConfig.getRuleSourceExtData(), ZkParserVO.class);
+            }
+
+            if (Objects.isNull(zkParserVO)) {
+                throw new ZkException("rule-source-ext-data is empty");
+            }
 
             if (StrUtil.isBlank(zkParserVO.getNodePath())){
                 zkParserVO.setNodePath("/lite-flow/flow");

+ 14 - 1
liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowProperty.java

@@ -2,6 +2,8 @@ package com.yomahub.liteflow.springboot;
 
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
+import java.util.Map;
+
 /**
  * 执行流程主要的参数类
  * @author Bryan.Zhang
@@ -15,9 +17,12 @@ public class LiteflowProperty {
     //流程定义资源地址
     private String ruleSource;
 
-    //流程资源扩展数据
+    //流程资源扩展数据,String格式
     private String ruleSourceExtData;
 
+    //流程资源扩展数据,Map格式
+    private Map<String, String> ruleSourceExtDataMap;
+
     //slot的数量
     private int slotSize;
 
@@ -208,4 +213,12 @@ public class LiteflowProperty {
     public void setRuleSourceExtData(String ruleSourceExtData) {
         this.ruleSourceExtData = ruleSourceExtData;
     }
+
+    public Map<String, String> getRuleSourceExtDataMap() {
+        return ruleSourceExtDataMap;
+    }
+
+    public void setRuleSourceExtDataMap(Map<String, String> ruleSourceExtDataMap) {
+        this.ruleSourceExtDataMap = ruleSourceExtDataMap;
+    }
 }

+ 1 - 0
liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/config/LiteflowPropertyAutoConfiguration.java

@@ -26,6 +26,7 @@ public class LiteflowPropertyAutoConfiguration {
         LiteflowConfig liteflowConfig = new LiteflowConfig();
         liteflowConfig.setRuleSource(property.getRuleSource());
         liteflowConfig.setRuleSourceExtData(property.getRuleSourceExtData());
+        liteflowConfig.setRuleSourceExtDataMap(property.getRuleSourceExtDataMap());
         liteflowConfig.setSlotSize(property.getSlotSize());
         liteflowConfig.setThreadExecutorClass(property.getThreadExecutorClass());
         liteflowConfig.setWhenMaxWaitSeconds(property.getWhenMaxWaitSeconds());

+ 6 - 0
liteflow-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -6,6 +6,12 @@
       "description": "rule source extended data.",
       "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty"
     },
+    {
+      "name": "liteflow.rule-source-ext-data-map",
+      "type": "java.util.Map",
+      "description": "rule source extended data map.",
+      "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty"
+    },
     {
       "name": "liteflow.request-id-generator-class",
       "type": "java.lang.String",