Re: notNext() and next(negation) not yielding same output in Flink CEP
Hi Dawid, Thanks a lot for the explanation, it's all clear now. Best, Yassine 2017-07-23 13:11 GMT+02:00 Dawid Wysakowicz: > Hi Yassine, > > First of all notNext(A) is not equal to next(not A). notNext should be > considered as a “stopCondition” which tells if an event matching the A > condition occurs the current partial match is discarded. The next(not A) on > the other hand accepts every event that do not match the A condition. > > So let’s analyze a sequence of events like “b c a1 a2 a3 d”. For the first > version with next(not A) the output will be “c a1 a2 a3 d” which is what > you expect, I think. In the other version with notNext(A) a partial match > “c a1” will be discarded after “a2” as the notNext says that after the A’s > there should be no A. > > I hope this helps understanding how notNext works. > > Regards, > Dawid > > > On 22 Jul 2017, at 20:32, Yassine MARZOUGUI > wrote: > > > > Hi all, > > > > I would like to match the maximal consecutive sequences of events of > type A in a stream. > > I'm using the following : > > Pattern.begin("start").where(event is not A) > > .next("middle").where(event is A).oneOrMore().consecutive() > > .next("not").where(event is not A) > > I This give the output I want. However if I use > notNext("not").where(event is A) instead of next("not").where(event is not > A), the middle patterns contain only sequences of single elements of type A. > > My understaning is that notNext() in this case is equivalent to > next(negation), so why is the output different? > > > > Thank you in advance. > > > > Best, > > Yassine > >
Re: notNext() and next(negation) not yielding same output in Flink CEP
Hi Yassine, First of all notNext(A) is not equal to next(not A). notNext should be considered as a “stopCondition” which tells if an event matching the A condition occurs the current partial match is discarded. The next(not A) on the other hand accepts every event that do not match the A condition. So let’s analyze a sequence of events like “b c a1 a2 a3 d”. For the first version with next(not A) the output will be “c a1 a2 a3 d” which is what you expect, I think. In the other version with notNext(A) a partial match “c a1” will be discarded after “a2” as the notNext says that after the A’s there should be no A. I hope this helps understanding how notNext works. Regards, Dawid > On 22 Jul 2017, at 20:32, Yassine MARZOUGUIwrote: > > Hi all, > > I would like to match the maximal consecutive sequences of events of type A > in a stream. > I'm using the following : > Pattern.begin("start").where(event is not A) > .next("middle").where(event is A).oneOrMore().consecutive() > .next("not").where(event is not A) > I This give the output I want. However if I use notNext("not").where(event is > A) instead of next("not").where(event is not A), the middle patterns contain > only sequences of single elements of type A. > My understaning is that notNext() in this case is equivalent to > next(negation), so why is the output different? > > Thank you in advance. > > Best, > Yassine signature.asc Description: Message signed with OpenPGP