zoukankan      html  css  js  c++  java
  • 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");
  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/jianyuan/p/5015535.html
Copyright © 2011-2022 走看看