Yes exactly. This is a feature which we still have to add. On Tue, Apr 5, 2016 at 1:07 PM, Anwar Rizal <anriza...@gmail.com> wrote:
> Thanks Till. > > The only way I can change the behavior would be to post filter the result > then. > > Anwar. > > On Tue, Apr 5, 2016 at 11:41 AM, Till Rohrmann <trohrm...@apache.org> > wrote: > >> Hi Anwar, >> >> yes, once we have published the introductory blog post about the CEP >> library, we will also publish a more in-depth description of the approach >> we have implemented. To spoil it a little bit: We have mainly followed the >> paper “Efficient Pattern Matching over Event Streams” for the >> implementation. >> >> Concerning your questions: >> >> 1.) followedBy means that there can be an arbitrary sequence of events >> between two matching events, as long as they occur in the specified time >> interval. Thus, TemperatureEvent(40) will match together with >> TemperaturEvent(50), TemperaturEvent(70), TemperaturEvent(65) and >> TemperaturEvent(60). >> >> 2.) The same applies here for the next operator. It says that the second >> matching event has to follow directly after the previous matched event. >> However, a matching event can be part of multiple matching sequences. Thus, >> you will get TemperaturEvent(70), TemperaturEvent(65) and >> TemperaturEvent(65), TemperaturEvent(60) as two distinct matching sequences. >> >> To make a long story short, there is currently no option to change the >> sequence semantics so that events are only part of one matching sequence. >> At the moment, events can participate in multiple matching sequences. I >> hope that answers your question Anwar. >> >> Cheers, >> Till >> >> >> On Mon, Apr 4, 2016 at 11:18 AM, Anwar Rizal <anriza...@gmail.com> wrote: >> >>> Hi All, >>> >>> >>> I saw Till's blog preparation. It will be a very helpful blog. I hope >>> that some other blogs that explain how it works will come soon :-) >>> >>> I have a question on followedBy pattern matching semantic. >>> >>> >>> From the documentation >>> https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/libs/cep.html >>> , >>> >>> <citaton> >>> >>> Non-strict contiguity means that other events are allowed to occur >>> in-between two matching events. A non-strict contiguity pattern state can >>> be created via the followedBy method. >>> >>> Pattern<Event, ?> nonStrictNext = start.followedBy("middle"); >>> >>> >>> </citation> >>> >>> I try to use Till's examples in the blog, to understand the semantic of >>> followedBy >>> >>> -- >>> First question. >>> Say, I have sequence of temperatures in a time window that corresponds >>> to the within clause (say in 20 minutes). >>> >>> TemperatureEvent(40) , OtherEvent(...), TemperatureEvent(30), >>> TemperatureEvent(50), OtherEvent(...), TemperatureEvent(70), >>> TemperatureEvent(65), TemperatureEvent(60) >>> >>> say I want to match two TemperatureEvents whose temperatures > 35. >>> >>> What will be the matches in this case ? >>> >>> >>> - Will TemperatureEvent(40) , TemperatureEvent(50), match ? >>> (because we have TemperatureEvent(30) at time 3 that does not match. >>> - Will TemperatureEvent(40) , TemperatureEvent(70) match ? (because >>> the pair matches also the specification of pattern , the difference is we >>> have TemperatureEvent(50) which happened before TempertureEvent(70) ). >>> Similar question for TemperatureEvent(40) - TemperatureEvent(65) and >>> TemperatureEvent(50)-TemperatureEvent(65) etc. pairs. >>> >>> >>> >>> -- >>> Second question. >>> For next (and also for followedBy) , I have also questions regarding >>> example above: >>> Will TemperatureEvent(70), TemperatureEvent(65) and >>> TemperatureEvent(65), TemperatureEvent(60) be returned , or the second pair >>> is no longer returned because TemperatureEvent(65) has been used in the >>> first pair ? >>> >>> >>> >>> Is there a way to define the different sequence semantics for the two >>> questions I asked above ? >>> >>> >>> Thanks, >>> Anwar. >>> >>> >>> >>> >>> >>> >>> >>> >> >> >