简单的事件序列

Simple sequence of events

假设正在发出 A、B、C 或 D 类型的事件。我想检测 A 类型事件后跟 B 类型事件的时间。换句话说,我想检测一个序列,Esper 的 EPL 为其提供了 -> 运算符。

然而,我上面描述的是模棱两可的,我想要的是:每当检测到一个B,我希望它与最近的A匹配。

我一直在研究 EPL 的语法,但我能想到的最好的是:

select * from pattern [(every a=A) -> b=B]

但是,这会将每个 B 与上次匹配后出现的最旧的 A 进行匹配。奇怪...

非常感谢您的帮助! :P

我经常使用连接来进行简单匹配。另一个选项是匹配识别。这样的连接。

select * from B unidirectional, A.std:lastevent()