跳转到内容

Service 开发文档

@ConfigFieldInfo

ConfigFieldInfo主要是对前端配置信息的描述,比如输入方式是文本框还是下拉框,属性是必填,默认值,只读等。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface ConfigFieldInfo {
//是否有默认值
String defaultValue() default "";
//例子
String example() default "";
//标签名
String label() default "";
//是否必填
boolean required() default true;
//只读
boolean readonly() default false;
//
String path() default "";
//
String param() default "";
///
String show() default "";
//输入的类型
String inputType() default FieldInputType.Auto;
//是否是动态的
boolean dynamic() default false;
//如果有连接器,标识是哪个连接器
Class connectorType() default Void.class;
//如果有限流器,标识是哪个限流器
Class limiterType() default Void.class;
//如果有鉴权属性,标识是哪个限流器
Class authenticatorType() default Void.class;
}

示例

@Data
public class SwaggerImportConfig {
@ConfigFieldInfo(label = "Swagger URL", inputType = FieldInputType.String)
private String swaggerUrl;
}

image-20210621140009425

@ServiceConnector 注解

@ServiceConnector 标识这是一个Service类。在Mule启动的时候Service被加载到上下文,在我们添加SOAP的WSDL接口文档,HTTP的Swagger接口文档,Service类去解析文档生成ServiceConfig信息存到数据库中。在我们选择好执行Service和Operation时候配置出可运行流程的时候,点击保存Service会调用configure将执行流配置你选的operation。

@Component
@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface ServiceConnector {
//sevice 的名称,作为唯一标识
String value();
//导入文档的配置类
Class importConfigType();
//导入ServiceConfig配置类
Class serviceConfigType();
}

DalaranService

public interface DalaranService<ImportConfig, ServiceConfig, OperationConfig extends ServiceOperation> {
//将流程执行的路由和operationConfig(流程配置service,operation), 在生成可执行的流程时进行配置。
void configure(ProcessorDefinition route, OperationConfig operationConfig);
//根据选择的operationKey获取执行操作的配置
OperationConfig getOperationConfig(ServiceConfig serviceConfig, @NotNull String operationKey);
//获取所有的Operation(相对应的接口元数据信息)
List<OperationConfig> operations(ServiceConfig serviceConfig);
//导入importConfig 生成ServiceConfig
ServiceConfig importConfig(ImportConfig config);
//根据ImportConfig 和 OperationConfig接口的元数据信息 获得Operation的出入参数模型信息
ServiceOperationModel buildOperationModel(ImportConfig config, OperationConfig operationConfig);
}

params

  • importConfig 对导入SOAP的WSDL文档,HTTP的Swagger文档的url
@Data
public class SwaggerImportConfig {
@ConfigFieldInfo(label = "Swagger URL", inputType = FieldInputType.String)
private String swaggerUrl;
}
  • ServiceConfig 存储着解析SOAPWSDL文档信息包括 url,basePath,OperationConfig集合
@Data
public class SwaggerServiceConfig {
private String url;
private String basePath;
private List<SwaggerOperationConfig> configs;
}
  • OperationConfig 对应的接口元数据信息包括 url,path,method
@Data
public class SwaggerOperationConfig extends ServiceOperation {
private String url;
private String path;
private HttpMethod method;
}

示例:

@ServiceConnector(
value = "swagger-connector",
importConfigType = SwaggerImportConfig.class,
serviceConfigType = SwaggerServiceConfig.class
)
public class SwaggerService implements DalaranService<SwaggerImportConfig, SwaggerServiceConfig, SwaggerOperationConfig> {
private static final Logger logger = LoggerFactory.getLogger(SoapService.class);
private static final String HTTP_URI = "%s4://%s%s?bridgeEndpoint=true";
private static final String SUCCESSFUL_RESPONSE_CODE = "200";
private static final String OPERATION_SPLIT = "::";
@Override
public void configure(ProcessorDefinition route, SwaggerOperationConfig operationConfig) {
//todo 将流程执行的路由和operationConfig(流程配置service,operation), 在生成可执行的流程时进行配置。
route.convertBodyTo(String.class);
}
@Override
public SwaggerOperationConfig getOperationConfig(SwaggerServiceConfig swaggerServiceConfig, @NotNull String operationKey) {
//根据选择的operationKey获取执行操作的配置
return operationConfigOptional.get();
}
@Override
public List<SwaggerOperationConfig> operations(SwaggerServiceConfig swaggerServiceConfig) {
//获取所有的Operation(相对应的接口元数据信息)
return swaggerServiceConfig.getConfigs();
}
//点击保存Service,生成SwaggerServiceConfig存入数据库。
@Override
public SwaggerServiceConfig importConfig(SwaggerImportConfig importConfig) {
//导入importConfig 生成ServiceConfig
return null;
}
@Override
public ServiceOperationModel buildOperationModel(SwaggerImportConfig swaggerImportConfig, SwaggerOperationConfig
//根据ImportConfig 和 OperationConfig接口的元数据信息 获得Operation的出入参数模型信息
}
}