Yue Ma created FLINK-26941:
------------------------------

             Summary: Support Pattern end with notFollowedBy with window
                 Key: FLINK-26941
                 URL: https://issues.apache.org/jira/browse/FLINK-26941
             Project: Flink
          Issue Type: Improvement
          Components: Library / CEP
    Affects Versions: 1.14.4
            Reporter: Yue Ma
             Fix For: 1.14.4


Currently a pattern sequence cannot end in notFollowedBy() in Flink CEP. But in 
fact, this requirement exists in many scenarios. As mentioned in the following 
tickets:

https://issues.apache.org/jira/browse/FLINK-16010
https://issues.apache.org/jira/browse/FLINK-9431

Unfortunately, these tickets are not active for a long time.But we still think 
this is an important feature for Flink CEP, so we would like to share our 
implementation.
if we want to find the users who created an order but didn't pay in 10 minutes. 
We could code like this:
Pattern.begin('create').notFollowedBy('pay_order').withIn(10min)
If we receive the create event but don't receive the pay event within 10 
minutes, then the match will be successful.

The idea of implementation is basically the same as the design of FLINK-16010.
A Pending State is introduced to represent the state of waiting for a timeout, 
and there is a take edge between the Pending node and the Stop node.
When advanceTime, if it is found that the pending node has timed out, then 
extract the timeout sequence and output it normally as successed matched 
sequence.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to