diff --git a/modules/i3plus-pojo-bsp/pom.xml b/modules/i3plus-pojo-bsp/pom.xml
new file mode 100644
index 0000000..faedcff
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/pom.xml
@@ -0,0 +1,57 @@
+
+
+
+ i3plus-pojo
+ i3plus.pojo
+ 1.0-DEV-SNAPSHOT
+ ../../pom.xml
+
+ 4.0.0
+
+ i3plus-pojo-bsp
+
+
+
+ i3plus.pojo
+ i3plus-pojo-base
+
+
+ com.google.code.gson
+ gson
+
+
+
+
+ dev
+
+ DEV
+
+
+ true
+
+
+
+ test
+
+ TEST
+
+
+
+ docker
+
+ DOCKER
+
+
+
+ prod
+
+ PROD
+
+
+
+
+ ${project.artifactId}-${project.version}
+
+
\ No newline at end of file
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/MethodDescription.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/MethodDescription.java
new file mode 100644
index 0000000..67c23e3
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/MethodDescription.java
@@ -0,0 +1,28 @@
+package cn.estsh.i3plus.pojo.bsp.client.bean.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.util.List;
+
+/**
+ * @author ns
+ * @create 2021/5/24 0024 上午 11:08
+ */
+@Getter
+@ToString
+@AllArgsConstructor
+@Api("方法信息")
+public class MethodDescription implements Serializable {
+ @ApiParam("方法的代理对象")
+ private final Method method;
+ @ApiParam("方法参数的长度")
+ private final int ParamLength;
+ @ApiParam("方法参数的详细信息")
+ private final List paramInfoList;
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/MethodExcuteParam.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/MethodExcuteParam.java
new file mode 100644
index 0000000..7e14ece
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/MethodExcuteParam.java
@@ -0,0 +1,28 @@
+package cn.estsh.i3plus.pojo.bsp.client.bean.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * @author ns
+ * @create 2021/5/26 0026 下午 13:24
+ * 方法执行所需要的参数
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Api("方法执行所需要的参数")
+public class MethodExcuteParam implements Serializable {
+ @ApiParam("调用方法的key")
+ private String methodHandlerKey;
+ @ApiParam(value = "调用方法的参数map", allowEmptyValue = true)
+ private Map jsonParamMap;
+ @ApiParam(value = "调用方法参数列表", allowEmptyValue = true)
+ private Object[] jsonParamArray;
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/ParamInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/ParamInfo.java
new file mode 100644
index 0000000..a067e04
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/model/ParamInfo.java
@@ -0,0 +1,24 @@
+package cn.estsh.i3plus.pojo.bsp.client.bean.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author ns
+ * @create 2021/5/26 0026 下午 17:41
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Api("参数的信息")
+public class ParamInfo {
+ @ApiParam("参数名")
+ private String name;
+ @ApiParam("参数类型名")
+ private String typeName;
+ @ApiParam("参数类信息")
+ private Class clzz;
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/MethodRegistryParam.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/MethodRegistryParam.java
new file mode 100644
index 0000000..6d5bddf
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/MethodRegistryParam.java
@@ -0,0 +1,40 @@
+package cn.estsh.i3plus.pojo.bsp.client.bean.po;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author ns
+ * @create 2021/5/26 0026 下午 14:39
+ * 注册的方法信息
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Api("方法注册的参数列表")
+public class MethodRegistryParam implements Serializable {
+
+ @ApiParam("方法名")
+ private String methodName;
+ @ApiParam("方法所在bean的名字")
+ private String beanName;
+ @ApiParam("方法调用所需要的key")
+ private String methodHandlerKey;
+ @ApiParam("方法参数列表")
+ private List parameterList;
+ @ApiParam("方法的版本")
+ private String version;
+ @ApiParam("方法影响了那些表")
+ private String[] affectTableClassName;
+ @ApiParam("方法的处理逻辑")
+ private String[] systemProcess;
+ @ApiParam("方法参数的验证逻辑")
+ private String[] validation;
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/ParamDescription.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/ParamDescription.java
new file mode 100644
index 0000000..f37c059
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/ParamDescription.java
@@ -0,0 +1,42 @@
+package cn.estsh.i3plus.pojo.bsp.client.bean.po;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author ns
+ * @create 2021/5/24 0024 上午 11:08
+ * 注册的参数信息
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Api("参数的注册信息")
+public class ParamDescription implements Serializable {
+ @ApiParam("参数名")
+ private String name;
+ @ApiParam(value = "参数类型",defaultValue ="1" ,allowableValues = "0 或者 1")
+ private Integer type; //出参还是入参
+ @ApiParam("参数类型名")
+ private String typeName; //类型
+ //默认值
+ @ApiParam("参数默认值")
+ private String defaultValue;
+ //允许的值
+ @ApiParam("参数可选值")
+ private String[] allowableValues;
+ //是否必填
+ @ApiParam("参数是否必填")
+ private Boolean required;
+ //例子
+ @ApiParam("参数的例子")
+ private String example;
+ //是否可以为空
+ @ApiParam("参数是否可以为空")
+ private Boolean allowEmptyValue;
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/RegistryParam.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/RegistryParam.java
new file mode 100644
index 0000000..faf16b6
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/client/bean/po/RegistryParam.java
@@ -0,0 +1,28 @@
+package cn.estsh.i3plus.pojo.bsp.client.bean.po;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author ns
+ * @create 2021/5/26 0026 下午 14:33
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Api("执行器注册的信息")
+public class RegistryParam implements Serializable {
+ @ApiParam("执行器的名称")
+ private String appname;
+ @ApiParam("执行器的地址")
+ private String address;
+ @ApiParam("执行器注册的方法信息")
+ private List methodRegistryParamList;
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/ReturnT.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/ReturnT.java
new file mode 100644
index 0000000..81d6e63
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/ReturnT.java
@@ -0,0 +1,56 @@
+package cn.estsh.i3plus.pojo.bsp.common;
+
+import java.io.Serializable;
+
+/**
+ * @author Castle
+ */
+public class ReturnT implements Serializable {
+ public static final long serialVersionUID = 42L;
+
+ public static final int SUCCESS_CODE = 200;
+ public static final int FAIL_CODE = 500;
+
+ public static final ReturnT SUCCESS = new ReturnT(null);
+ public static final ReturnT FAIL = new ReturnT(FAIL_CODE, null);
+
+ private int code;
+ private String msg;
+ private T content;
+
+ public ReturnT(){}
+ public ReturnT(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+
+ public ReturnT(T content) {
+ this.code = SUCCESS_CODE;
+ this.content = content;
+ }
+
+ public int getCode() {
+ return code;
+ }
+ public void setCode(int code) {
+ this.code = code;
+ }
+ public String getMsg() {
+ return msg;
+ }
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+ public T getContent() {
+ return content;
+ }
+ public void setContent(T content) {
+ this.content = content;
+ }
+
+ @Override
+ public String toString() {
+ return "ReturnT [code=" + code + ", msg=" + msg + ", content=" + content + "]";
+ }
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/util/GsonTool.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/util/GsonTool.java
new file mode 100644
index 0000000..8fddf3a
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/util/GsonTool.java
@@ -0,0 +1,98 @@
+package cn.estsh.i3plus.pojo.bsp.common.util;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.List;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/17 13:40
+ * @Modify:
+ **/
+public class GsonTool {
+ private static Gson gson = null;
+
+ static {
+ gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
+ }
+
+ /**
+ * Object 转成 json
+ *
+ * @param src
+ * @return String
+ */
+ public static String toJson(Object src) {
+ return gson.toJson(src);
+ }
+
+ /**
+ * json 转成 特定的cls的Object
+ *
+ * @param json
+ * @param classOfT
+ * @return
+ */
+ public static T fromJson(String json, Class classOfT) {
+ return gson.fromJson(json, classOfT);
+ }
+
+ /**
+ * json 转成 特定的 rawClass 的Object
+ *
+ * @param json
+ * @param classOfT
+ * @param argClassOfT
+ * @return
+ */
+ public static T fromJson(String json, Class classOfT, Class argClassOfT) {
+ Type type = new ParameterizedType4ReturnT(classOfT, new Class[]{argClassOfT});
+ return gson.fromJson(json, type);
+ }
+
+ public static class ParameterizedType4ReturnT implements ParameterizedType {
+ private final Class raw;
+ private final Type[] args;
+
+ public ParameterizedType4ReturnT(Class raw, Type[] args) {
+ this.raw = raw;
+ this.args = args != null ? args : new Type[0];
+ }
+
+ @Override
+ public Type[] getActualTypeArguments() {
+ return args;
+ }
+
+ @Override
+ public Type getRawType() {
+ return raw;
+ }
+
+ @Override
+ public Type getOwnerType() {
+ return null;
+ }
+ }
+
+ /**
+ * json 转成 特定的cls的list
+ *
+ * @param json
+ * @param classOfT
+ * @return
+ */
+ public static List fromJsonList(String json, Class classOfT) {
+ return gson.fromJson(
+ json,
+ new TypeToken>() {
+ }.getType()
+ );
+ }
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/util/HttpUtils.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/util/HttpUtils.java
new file mode 100644
index 0000000..2d28014
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/common/util/HttpUtils.java
@@ -0,0 +1,149 @@
+package cn.estsh.i3plus.pojo.bsp.common.util;
+
+import cn.estsh.i3plus.pojo.bsp.common.ReturnT;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.*;
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/17 13:37
+ * @Modify:
+ **/
+public class HttpUtils {
+ private static Logger logger = LoggerFactory.getLogger(HttpUtils.class);
+
+ // trust-https start
+ private static void trustAllHosts(HttpsURLConnection connection) {
+ try {
+ SSLContext sc = SSLContext.getInstance("TLS");
+ sc.init(null, trustAllCerts, new java.security.SecureRandom());
+ SSLSocketFactory newFactory = sc.getSocketFactory();
+
+ connection.setSSLSocketFactory(newFactory);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ connection.setHostnameVerifier(new HostnameVerifier() {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ });
+ }
+
+ private static final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return new X509Certificate[]{};
+ }
+
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+ }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+ }
+ }};
+ // trust-https end
+
+
+ /**
+ * post
+ *
+ * @param url
+ * @param timeout
+ * @param requestObj
+ * @param returnTargClassOfT
+ * @return
+ */
+ public static ReturnT postBody(String url, int timeout, Object requestObj, Class returnTargClassOfT) {
+ HttpURLConnection connection = null;
+ BufferedReader bufferedReader = null;
+ try {
+ // connection
+ URL realUrl = new URL(url);
+ connection = (HttpURLConnection) realUrl.openConnection();
+
+ // trust-https
+ boolean useHttps = url.startsWith("https");
+ if (useHttps) {
+ HttpsURLConnection https = (HttpsURLConnection) connection;
+ trustAllHosts(https);
+ }
+
+ // connection setting
+ connection.setRequestMethod("POST");
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ connection.setUseCaches(false);
+ connection.setReadTimeout(timeout * 1000);
+ connection.setConnectTimeout(3 * 1000);
+ connection.setRequestProperty("connection", "Keep-Alive");
+ connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
+ connection.setRequestProperty("Accept-Charset", "application/json;charset=UTF-8");
+
+ // do connection
+ connection.connect();
+
+ // write requestBody
+ if (requestObj != null) {
+ String requestBody = GsonTool.toJson(requestObj);
+
+ DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
+ dataOutputStream.write(requestBody.getBytes("UTF-8"));
+ dataOutputStream.flush();
+ dataOutputStream.close();
+ }
+
+ // valid StatusCode
+ int statusCode = connection.getResponseCode();
+ if (statusCode != 200) {
+
+ return new ReturnT(ReturnT.FAIL_CODE, "rpc remoting fail, StatusCode(" + statusCode + ") invalid. for url : " + url);
+ }
+
+ // result
+ bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
+ StringBuilder result = new StringBuilder();
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ result.append(line);
+ }
+ String resultJson = result.toString();
+ // parse returnT
+ try {
+ return GsonTool.fromJson(resultJson, ReturnT.class);
+ } catch (Exception e) {
+ logger.error("rpc remoting (url=" + url + ") response content invalid(" + resultJson + ").", e);
+ return new ReturnT(ReturnT.FAIL_CODE, "rpc remoting (url=" + url + ") response content invalid(" + resultJson + ").");
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ return new ReturnT(ReturnT.FAIL_CODE, "rpc remoting error(" + e.getMessage() + "), for url : " + url);
+ } finally {
+ try {
+ if (bufferedReader != null) {
+ bufferedReader.close();
+ }
+ if (connection != null) {
+ connection.disconnect();
+ }
+ } catch (Exception e2) {
+ logger.error(e2.getMessage(), e2);
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMessageInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMessageInfo.java
new file mode 100644
index 0000000..420f335
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMessageInfo.java
@@ -0,0 +1,32 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description :执行器注册参数
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/11 16:57
+ * @Modify:
+ **/
+@Data
+@AllArgsConstructor
+@Api("注册/心跳")
+public class RegistryMessageInfo {
+
+ @ApiParam("appName,根据appName分执行器组")
+ private String appName;
+
+ @ApiParam("执行器地址")
+ private String address;
+
+ @ApiParam("方法列表")
+ private List methodRegistryParamList;
+
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMethodInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMethodInfo.java
new file mode 100644
index 0000000..bac52b3
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMethodInfo.java
@@ -0,0 +1,51 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/15 9:33
+ * @Modify:
+ **/
+@Data
+@AllArgsConstructor
+@Api("注册方法信息")
+public class RegistryMethodInfo {
+
+ @ApiParam("方法名")
+ private String methodName;
+
+ @ApiParam("调用方法时的key")
+ private String methodHandlerKey;
+
+ @ApiParam("参数列表")
+ private List methodParamList;
+
+ /*-----------------------------------文档------------------------------------------------*/
+
+ @ApiParam("beanName")
+ private String beanName;
+ @ApiParam("方法版本号")
+ private String version;
+
+ @ApiParam("受影响的表名,update/insert")
+ private List affectTableClassName;
+
+ @ApiParam("系统要执行的逻辑")
+ private List systemProcess;
+ /**
+ * 参数验证
+ */
+ @ApiParam("参数验证")
+ private List validation;
+
+
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMethodParamInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMethodParamInfo.java
new file mode 100644
index 0000000..4bac2c0
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/model/RegistryMethodParamInfo.java
@@ -0,0 +1,30 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.model;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/15 9:35
+ * @Modify:
+ **/
+@Data
+@AllArgsConstructor
+@Api("方法祖册参数")
+public class RegistryMethodParamInfo {
+
+ @ApiParam("参数名")
+ private String name;
+
+ @ApiParam("参数类型,入参1,出参0")
+ private Integer type;
+
+ @ApiParam("数据类型,基本数据类型")
+ private String typeName;
+
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorGroupRegistryInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorGroupRegistryInfo.java
new file mode 100644
index 0000000..77de389
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorGroupRegistryInfo.java
@@ -0,0 +1,52 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.po;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 13:21
+ * @Modify:
+ **/
+@Entity
+@Table(name = "EXECUTOR_GROUP_REGISTRY_INFO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel("执行器组")
+public class ExecutorGroupRegistryInfo extends BaseBean implements Serializable {
+
+ private static final long serialVersionUID = -3871002350228229604L;
+
+ @Column(name = "APP_NAME")
+ @ApiModelProperty("执行器组的applicationName")
+ private String appName;
+
+ @Column(name = "ADDRESS_STR")
+ @ApiModelProperty("注册地址字符串,地址用逗号间隔")
+ private String addressStr;
+
+ @Column(name = "TYPE",columnDefinition = "int default 0")
+ @ApiModelProperty("自动注册 0,手动注册 1")
+ private String type;
+
+ @Column
+ @ApiModelProperty("执行器组路由策略")
+ private String routeStrategy;
+
+ @Column(name = "UPDATE_TIME")
+ @ApiModelProperty("更新时间")
+ private Date updateTime;
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryInfo.java
new file mode 100644
index 0000000..dc7a4f9
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryInfo.java
@@ -0,0 +1,43 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.po;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 13:33
+ * @Modify:
+ **/
+@Entity
+@Table(name = "EXECUTOR_REGISTRY_INFO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel("执行器")
+public class ExecutorRegistryInfo extends BaseBean implements Serializable {
+ private static final long serialVersionUID = -736085114778936163L;
+
+ @Column(name = "APP_NAME")
+ @ApiModelProperty("执行器application Name")
+ private String appName;
+
+ @Column(name = "ADDRESS")
+ @ApiModelProperty("执行器地址,包含ip:port")
+ private String address;
+
+ @Column(name = "UPDATE_TIME")
+ @ApiModelProperty("最近一次心跳时间")
+ private Date updateTime;
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryMethodDocInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryMethodDocInfo.java
new file mode 100644
index 0000000..d798c1e
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryMethodDocInfo.java
@@ -0,0 +1,57 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.po;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 13:43
+ * @Modify:
+ **/
+@Entity
+@Table(name = "EXECUTOR_REGISTRY_METHOD_DOC_INFO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel("方法doc")
+public class ExecutorRegistryMethodDocInfo extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 2770821289940006535L;
+
+ @Column(name = "BEAN_NAME")
+ @ApiModelProperty("beanName")
+ private String beanName;
+
+ @Column(name = "VERSION")
+ @ApiModelProperty("方法版本")
+ private String version;
+
+ @Column(name = "AFFECT_TABLE_STR")
+ @ApiModelProperty("受影响的表名,逗号分割,原来为数组")
+ private String affectTableClassNameStr;
+
+ @Column(name = "SYSTEM_PROCESS_STR")
+ @ApiModelProperty("系统要执行的逻辑 逗号分割,原来为数组")
+ private String systemProcessStr;
+ /**
+ * 参数验证 逗号分割,原来为数组
+ */
+ @Column(name = "VALIDATION")
+ @ApiModelProperty("参数验证 逗号分割,原来为数组")
+ private String validation;
+
+ @Column(name = "METHOD_ID")
+ @ApiModelProperty("方法ID")
+ private Long methodId;
+ //todo 缺少参数信息
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryMethodInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryMethodInfo.java
new file mode 100644
index 0000000..b18a7f7
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryMethodInfo.java
@@ -0,0 +1,51 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.po;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 13:39
+ * @Modify:
+ **/
+@Table(name = "EXECUTOR_REGISTRY_METHOD_INFO")
+@Entity
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel("方法注册信息")
+public class ExecutorRegistryMethodInfo extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 2096630767822598366L;
+
+ @Column(name = "METHOD_NAME")
+ @ApiModelProperty("方法名")
+ private String methodName;
+
+ @Column(name = "METHOD_HANDLER_KEY")
+ @ApiModelProperty("调用方法需要的key")
+ private String methodHandlerKey;
+
+ @Column(name = "BEAN_NAME")
+ @ApiModelProperty("beanName")
+ private String beanName;
+
+ @Column(name = "VERSION")
+ @ApiModelProperty("方法的版本号")
+ private String version;
+
+ @Column(name = "APP_NAME")
+ @ApiModelProperty("所属执行器的appName")
+ private String appName;
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryParamInfo.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryParamInfo.java
new file mode 100644
index 0000000..4c9ada9
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/bean/po/ExecutorRegistryParamInfo.java
@@ -0,0 +1,48 @@
+package cn.estsh.i3plus.pojo.bsp.server.bean.po;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 13:36
+ * @Modify:
+ **/
+@Entity
+@Table(name = "EXECUTOR_REGISTRY_PARAM_INFO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel("方法注册参数信息")
+public class ExecutorRegistryParamInfo extends BaseBean implements Serializable {
+ private static final long serialVersionUID = 7346454749822492424L;
+
+
+ @Column(name = "NAME")
+ @ApiModelProperty("参数名")
+ private String name;
+
+ @Column(name = "TYPE")
+ @ApiModelProperty("入参 1 ,出参 0")
+ private Integer type;
+
+ @Column(name = "TYPE_NAME")
+ @ApiModelProperty("数据类型,基本数据类型")
+ private String typeName;
+
+ @Column(name = "METHOD_ID")
+ @ApiModelProperty("所属方法的ID")
+ private Long methodId;
+
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorGroupRegistryInfoRepository.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorGroupRegistryInfoRepository.java
new file mode 100644
index 0000000..66029a7
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorGroupRegistryInfoRepository.java
@@ -0,0 +1,16 @@
+package cn.estsh.i3plus.pojo.bsp.server.repository;
+
+import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
+import cn.estsh.i3plus.pojo.bsp.server.bean.po.ExecutorGroupRegistryInfo;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 14:49
+ * @Modify:
+ **/
+@Repository
+public interface ExecutorGroupRegistryInfoRepository extends BaseRepository {
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryInfoRepository.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryInfoRepository.java
new file mode 100644
index 0000000..fc8abb5
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryInfoRepository.java
@@ -0,0 +1,16 @@
+package cn.estsh.i3plus.pojo.bsp.server.repository;
+
+import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
+import cn.estsh.i3plus.pojo.bsp.server.bean.po.ExecutorRegistryInfo;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 14:51
+ * @Modify:
+ **/
+@Repository
+public interface ExecutorRegistryInfoRepository extends BaseRepository {
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryMethodDocInfoRepository.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryMethodDocInfoRepository.java
new file mode 100644
index 0000000..988b14d
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryMethodDocInfoRepository.java
@@ -0,0 +1,16 @@
+package cn.estsh.i3plus.pojo.bsp.server.repository;
+
+import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
+import cn.estsh.i3plus.pojo.bsp.server.bean.po.ExecutorRegistryMethodDocInfo;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 14:53
+ * @Modify:
+ **/
+@Repository
+public interface ExecutorRegistryMethodDocInfoRepository extends BaseRepository {
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryMethodInfoRepository.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryMethodInfoRepository.java
new file mode 100644
index 0000000..80395db
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryMethodInfoRepository.java
@@ -0,0 +1,16 @@
+package cn.estsh.i3plus.pojo.bsp.server.repository;
+
+import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
+import cn.estsh.i3plus.pojo.bsp.server.bean.po.ExecutorRegistryMethodInfo;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 14:55
+ * @Modify:
+ **/
+@Repository
+public interface ExecutorRegistryMethodInfoRepository extends BaseRepository {
+}
diff --git a/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryParamInfoRepository.java b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryParamInfoRepository.java
new file mode 100644
index 0000000..57854e5
--- /dev/null
+++ b/modules/i3plus-pojo-bsp/src/main/java/cn/estsh/i3plus/pojo/bsp/server/repository/ExecutorRegistryParamInfoRepository.java
@@ -0,0 +1,16 @@
+package cn.estsh.i3plus.pojo.bsp.server.repository;
+
+import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
+import cn.estsh.i3plus.pojo.bsp.server.bean.po.ExecutorRegistryParamInfo;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : Castle
+ * @CreateDate : 2021/6/16 14:58
+ * @Modify:
+ **/
+@Repository
+public interface ExecutorRegistryParamInfoRepository extends BaseRepository {
+}
diff --git a/pom.xml b/pom.xml
index f250672..47ef7ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,7 @@
modules/i3plus-pojo-ics
modules/i3plus-pojo-mdm
modules/i3plus-pojo-screen
+ modules/i3plus-pojo-bsp
@@ -179,6 +180,11 @@
xstream
1.4.11.1
+
+ com.google.code.gson
+ gson
+ 2.8.6
+