如何在 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" 附近有一些恢复选项
我正在尝试解决路线违规问题。用户将路线定义为需要在其上看到某些项目的一系列位置序列(按确切顺序)。所以可以说正确的路线是(这是由用户定义的)
A -> B -> C
我正在尝试编写 Esper EPL,它将在所有路线违规时触发。 A为起点,需要开始一个模式(有效位置)。
A -> !B -> !C
当在 ESPER 中找到所有 3 种类型的事件时,这将触发。
但我想要的也是在只有部分组合时触发
A -> !B
或
!B -> !C
或
B -> !C
因为如果在 B 上错过了路线,那么我可能永远不会来 C 并且不会收到路线违规通知。
Esper 中的模式甚至可能吗?
我可以看到几个选项。
- 为每个注册一个带有模式或匹配识别的单独语句
- 用 "or" 连接每个,即“每个 (..) 或每个 (..) 或每个 (..)
- 将部分匹配的结果插入流中以供另一个模式继续匹配
- 我认为 match-recognize 在 "skip" 附近有一些恢复选项