• 事件规则客户端


    一、简介

    1.1 概述

    事件调度客户端与平台服务事件管理配对,平台事件管理功能添加事件及事件规则,以事件编码为key,规则列表为值,缓存到Redis中。使用该客户端时,只需要依赖该jar包就可以使用事件调度器。调度器根据传入的事件编码查询事件规则,根据规则进行方法或API的调度。

    1.2 组件坐标

    <dependency>
        <groupId>org.hzero.boot</groupId>
        <artifactId>hzero-boot-platform</artifactId>
        <version>${hzero.boot.version}</version>
    </dependency>
    

    1.3 功能特性

    二、使用说明

    2.1 添加事件规则

    首先在平台事件管理服务上配置事件及事件规则,添加事件时会为事件生成唯一编码,使用该编码作为调度某个事件的依据。
    ① 事件规则使用ongl表达式,语法如下:

    ② 如果配置的规则调用方式为方法,则添加调用方法类的bean名称以及方法名称。

    ③ 如果配置的调用方式为API,则添加对应的API地址和API方法。API地址可以在URI中带参数,使用@PathVariable接收。API方法支持GET/POST/PUT/DELETE,GET 方式只能将参数拼接到API地址后面,参数值使用占位符{}表示。其它三种方法将以application/json的形式发起请求,如果将参数拼接在地址后面,使用 @RequestParam接收参数,对象则使用 @RequestBody 接收参数。

    2.2 开发调度类

    ① 首先在服务内添加hzero-boot-platform 组件依赖
    ② 如果是API调用,则没有特殊要求,只需保证API与规则配置的一样即可
    ③ 如果是方法调用,首先方法调用类需要实现 EventHandlerBean 接口标识为一个事件处理类

    ④ 在调用的方法上使用 @EventHandlerMethod 注解标识为事件处理方法

    ⑤ 使用EventScheduler事件调度器进行事件调度,该调度器提供了一个通用的入口方法:
    Object scheduler(String eventCode, Map<String, Object> condition, EventParam... params)

    三、定制化开发

    事件调度客户端顶层依赖于接口而非具体实现,使用者若对某一个接口有特殊需求,可重新实现接口并覆盖默认配置即可。有如下接口可定制化开发:
    EventRuleRepository:事件规则资源库,默认从Redis缓存中获取事件规则。
    RuleMatcher:规则匹配器,默认使用Ognl进行规则匹配。
    RequestHelper:Http请求辅助类,默认使用RestTemplate发起Http请求。
    AsyncScheduleHelper:异步调度器,使用线程池实现异步调度方法或API。
    EventRequestInterceptor:事件API请求拦截器,通过实现该接口为请求的header添加属性。
    RequestTokenInterceptor: 为header添加token

    四、版本更新日志

    版本 0.1.0-SNAPSHOT [2018-06-16]

    展望