Hi, A prototype is implemented and available at [1]. Currently the query support for absent patterns and two simple pattern identifications (e1 -> not e2 and not e1 -> e2) are implemented. Please have a look at the unit test [2] to get the idea. Class names and variable names are subject to change (will finalize later). I am waiting for your feedback.
Thanks & Regards, Gobinath [1] https://github.com/lgobinath/siddhi/tree/feature-absent-event-pattern [2] https://github.com/lgobinath/siddhi/blob/feature-absent-event-pattern/modules/siddhi-core/src/test/java/org/wso2/siddhi/core/query/pattern/EveryAbsentPatternTestCase.java On Fri, Mar 31, 2017 at 6:28 AM, Gobinath <[email protected]> wrote: > Hi all, > > Thanks Suho for your feedback. I have made the changes based on your > suggestions and submitted the final proposal. Started working on a > prototype and will update you soon with the results. > > > Thanks & Regards, > Gobinath > > On Thu, Mar 30, 2017 at 12:28 PM, Sriskandarajah Suhothayan <[email protected] > > wrote: > >> I have given some feedback on the gsoc site. >> >> Suho >> >> On Mon, Mar 27, 2017 at 9:03 PM, Gobinath <[email protected]> wrote: >> >>> Hi all, >>> >>> Thanks. I have shared the draft of my proposal titled "Non-Occurrence of >>> Events for Siddhi Patterns" with WSO2 through GSoC dashboard and requesting >>> your feedback on this. >>> >>> >>> Thanks & Regards, >>> Gobinath >>> >>> On Wed, Mar 15, 2017 at 1:30 PM, Sriskandarajah Suhothayan < >>> [email protected]> wrote: >>> >>>> Thanks for the GSoC idea, I hope this will be a good way to improve the >>>> Siddhi language and make it more powerfull. >>>> If time permits we can also add other use-cases of patterns & sequences >>>> and improve it further. >>>> >>>> Since you are still not a commuter I hope these contributions will help >>>> you be a committer to Siddhi as well :) >>>> I'll make this as a formal idea, do work on a proposal as well. >>>> >>>> Regards >>>> Suho >>>> >>>> >>>> On Wed, Mar 15, 2017 at 6:09 PM, Gobinath <[email protected]> wrote: >>>> >>>>> Hi team, >>>>> >>>>> This is Gobinath a former software engineer at WSO2 currently doing >>>>> masters at Western University. This time I plan to do GSoC with WSO2 and >>>>> this is the basic idea of what I have discussed with Suho. >>>>> Based on Suho's suggestion, I come up with a proposal to implement >>>>> detecting non-occurring events using Siddhi patterns. The current Siddhi >>>>> patterns allow identifying the patterns that present. >>>>> >>>>> See an example: >>>>> from every e1=Stream1[price>20] -> e2=Stream2[price>e1.price] within 1 >>>>> sec >>>>> select e1.symbol as symbol1, e2.symbol as symbol2 >>>>> insert into OutputStream; >>>>> >>>>> Detecting the absence of a pattern is not natively supported by Siddhi >>>>> patterns for the moment. In other words, identifying event_a not followed >>>>> by event_b within 2 minutes is not possible using the current patterns >>>>> implementation (Note that a time frame is required otherwise we have to >>>>> wait for infinite time to say event_b has not arrived). The current >>>>> workaround [1] to detect non-delivered items is shown below: >>>>> >>>>> from arrivals_stream#window.time(2 minutes) >>>>> select * >>>>> insert expired events into overdue_deliveries_stream; >>>>> >>>>> from every arrivalEvent = arrivals_stream -> >>>>> deliveryEvent = deliveries_stream[arrivalEvent.trackingId == >>>>> trackingId] >>>>> or overdue_delivery = >>>>> overdue_deliveries_stream[arrivalEvent.trackingId >>>>> == trackingId] >>>>> select arrivalEvent.trackingId as trackingId, >>>>> arrivalEvent.customerName as customerName, arrivalEvent.telephoneNo as >>>>> telephoneNo, deliveryEvent.trackingId as deliveryId >>>>> insert into filter_stream; >>>>> >>>>> from filter_stream [ (deliveryId is null)] >>>>> select trackingId, customerName, telephoneNo >>>>> insert into alert_stream; >>>>> >>>>> This solution requires a time window and it is inefficient if we are >>>>> interested only on one occurrence of such a pattern (In other words same >>>>> query without every keyword). Further, the query is more complex and not >>>>> user-friendly. >>>>> >>>>> If we provide patterns to detect absence of patterns, the above query >>>>> can be rewritten as below: >>>>> >>>>> from every arrivalEvent = arrivals_stream -> (not >>>>> deliveries_stream[arrivalEvent.trackingId == trackingId] within 2 min >>>>> ) >>>>> select arrivalEvent.trackingId as trackingId, >>>>> arrivalEvent.customerName as customerName, arrivalEvent.telephoneNo as >>>>> telephoneNo >>>>> insert into alert_stream; >>>>> >>>>> As you can see, we can use the existing language components like not & >>>>> within. This can be achieved by extending the existing >>>>> StreamPreStateProcessors and StreamPostStateProcessors with an internal >>>>> timer so that they can expire their internal list of events based on the >>>>> time limit. It is somewhat similar to time windows but the processor can >>>>> turn off the timer and ignore the events if it is a one time pattern >>>>> detection. >>>>> >>>>> I hope it gives the basic idea and I am waiting for your suggestions >>>>> and feedback. >>>>> >>>>> [1] https://docs.wso2.com/display/CEP400/Sample+0111+-+Detec >>>>> ting+non-occurrences+with+Patterns >>>>> >>>>> >>>>> Thanks & Regards, >>>>> Gobinath >>>>> -- >>>>> *Gobinath** Loganathan* >>>>> Graduate Student, >>>>> Electrical and Computer Engineering, >>>>> Western University. >>>>> Email : [email protected] >>>>> Mobile : (+1) 416-895-0721 >>>>> Blog : javahelps.com <http://www.javahelps.com/> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> *S. Suhothayan* >>>> Associate Director / Architect & Team Lead of WSO2 Complex Event >>>> Processor >>>> *WSO2 Inc. *http://wso2.com >>>> * <http://wso2.com/>* >>>> lean . enterprise . middleware >>>> >>>> >>>> *cell: (+94) 779 756 757 <077%20975%206757> | blog: >>>> http://suhothayan.blogspot.com/ <http://suhothayan.blogspot.com/>twitter: >>>> http://twitter.com/suhothayan <http://twitter.com/suhothayan> | linked-in: >>>> http://lk.linkedin.com/in/suhothayan >>>> <http://lk.linkedin.com/in/suhothayan>* >>>> >>> >>> >>> >>> -- >>> *Gobinath** Loganathan* >>> Graduate Student, >>> Electrical and Computer Engineering, >>> Western University. >>> Email : [email protected] >>> Mobile : (+1) 416-895-0721 >>> Blog : javahelps.com <http://www.javahelps.com/> >>> >>> >> >> >> >> -- >> >> *S. Suhothayan* >> Associate Director / Architect >> *WSO2 Inc. *http://wso2.com >> * <http://wso2.com/>* >> lean . enterprise . middleware >> >> >> *cell: (+94) 779 756 757 | blog: http://suhothayan.blogspot.com/ >> <http://suhothayan.blogspot.com/>twitter: http://twitter.com/suhothayan >> <http://twitter.com/suhothayan> | linked-in: >> http://lk.linkedin.com/in/suhothayan <http://lk.linkedin.com/in/suhothayan>* >> > > > > -- > *Gobinath** Loganathan* > Graduate Student, > Electrical and Computer Engineering, > Western University. > Email : [email protected] > Mobile : (+1) 416-895-0721 > Blog : javahelps.com <http://www.javahelps.com/> > > -- *Gobinath** Loganathan* Graduate Student, Electrical and Computer Engineering, Western University. Email : [email protected] Mobile : (+1) 416-895-0721 Blog : javahelps.com <http://www.javahelps.com/>
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
