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 <s...@wso2.com> 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 <slgobin...@gmail.com> 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 : slgobin...@gmail.com >> 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 | 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 : slgobin...@gmail.com Mobile : (+1) 416-895-0721 Blog : javahelps.com <http://www.javahelps.com/>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev