标签:
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
1 | public class MyEvent { |
2 | public static Map<String, Object> getMapEvent(){ |
3 | Map<String, Object> map = new HashMap<String, Object>(); |
4 | map.put("key", "chenx1"); |
5 | map.put("value",1); |
6 | return map; |
7 | } |
8 | |
9 | 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
1 | String epsql = "select * from method:MyEvent.getMapEvent() where value > 0"; |
2 | EPStatement epstate = epAdmin.createEPL(epsql); |
3 | Iterator<EventBean> iter = epstate.iterator(); |
4 | while (iter.hasNext()) { |
5 | EventBean bean = iter.next(); |
6 | System.out.println(bean.getUnderlying()); |
7 | } |
Schema
格式:
1 | create [map | objectarray] schema schema_name [as] |
2 | (property_name property_type [,property_name property_type [,...]) |
3 | [inherits inherited_event_type[, inherited_event_type] [,...]] |
4 | [starttimestamp timestamp_property_name] |
5 | [endtimestamp timestamp_property_name] |
6 | [copyfrom copy_type_name [, copy_type_name] [,...]] |
参数说明:
示例:
1 | // 创建schema |
2 | String inepl = "create schema myevent as orderEvent"; |
3 | epAdmin.createEPL(inepl); |
4 | // 查询 |
5 | EPStatement epstate = epAdmin.createEPL("select * from myevent"); |
Esper系列(八)Method Definition、Schema
标签:
原文地址:http://www.cnblogs.com/jianyuan/p/5015535.html