From 3763f0b9ad691b40edd0b88a3f514049c6b8d6a3 Mon Sep 17 00:00:00 2001 From: yuan <1363654894@qq.com> Date: Thu, 29 Aug 2024 20:38:19 +0800 Subject: [PATCH] =?UTF-8?q?feat():=E5=A2=9E=E5=8A=A0=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/common/domain/DataValue.java | 29 +++++++++++ .../java/com/muyu/common/enums/DataType.java | 21 ++++++++ .../src/main/java/com/muyu/engine/Main.java | 48 +++++++++++++++++++ .../com/muyu/engine/basic/BasicEngine.java | 25 ++++++++++ .../abstracts/DataEngineRowActuator.java | 27 +++++++++++ .../abstracts/DataEngineValueActuator.java | 34 +++++++++++++ .../basic/handler/DataEngineHandler.java | 27 +++++++++++ .../basic/handler/DataEngineRowHandler.java | 24 ++++++++++ .../basic/handler/DataEngineValueHandler.java | 36 ++++++++++++++ .../servier/ENGINE_VALUE_JDIES732842_V1.java | 24 ++++++++++ 10 files changed, 295 insertions(+) create mode 100644 cloud-rule-common/src/main/java/com/muyu/common/domain/DataValue.java create mode 100644 cloud-rule-common/src/main/java/com/muyu/common/enums/DataType.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/engine/Main.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/engine/basic/BasicEngine.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineRowActuator.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineValueActuator.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineHandler.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineRowHandler.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineValueHandler.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/servier/ENGINE_VALUE_JDIES732842_V1.java diff --git a/cloud-rule-common/src/main/java/com/muyu/common/domain/DataValue.java b/cloud-rule-common/src/main/java/com/muyu/common/domain/DataValue.java new file mode 100644 index 0000000..5f74629 --- /dev/null +++ b/cloud-rule-common/src/main/java/com/muyu/common/domain/DataValue.java @@ -0,0 +1,29 @@ +package com.muyu.common.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:蓬叁 + * @Package:com.muyu.common.domain + * @Project:cloud-rule + * @name:DataValue + * @Date:2024/8/29 下午4:03 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DataValue { + + private String label; + + private String key; + + private Object value; + + private String type; + +} diff --git a/cloud-rule-common/src/main/java/com/muyu/common/enums/DataType.java b/cloud-rule-common/src/main/java/com/muyu/common/enums/DataType.java new file mode 100644 index 0000000..756c987 --- /dev/null +++ b/cloud-rule-common/src/main/java/com/muyu/common/enums/DataType.java @@ -0,0 +1,21 @@ +package com.muyu.common.enums; + +/** + * @Author:蓬叁 + * @Package:com.muyu.common.domain + * @Project:cloud-rule + * @name:DataType + * @Date:2024/8/29 下午4:07 + */ +public enum DataType { + VERCHAR("verchar",String.class); + + private final String sourceType; + + private final Class targetType; + + DataType(String sourceType, Class targetType) { + this.sourceType = sourceType; + this.targetType = targetType; + } +} diff --git a/cloud-rule-server/src/main/java/com/muyu/engine/Main.java b/cloud-rule-server/src/main/java/com/muyu/engine/Main.java new file mode 100644 index 0000000..5daacaa --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/engine/Main.java @@ -0,0 +1,48 @@ +package com.muyu.engine; + +import com.muyu.common.domain.DataValue; +import com.muyu.engine.basic.BasicEngine; +import com.muyu.servier.ENGINE_VALUE_JDIES732842_V1; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Author:蓬叁 + * @Package:com.muyu.engine + * @Project:cloud-rule + * @name:Main + * @Date:2024/8/29 下午3:12 + */ +public class Main { + + static Map> engineMap = new ConcurrentHashMap<>(); + + static { + try { + Class aClass = Class.forName("com.muyu.servier.ENGINE_VALUE_JDIES732842_V1"); + try { + engineMap.put("ENGINE_VALUE_JDIES732842_V1",(BasicEngine) aClass.newInstance()); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + public static void main(String[] args) { + DataValue dataValue = DataValue.builder() + .type("String") + .label("姓名") + .key("name") + .value(null) + .build(); + BasicEngine engine = engineMap.get("ENGINE_VALUE_JDIES732842_V1"); + engine.set(dataValue); + engine.execution(); + } + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/engine/basic/BasicEngine.java b/cloud-rule-server/src/main/java/com/muyu/engine/basic/BasicEngine.java new file mode 100644 index 0000000..40efb18 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/engine/basic/BasicEngine.java @@ -0,0 +1,25 @@ +package com.muyu.engine.basic; + +import com.muyu.common.domain.DataValue; +import com.muyu.engine.basic.handler.DataEngineValueHandler; + +/** + * @Author:蓬叁 + * @Package:com.muyu.engine.basic + * @Project:cloud-rule + * @name:BasicEngin + * @Date:2024/8/29 下午3:13 + */ +public interface BasicEngine { + + public void set(DataValue dataValue); + + //获取原始值 + public V get(); + + public default void remove(){ + DataEngineValueHandler.remove(); + } + + public void execution(); +} diff --git a/cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineRowActuator.java b/cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineRowActuator.java new file mode 100644 index 0000000..bee9989 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineRowActuator.java @@ -0,0 +1,27 @@ +package com.muyu.engine.basic.abstracts; + +import com.muyu.common.domain.DataValue; +import com.muyu.engine.basic.BasicEngine; +import com.muyu.engine.basic.handler.DataEngineRowHandler; +import com.muyu.engine.basic.handler.DataEngineValueHandler; + +/** + * @Author:蓬叁 + * @Package:com.muyu.engine.basic.handler + * @Project:cloud-rule + * @name:DataEngineValueActuator + * @Date:2024/8/29 下午4:21 + * @Description: 数据值处理对象 + */ +public abstract class DataEngineRowActuator implements BasicEngine { + + public void set(DataValue[] dataValue){ + DataEngineRowHandler.set(dataValue); + } + + //获取原始值 + public DataValue[] get(){ + return DataEngineRowHandler.get(); + } + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineValueActuator.java b/cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineValueActuator.java new file mode 100644 index 0000000..07588d5 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/engine/basic/abstracts/DataEngineValueActuator.java @@ -0,0 +1,34 @@ +package com.muyu.engine.basic.abstracts; + +import com.muyu.common.domain.DataValue; +import com.muyu.engine.basic.BasicEngine; +import com.muyu.engine.basic.handler.DataEngineValueHandler; + +/** + * @Author:蓬叁 + * @Package:com.muyu.engine.basic.handler + * @Project:cloud-rule + * @name:DataEngineValueActuator + * @Date:2024/8/29 下午4:21 + * @Description: 数据值处理对象 + */ +public abstract class DataEngineValueActuator implements BasicEngine { + + public void set(DataValue dataValue){ + DataEngineValueHandler.set(dataValue); + } + + //获取原始值 + public DataValue get(){ + return DataEngineValueHandler.get(); + } + + @Override + public void execution() { + this.run(); + this.remove(); + } + + public abstract void run(); + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineHandler.java b/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineHandler.java new file mode 100644 index 0000000..1406221 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineHandler.java @@ -0,0 +1,27 @@ +package com.muyu.engine.basic.handler; + +/** + * @Author:蓬叁 + * @Package:com.muyu.engine.basic.handler + * @Project:cloud-rule + * @name:DataEngineHandler + * @Date:2024/8/29 下午3:15 + * @Description: 规则引擎作用域 + */ +public class DataEngineHandler { + + private static final ThreadLocal dataEngineHandler = new ThreadLocal<>(); + + public static void set(final Object handler) { + dataEngineHandler.set(handler); + } + + public static T get() { + return (T) dataEngineHandler.get(); + } + + public static void remove(){ + dataEngineHandler.remove(); + } + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineRowHandler.java b/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineRowHandler.java new file mode 100644 index 0000000..30262f9 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineRowHandler.java @@ -0,0 +1,24 @@ +package com.muyu.engine.basic.handler; + +import com.muyu.common.core.text.Convert; +import com.muyu.common.domain.DataValue; + +/** + * @Author:蓬叁 + * @Package:com.muyu.engine.basic.handler + * @Project:cloud-rule + * @name:DataEngineValueHandler + * @Date:2024/8/29 下午3:21 + * @Description: 数据记录/行作用域 + */ +public class DataEngineRowHandler { + + public static void set(DataValue[] dataValue){ + DataEngineHandler.set(dataValue); + } + + public static DataValue[] get(){ + return DataEngineHandler.get(); + } + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineValueHandler.java b/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineValueHandler.java new file mode 100644 index 0000000..1a101d6 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/engine/basic/handler/DataEngineValueHandler.java @@ -0,0 +1,36 @@ +package com.muyu.engine.basic.handler; + +import com.muyu.common.core.text.Convert; +import com.muyu.common.domain.DataValue; + +/** + * @Author:蓬叁 + * @Package:com.muyu.engine.basic.handler + * @Project:cloud-rule + * @name:DataEngineValueHandler + * @Date:2024/8/29 下午3:21 + * @Description: 数据自作用域 + */ +public class DataEngineValueHandler { + + public static void set(DataValue dataValue){ + DataEngineHandler.set(dataValue); + } + + public static DataValue get(){ + return DataEngineHandler.get(); + } + + public static void remove(){ + DataEngineHandler.remove(); + } + + public static Object getValue(){ + return get().getValue(); + } + + public static Integer getIntegerValue(){ + return Convert.toInt(getValue(),null); + } + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/servier/ENGINE_VALUE_JDIES732842_V1.java b/cloud-rule-server/src/main/java/com/muyu/servier/ENGINE_VALUE_JDIES732842_V1.java new file mode 100644 index 0000000..75953ab --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/servier/ENGINE_VALUE_JDIES732842_V1.java @@ -0,0 +1,24 @@ +package com.muyu.servier; + +import com.muyu.common.domain.DataValue; +import com.muyu.engine.basic.abstracts.DataEngineValueActuator; +import com.muyu.engine.basic.handler.DataEngineValueHandler; + +/** + * @Author:蓬叁 + * @Package:com.muyu.servier + * @Project:cloud-rule + * @name:ENGINE_VALUE_JDIES732842_V1 + * @Date:2024/8/29 下午4:54 + */ +public class ENGINE_VALUE_JDIES732842_V1 extends DataEngineValueActuator { + + @Override + public void run() { + DataValue dataValue = get(); + if (dataValue == null){ + System.out.println("数据为空,需要丢弃。"); + } + } + +}