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;}示例
@Datapublic class SwaggerImportConfig { @ConfigFieldInfo(label = "Swagger URL", inputType = FieldInputType.String) private String swaggerUrl;}
@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
@Datapublic class SwaggerImportConfig {
@ConfigFieldInfo(label = "Swagger URL", inputType = FieldInputType.String) private String swaggerUrl;}- ServiceConfig 存储着解析SOAPWSDL文档信息包括 url,basePath,OperationConfig集合
@Datapublic class SwaggerServiceConfig {
private String url;
private String basePath;
private List<SwaggerOperationConfig> configs;}- OperationConfig 对应的接口元数据信息包括 url,path,method
@Datapublic 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的出入参数模型信息 }}