Java Esper-在模式中的过滤器表达式中使用用户定义函数

Java Esper-在模式中的过滤器表达式中使用用户定义函数,java,filter,esper,complex-event-processing,Java,Filter,Esper,Complex Event Processing,我不明白为什么我不能这样做: select * from pattern [every A = EventA -> EventB(myFunction(A.property))] 来自Esper文档:所有表达式都可以在过滤器中使用,包括返回布尔值的静态方法调用 如果我不尝试引用来自第一个匹配事件EventA的属性,而是尝试将属性从EventB传递给myFunction,那么它可以正常工作 我得到的错误是: com.espertech.esper.client.EPException: j

我不明白为什么我不能这样做:

select * from pattern [every A = EventA -> EventB(myFunction(A.property))]
来自Esper文档:所有表达式都可以在过滤器中使用,包括返回布尔值的静态方法调用

如果我不尝试引用来自第一个匹配事件EventA的属性,而是尝试将属性从EventB传递给myFunction,那么它可以正常工作

我得到的错误是:

com.espertech.esper.client.EPException: java.lang.ArrayIndexOutOfBoundsException: 1
at com.espertech.esper.core.service.EPRuntimeImpl.processWrappedEvent(EPRuntimeImpl.java:464)
at com.espertech.esper.core.service.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:437)
at com.espertech.esper.core.service.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:196)
.................
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at com.espertech.esper.epl.expression.ExprIdentNodeEvaluatorImpl.evaluate(ExprIdentNodeEvaluatorImpl.java:30)
at com.espertech.esper.epl.expression.ExprDotEvalStaticMethod.get(ExprDotEvalStaticMethod.java:133)
at com.espertech.esper.filter.FilterParamIndexEquals.matchEvent(FilterParamIndexEquals.java:28)
at com.espertech.esper.filter.FilterParamIndexEquals.matchEvent(FilterParamIndexEquals.java:51)
at com.espertech.esper.filter.FilterHandleSetNode.matchEvent(FilterHandleSetNode.java:97)
at com.espertech.esper.filter.EventTypeIndex.matchType(EventTypeIndex.java:171)
at com.espertech.esper.filter.EventTypeIndex.matchEvent(EventTypeIndex.java:109)
at com.espertech.esper.filter.FilterServiceImpl.evaluate(FilterServiceImpl.java:75)
at com.espertech.esper.core.service.EPRuntimeImpl.processMatches(EPRuntimeImpl.java:911)
at com.espertech.esper.core.service.EPRuntimeImpl.processWrappedEvent(EPRuntimeImpl.java:459)
... 30 more

可能EventA的事件类型信息与实际事件对象不匹配,因此Esper无法检索属性值。尝试比较类型信息和发送的实际对象

使用不同的事件而不是EventA不会改变任何事情。在我看来,您似乎无法访问筛选器中该上下文静态方法调用中先前匹配的事件。联机运行良好。看见复制并粘贴:创建架构事件属性字符串;创建模式EventBproperty字符串@名称'Out'从模式[every A=EventA->EventBBoolean.parseBooleanA.property]中选择*。。。。。。。序列EventA={property=true}EventB={property=true}