各位好, 我发现 FlinkCEP 中涉及 GroupPattern 的一些查询的匹配结果和直觉不太符合。
以如下查询为例: Pattern.<Event>begin("pl").where( new SimpleCondition<Event>() { @Override public boolean filter(Event value) { return value.getName() == 2; } } ).times(1,3).optional().consecutive() 当输入数据流(格式为 e(id,name,price))为 e(1,1,0), e(2,2,5), e(3,1,0), e(4,2,2), e(5,1,0), e(6,3,2), e(7,1,0), e(8,2,5), e(9,1,8) 时,其输出的匹配有三个,分别为: pl: e(2,2,5) pl: e(4,2,2) p: e(8,2,5) 但是如果在查询外面加一个 GroupPattern,即查询为 Pattern.begin( Pattern.<Event>begin("pl").where( new SimpleCondition<Event>() { @Override public boolean filter(Event value) { return value.getName() == 2; } } ).times(1,3).optional().consecutive() ) 时,输出的匹配结果却是一个匹配,具体为: pl: e(2,2,5), e(4,2,2), e(8,2,5) 我们认为这样的结果不太符合直觉。 直觉上来说,一个 pattern sequence 外面套一层 group,匹配结果应该是一样的,为何会出现这样的结果? 而且后者的结果看起来和文档里说明的也不太正确,明明加了 `consecutive()` 却返回了不连续的事件。 请问这样的情况是有 bug 还是有意为之?如果是后者是有什么考量吗? 谢谢! Flink version: 1.14.5 Java version: 11.0.15 flink-cep_2.11: 1.14.2 傅宣登, 中国科学院软件研究所 f...@ios.ac.cn