假设我要检测这样的模式:
from every A -> B or C or D # P0, not accepted by Siddhi
其中B,C和D可以以任何顺序发生。从文档:
Siddhi只能一次使用诸如and,or或not之类的关键字在逻辑上关联两个条件。当需要在逻辑上关联两个以上条件时,请以链接方式使用多个模式查询,一次将两个逻辑条件相关联,然后将输出流式传输到下游查询以将结果与其他逻辑条件逻辑相关联。
所以,我想我应该做这样的事情:
from every A -> B # P1
from every A -> C # P2
from every A -> D # P3
但是,以上重写并不严格等同于原始模式。例如,给定事件序列
A1 D1 C1 B1
[P3将在D1之后触发,P2在C1之后触发,而P1在B1之后触发,而原始模式P0将仅在D1之后触发一次(假设P0有效)。
类似地,一个人如何处理形式的模式
from every A -> B and C and D # not accepted by Siddhi either
通常,是否有计划支持一次关联两个以上的条件?否则,这些模式的实现可能会变得非常混乱且容易出错。同时,可以对文档进行扩展以说明如何实现几个简单的案例,就像在本问题中所考虑的那样。
感谢您提供有关文档的反馈,我们将在当前正在进行的新Examples部分中加入复杂的示例
是的,这是Siddhi模式实现中的设计级别限制。我们已制定了一些计划来改善此问题。]
如果考虑您的示例(A and B and C) or (D and E and F)
,则必须编写5个模式查询,如下所示。
A and B -> output1 output1 and C -> output2 D and E -> output3 output3 and F -> output4 output2 or output4 -> finalOutput
同样,我们必须根据需求将查询写入多个子查询中。我确实知道这会增加一些负担,但不幸的是,这是目前唯一的选择。