[ https://issues.apache.org/jira/browse/FLINK-6198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16034937#comment-16034937 ]
ASF GitHub Bot commented on FLINK-6198: --------------------------------------- Github user alpinegizmo commented on a diff in the pull request: https://github.com/apache/flink/pull/4041#discussion_r119891095 --- Diff: docs/dev/libs/cep.md --- @@ -246,63 +334,399 @@ pattern.where(event => ... /* some condition */).or(event => ... /* or condition </div> </div> -Next, we can append further states to detect complex patterns. -We can control the contiguity of two succeeding events to be accepted by the pattern. +##### Conditions on Contiguity -Strict contiguity means that two matching events have to be directly the one after the other. -This means that no other events can occur in between. -A strict contiguity pattern state can be created via the `next` method. +FlinkCEP supports the following forms of contiguity between events: + + 1. Strict Contiguity: which expects all matching events to appear strictly the one after the other, + without any non-matching events in-between. + + 2. Relaxed Contiguity: which simply ignores non-matching events appearing in-between the matching ones. + + 3. Non-Deterministic Relaxed Contiguity: which further relaxes contiguity by also creating alternative + matches which ignore also matching events. + +To illustrate the above with an example, a pattern sequence `a+ b` (one or more `a`s followed by a `b`) with +input `a1, c, a2, b` will have the following results: + + 1. Strict Contiguity: `a2 b` because there is `c` `a1` and `a2` so `a1` is discarded. + + 2. Relaxed Contiguity: `a1 b` and `a1 a2 b`, as `c` will get simply ignored. + + 3. Non-Deterministic Relaxed Contiguity: `a1 b`, `a2 b` and `a1 a2 b`. + +For looping states (e.g. `oneOrMore()` and `times()`) the default is *relaxed contiguity*. If you want +strict contiguity, you have to explicitly specify it by using the `consecutive()` call, and if you want +*non-deterministic relaxed contiguity* you can use the `allowCombinations()` call. <div class="codetabs" markdown="1"> <div data-lang="java" markdown="1"> +<table class="table table-bordered"> + <thead> + <tr> + <th class="text-left" style="width: 25%">Pattern Operation</th> + <th class="text-center">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>where(condition)</strong></td> + <td> + <p>Defines a condition for the current state. Only if an event satisifes the condition, + it can match the state. Multiple consecutive where() clauses lead to their condtions being --- End diff -- To match the state, an event must satisfy the condition. > Update the documentation of the CEP library to include all the new features. > ---------------------------------------------------------------------------- > > Key: FLINK-6198 > URL: https://issues.apache.org/jira/browse/FLINK-6198 > Project: Flink > Issue Type: Sub-task > Components: CEP > Affects Versions: 1.3.0 > Reporter: Kostas Kloudas > Assignee: Kostas Kloudas > Priority: Critical > Fix For: 1.3.0 > > > New features to include: > * Iterative Functions > * Quantifiers > * Time handling > * Migration from FilterFunction to IterativeCondition -- This message was sent by Atlassian JIRA (v6.3.15#6346)