Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 7A94C200C88 for ; Fri, 2 Jun 2017 17:57:52 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 78A9F160BD2; Fri, 2 Jun 2017 15:57:52 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id BC71A160BD1 for ; Fri, 2 Jun 2017 17:57:51 +0200 (CEST) Received: (qmail 80590 invoked by uid 500); 2 Jun 2017 15:57:51 -0000 Mailing-List: contact issues-help@flink.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flink.apache.org Delivered-To: mailing list issues@flink.apache.org Received: (qmail 80576 invoked by uid 99); 2 Jun 2017 15:57:50 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Jun 2017 15:57:50 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 7833BCD5AC for ; Fri, 2 Jun 2017 15:57:50 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.021 X-Spam-Level: X-Spam-Status: No, score=-4.021 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id eiAkXXRAbVx5 for ; Fri, 2 Jun 2017 15:57:49 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with SMTP id 1303461048 for ; Fri, 2 Jun 2017 15:57:42 +0000 (UTC) Received: (qmail 77198 invoked by uid 99); 2 Jun 2017 15:57:42 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Jun 2017 15:57:42 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 5C8C0F31F7; Fri, 2 Jun 2017 15:57:42 +0000 (UTC) From: alpinegizmo To: issues@flink.incubator.apache.org Reply-To: issues@flink.incubator.apache.org References: In-Reply-To: Subject: [GitHub] flink pull request #4041: [FLINK-6198] [cep] Update CEP documentation. Content-Type: text/plain Message-Id: <20170602155742.5C8C0F31F7@git1-us-west.apache.org> Date: Fri, 2 Jun 2017 15:57:42 +0000 (UTC) archived-at: Fri, 02 Jun 2017 15:57:52 -0000 Github user alpinegizmo commented on a diff in the pull request: https://github.com/apache/flink/pull/4041#discussion_r119883183 --- Diff: docs/dev/libs/cep.md --- @@ -98,48 +128,106 @@ val result: DataStream[Alert] = patternStream.select(createAlert(_)) -Note that we use Java 8 lambdas in our Java code examples to make them more succinct. - ## The Pattern API -The pattern API allows you to quickly define complex event patterns. - -Each pattern consists of multiple stages or what we call states. -In order to go from one state to the next, the user can specify conditions. -These conditions can be the contiguity of events or a filter condition on an event. - -Each pattern has to start with an initial state: - -
-
-{% highlight java %} -Pattern start = Pattern.begin("start"); -{% endhighlight %} -
- -
-{% highlight scala %} -val start : Pattern[Event, _] = Pattern.begin("start") -{% endhighlight %} -
-
- -Each state must have a unique name to identify the matched events later on. -Additionally, we can specify a filter condition for the event to be accepted as the start event via the `where` method. -These filtering conditions can be either an `IterativeCondition` or a `SimpleCondition`. - -**Iterative Conditions:** This type of conditions can iterate over the previously accepted elements in the pattern and -decide to accept a new element or not, based on some statistic over those elements. - -Below is the code for an iterative condition that accepts elements whose name start with "foo" and for which, the sum -of the prices of the previously accepted elements for a state named "middle", plus the price of the current event, do -not exceed the value of 5.0. Iterative condition can be very powerful, especially in combination with quantifiers, e.g. -`oneToMany` or `zeroToMany`. +The pattern API allows you to quickly define complex pattern sequences that you want to extract +from your input stream. + +Each such complex pattern sequence consists of multiple simple patterns, i.e. patterns looking for +individual events with the same properties. These simple patterns are called **states**. A complex pattern +can be seen as a graph of such states, where transition from one state to the next happens based on user-specified --- End diff -- ... where transitions from one state to the next occur ... --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastructure@apache.org or file a JIRA ticket with INFRA. ---