Browse Source

enhancement #I45QAJ 支持自定义的zkNodePath

bryan31 3 years ago
parent
commit
cae1d37d4a

+ 3 - 13
liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java

@@ -62,8 +62,6 @@ public class FlowExecutor {
 
     private LiteflowConfig liteflowConfig;
 
-    private String zkNode;
-
     /**
      * FlowExecutor的初始化化方式,主要用于parse规则文件
      */
@@ -179,11 +177,11 @@ public class FlowExecutor {
             LOG.info("flow info loaded from Zookeeper,zkNode={},format type={}", path, pattern.getType());
             switch (pattern) {
                 case TYPE_XML:
-                    return StrUtil.isNotBlank(zkNode) ? new ZookeeperXmlFlowParser(zkNode) : new ZookeeperXmlFlowParser();
+                    return new ZookeeperXmlFlowParser(liteflowConfig.getZkNode());
                 case TYPE_JSON:
-                    return StrUtil.isNotBlank(zkNode) ? new ZookeeperJsonFlowParser(zkNode) : new ZookeeperJsonFlowParser();
+                    return new ZookeeperJsonFlowParser(liteflowConfig.getZkNode());
                 case TYPE_YML:
-                    return StrUtil.isNotBlank(zkNode) ? new ZookeeperYmlFlowParser(zkNode) : new ZookeeperYmlFlowParser();
+                    return new ZookeeperYmlFlowParser(liteflowConfig.getZkNode());
                 default:
             }
         }
@@ -374,14 +372,6 @@ public class FlowExecutor {
         return slot;
     }
 
-    public String getZkNode() {
-        return zkNode;
-    }
-
-    public void setZkNode(String zkNode) {
-        this.zkNode = zkNode;
-    }
-
     public LiteflowConfig getLiteflowConfig() {
         return liteflowConfig;
     }

+ 1 - 5
liteflow-core/src/main/java/com/yomahub/liteflow/parser/ZookeeperJsonFlowParser.java

@@ -21,11 +21,7 @@ public class ZookeeperJsonFlowParser extends JsonFlowParser{
 
     private static final Logger LOG = LoggerFactory.getLogger(ZookeeperJsonFlowParser.class);
 
-    private String nodePath = "/lite-flow/flow";
-
-    public ZookeeperJsonFlowParser() {
-
-    }
+    private final String nodePath;
 
     public ZookeeperJsonFlowParser(String node) {
         nodePath = node;

+ 1 - 5
liteflow-core/src/main/java/com/yomahub/liteflow/parser/ZookeeperXmlFlowParser.java

@@ -23,11 +23,7 @@ public class ZookeeperXmlFlowParser extends XmlFlowParser{
 
 	private static final Logger LOG = LoggerFactory.getLogger(ZookeeperXmlFlowParser.class);
 
-	private String nodePath = "/lite-flow/flow";
-
-	public ZookeeperXmlFlowParser() {
-
-	}
+	private final String nodePath;
 
 	public ZookeeperXmlFlowParser(String node) {
 		nodePath = node;

+ 1 - 5
liteflow-core/src/main/java/com/yomahub/liteflow/parser/ZookeeperYmlFlowParser.java

@@ -23,11 +23,7 @@ public class ZookeeperYmlFlowParser extends YmlFlowParser{
 
     private static final Logger LOG = LoggerFactory.getLogger(ZookeeperYmlFlowParser.class);
 
-    private String nodePath = "/lite-flow/flow";
-
-    public ZookeeperYmlFlowParser() {
-
-    }
+    private final String nodePath;
 
     public ZookeeperYmlFlowParser(String node) {
         nodePath = node;

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

@@ -9,6 +9,7 @@
 package com.yomahub.liteflow.property;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.sun.org.apache.xpath.internal.operations.Bool;
 
 /**
@@ -28,6 +29,9 @@ public class LiteflowConfig {
     //流程定义资源地址
     private String ruleSource;
 
+    //zk配置的node定义
+    private String zkNode;
+
     //slot的数量
     private Integer slotSize;
 
@@ -214,4 +218,16 @@ public class LiteflowConfig {
     public void setRetryCount(int retryCount) {
         this.retryCount = retryCount;
     }
+
+    public String getZkNode() {
+        if (StrUtil.isBlank(zkNode)){
+            return "/lite-flow/flow";
+        }else{
+            return zkNode;
+        }
+    }
+
+    public void setZkNode(String zkNode) {
+        this.zkNode = zkNode;
+    }
 }

+ 11 - 0
liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowProperty.java

@@ -15,6 +15,9 @@ public class LiteflowProperty {
     //流程定义资源地址
     private String ruleSource;
 
+    //zk配置的node节点地址
+    private String zkNode;
+
     //slot的数量
     private int slotSize;
 
@@ -109,4 +112,12 @@ public class LiteflowProperty {
     public void setRetryCount(int retryCount) {
         this.retryCount = retryCount;
     }
+
+    public String getZkNode() {
+        return zkNode;
+    }
+
+    public void setZkNode(String zkNode) {
+        this.zkNode = zkNode;
+    }
 }

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

@@ -38,6 +38,7 @@ public class LiteflowPropertyAutoConfiguration {
         liteflowConfig.setEnable(property.isEnable());
         liteflowConfig.setSupportMultipleType(property.isSupportMultipleType());
         liteflowConfig.setRetryCount(property.getRetryCount());
+        liteflowConfig.setZkNode(property.getZkNode());
         return liteflowConfig;
     }
 }

+ 1 - 0
liteflow-spring-boot-starter/src/main/resources/META-INF/liteflow-default.properties

@@ -1,5 +1,6 @@
 liteflow.enable=true
 liteflow.rule-source=config/flow.xml
+liteflow.zk-node=/lite-flow/flow
 liteflow.slot-size=1024
 liteflow.when-max-wait-seconds=15
 liteflow.when-max-workers=4