如何在 Esper CEP 中触发部分匹配模式

How to fire pattern on partial match in Esper CEP

我正在尝试解决路线违规问题。用户将路线定义为需要在其上看到某些项目的一系列位置序列(按确切顺序)。所以可以说正确的路线是(这是由用户定义的)

A -> B -> C

我正在尝试编写 Esper EPL,它将在所有路线违规时触发。 A为起点,需要开始一个模式(有效位置)。

A -> !B -> !C

当在 ESPER 中找到所有 3 种类型的事件时,这将触发。

但我想要的也是在只有部分组合时触发

A -> !B

!B -> !C

B -> !C

因为如果在 B 上错过了路线,那么我可能永远不会来 C 并且不会收到路线违规通知。

Esper 中的模式甚至可能吗?

我可以看到几个选项。

  • 为每个注册一个带有模式或匹配识别的单独语句
  • 用 "or" 连接每个,即“每个 (..) 或每个 (..) 或每个 (..)
  • 将部分匹配的结果插入流中以供另一个模式继续匹配
  • 我认为 match-recognize 在 "skip" 附近有一些恢复选项