0

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

A -> B -> C

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

A -> !B -> !C

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

但是我想要的也是当只有部分组合时开火

A -> !B

或者

!B -> !C

或者

B -> !C

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

这甚至可以用 Esper 中的模式实现吗?

4

1 回答 1

1

我可以看到几个选项。

  • 使用模式注册单独的语句或为每个语句匹配识别
  • 用“或”连接每个,即“每个 (..) 或每个 (..) 或每个 (..)
  • 将部分匹配的结果插入流中以供另一个模式继续匹配
  • 我认为 match-recognize 有一些围绕“跳过”的恢复选项
于 2017-04-26T11:53:28.260 回答