我必须在ESPER中定义下面的类,以便我能够引用子类型和内部数组。我必须务实地做到这一点。我不在乎如何:
更新:完整的课程:
public class IoTEntityEvent implements java.io.Serializable {
private IoTProperty[] Properties;
private String About;
IoTEntityEvent (){
this.About = null;
this.Properties = null;
}
public String getAbout() {
return About;
}
public void setAbout( String value){
this.About = value;
}
public void setProperties(int index, IoTProperty value) {
Properties[index] = value;
}
public IoTProperty getProperties(int index) {
return Properties[index];
}
public void setProperties( IoTProperty[] value) {
Properties = value;
}
public IoTProperty[] getProperties() {
return Properties;
}
}
这是子类:
public class IoTProperty implements java.io.Serializable {
private Map<String,String>[] IoTStateObservation =null;
private String About = null;
IoTProperty (){
this.About = null;
this.IoTStateObservation = null;
}
public String getAbout() {
return About;
}
public void setAbout(String value) {
About = value;
}
public Map<String,String>[] getIoTStateObservation() {
return IoTStateObservation;
}
public void setIoTStateObservation( Map<String,String>[] value) {
IoTStateObservation = value;
}
public Map<String,String> getIoTStateObservation(int index) {
return IoTStateObservation[index];
}
public void setIoTStateObservation(int index, Map<String,String> value) {
IoTStateObservation[0] = value;
}
}
我试过这样:
eventNames[0] = "About";
eventType[0] = String.class;
eventNames[1] = "Properties";
eventType[1] = IoTProperty[].class;
epService.getEPAdministrator().getConfiguration().addEventType("type", eventNames, eventType);
这有效但我无法访问子类型。我也尝试以类似的方式定义子类型。有人可以解释一下我的想法吗?
答案 0 :(得分:0)
你是什么意思“这有效,但我无法访问子类型。” 试过像“选择属性[0] .whatever”来自类型?
答案 1 :(得分:0)
根据Esper文件:
普通的Java对象事件是通过JavaBeans样式的getter方法公开事件属性的对象实例。事件类或接口不必完全符合JavaBean规范;但是,要使Esper引擎获取事件属性,必须存在所需的JavaBean getter方法,或者可以通过配置定义访问器样式和访问器方法。
简而言之,您需要创建JavaBean getter和setter才能访问您的私有成员。
答案 2 :(得分:0)
感谢您的帮助。我发现了如何以及如下:
epService.getEPAdministrator().getConfiguration().addEventType("type",IoTEntityEvent.class);
然后事件应该像这样发送而不进行任何转换:
IoTValue[] va= {new IoTValue("0.62","2014-06-09T18:08:40.968Z","2014-06-09T18:08:40.968Z")};
IoTProperty[] pr = {new IoTProperty(va,"property")};
IoTEntityEvent event = new IoTEntityEvent(pr,"Entity");
epService.getEPRuntime().sendEvent(event);