• Esper系列(八)Method Definition、Schema


    Method Definition

    作用:以公共静态方法的方式去访问外部数据。

     

    应用说明:

    1、返回数据的方法必须是公共静态方法(方法参数可以有多个也可以没有);
    2、如果返回一条数据或无返回数据,则方法的返回类型可以是Java类或者Map类型数据。如果返回多条数据(包括一条),则方法返回类型必须是Java类的数组或者Map数组;
    3、如果方法的返回类型是Java类或者Java类数组,则Java的类定义必须包含针对属性的get方法。
    4、如果方法的返回类型是Map或者Map数组,则Map的key-value定义固定为<String, Object>;
    5、如果返回的数据是Map或者Map数组,除了定义返回数据的方法外,还要定义返回元数据的方法(这个元数据针对返回的数据)。方法是公共静态方法,且必须是无参数方法。方法返回类型为Map<String, Class>,String表示返回的数据的名称,Class表示返回的数据的类型。返回元数据的方法名称=返回数据的方法名称+Metadata。

     

    例子:

    文件名:MyEvent.java

    public class MyEvent {
        public static Map<String, Object> getMapEvent(){
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("key", "chenx1");
            map.put("value",1);
            return map;
        }
       
        public static Map<String, Class> getMapEventMetadata(){
    10          Map<String, Class> map = new HashMap<String, Class>(); 
    11          map.put("key", String.class);
    12          map.put("value", int.class);
    13          return map;
    14      }
    15  }

    文件名:orderMainTest.java

    String epsql = "select * from method:MyEvent.getMapEvent() where value > 0";
    EPStatement epstate = epAdmin.createEPL(epsql);
    Iterator<EventBean> iter = epstate.iterator();
    while (iter.hasNext()) {
    EventBean bean = iter.next();
        System.out.println(bean.getUnderlying());
    }

    Schema

    格式:

    create [map | objectarray] schema schema_name [as] 
        (property_name property_type [,property_name property_type [,...])
      [inherits inherited_event_type[, inherited_event_type] [,...]]
      [starttimestamp timestamp_property_name]
      [endtimestamp timestamp_property_name]
      [copyfrom copy_type_name [, copy_type_name] [,...]]

    参数说明:

    1. map、objectarray分别表示当前定义的schema是map结构还是数组结构。
    2. schema_name表示schema的名字,全局唯一(as为可选内容)。
    3. property_name表示schema所包含的属性名称,property_type为属性的类型,多个属性用逗号分隔,所有属性用圆括号括起来可以使用的类型有:int、String等已经内置的Java类型;已经通过Configuration接口注册的事件类型,比如Map,数组,schema等;可以使用POJO类,如果没有import就要写全名,否则写类名即可。
    4. inherits表示继承别的事件类型,后面跟着的是要继承的事件类型。如果使用了继承,则当前定义的schema包含了继承的事件类型的所有属性。并且可以继承多个,用逗号分隔。
    5. starttimestamp和endtimestamp是两个特殊的关键字。单独使用starttimestamp时,表示为schema记一个时间戳。后面跟着已经声明的属性并且能够返回一个data-time值。如果联合endtimestamp使用,则表示这个schema只能在某段事件内使用。后面跟着的同样也是已经声明的属性并且能够返回一个data-time值。注意endtimestamp不能单独使用。
    6. copyfrom表示复制别的事件的所有属性到当前定义的schema中,并且可以copy多个事件,用逗号分隔。

    示例:

    // 创建schema
    String inepl = "create schema myevent as orderEvent";
    epAdmin.createEPL(inepl);
    // 查询
    EPStatement epstate = epAdmin.createEPL("select * from myevent");
  • 相关阅读:
    HTTP 协议(一)之基本概念入门
    聊聊 PHP 私有组件以及如何创建自己的 PHP 组件 (转)
    组件、框架、Packagist、Composer
    laravel 资源篇
    190318 面试题记录
    Http 协议
    python中全局变量的修改
    python lamba表达式
    python 按位置关系输出矩阵元素
    python 三目运算
  • 原文地址:https://www.cnblogs.com/jianyuan/p/5015535.html
Copyright © 2020-2023  润新知