From 316c738325642f497c4744de19c7e3ca6487a54d Mon Sep 17 00:00:00 2001 From: tonnyguo Date: Wed, 7 Apr 2021 14:07:36 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=99=A8=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/core/FlowExecutor.java | 41 +++++++++++++------ .../java/com/yomahub/flowtest/TestFlow.java | 2 +- .../flowtest/custom/CustomXmlClass.java | 21 ++++++++++ .../src/main/resources/application.properties | 2 +- 4 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 liteflow-test-springboot/src/main/java/com/yomahub/flowtest/custom/CustomXmlClass.java diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java index aa87f56db..20c1f834c 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java @@ -72,19 +72,21 @@ public class FlowExecutor { for (String path : rulePath) { try { FlowParserTypeEnum pattern = matchFormatConfig(path); - path = ReUtil.replaceAll(path, PREFIX_FORMATE_CONFIG_REGEX, ""); - switch (pattern) { - case TYPE_XML: - parser = matchFormatParser(path, FlowParserTypeEnum.TYPE_XML); - break; - case TYPE_JSON: - parser = matchFormatParser(path, FlowParserTypeEnum.TYPE_JSON); - break; - case TYPE_YML: - parser = matchFormatParser(path, FlowParserTypeEnum.TYPE_YML); - break; - default: - LOG.error("can't surport the format {}", path); + if(ObjectUtil.isNotNull(pattern)) { + path = ReUtil.replaceAll(path, PREFIX_FORMATE_CONFIG_REGEX, ""); + switch (pattern) { + case TYPE_XML: + parser = matchFormatParser(path, FlowParserTypeEnum.TYPE_XML); + break; + case TYPE_JSON: + parser = matchFormatParser(path, FlowParserTypeEnum.TYPE_JSON); + break; + case TYPE_YML: + parser = matchFormatParser(path, FlowParserTypeEnum.TYPE_YML); + break; + default: + LOG.error("can't surport the format {}", path); + } } if(ObjectUtil.isNotNull(parser)) { parser.parseMain(path); @@ -183,6 +185,19 @@ public class FlowExecutor { return FlowParserTypeEnum.TYPE_JSON; } else if(ReUtil.isMatch(LOCAL_YML_CONFIG_REGEX, path) || ReUtil.isMatch(FORMATE_YML_CONFIG_REGEX, path)) { return FlowParserTypeEnum.TYPE_YML; + } else if(isClassConfig(path)) { + try { + Class clazz = Class.forName(path); + if(ClassXmlFlowParser.class.isAssignableFrom(clazz)) { + return FlowParserTypeEnum.TYPE_XML; + } else if(ClassJsonFlowParser.class.isAssignableFrom(clazz)) { + return FlowParserTypeEnum.TYPE_JSON; + } else if(ClassYmlFlowParser.class.isAssignableFrom(clazz)) { + return FlowParserTypeEnum.TYPE_YML; + } + } catch (ClassNotFoundException e) { + LOG.error(e.getMessage()); + } } return null; } diff --git a/liteflow-test-springboot/src/main/java/com/yomahub/flowtest/TestFlow.java b/liteflow-test-springboot/src/main/java/com/yomahub/flowtest/TestFlow.java index 42cc7a8e9..12abaaad6 100644 --- a/liteflow-test-springboot/src/main/java/com/yomahub/flowtest/TestFlow.java +++ b/liteflow-test-springboot/src/main/java/com/yomahub/flowtest/TestFlow.java @@ -15,7 +15,7 @@ public class TestFlow implements CommandLineRunner { @Override public void run(String... args) throws Exception { - LiteflowResponse response= flowExecutor.execute("chain1", "it's a request"); + LiteflowResponse response= flowExecutor.execute("chain4", "it's a request"); System.out.println(response); } } diff --git a/liteflow-test-springboot/src/main/java/com/yomahub/flowtest/custom/CustomXmlClass.java b/liteflow-test-springboot/src/main/java/com/yomahub/flowtest/custom/CustomXmlClass.java new file mode 100644 index 000000000..b2310abe7 --- /dev/null +++ b/liteflow-test-springboot/src/main/java/com/yomahub/flowtest/custom/CustomXmlClass.java @@ -0,0 +1,21 @@ +package com.yomahub.flowtest.custom; + +import com.yomahub.liteflow.parser.ClassXmlFlowParser; + +/** + * @Author: guodongqing + * @since: 2.5.0 + */ +public class CustomXmlClass extends ClassXmlFlowParser { + @Override + public String parseCustom() { + String content = "\n" + + "\n" + + "\t\n" + + "\t\t\n" + + "\t\t\n" + + "\t\n" + + ""; + return content; + } +} diff --git a/liteflow-test-springboot/src/main/resources/application.properties b/liteflow-test-springboot/src/main/resources/application.properties index 935a66a81..c20ae8aa2 100644 --- a/liteflow-test-springboot/src/main/resources/application.properties +++ b/liteflow-test-springboot/src/main/resources/application.properties @@ -1,6 +1,6 @@ #liteflow.rule-source=config/flow.xml #liteflow.rule-source=config/flow.yml -liteflow.rule-source=config/flow.json +liteflow.rule-source=config/flow.json;com.yomahub.flowtest.custom.CustomXmlClass #liteflow.slot-size=2048 liteflow.when-max-wait-seconds=20 liteflow.monitor.enable-log=true