Again, I'd only expect one o/p;
Event{timestamp=1494203709496, data=[WSO2, null, 4.7], isExpired=false}On Mon, May 8, 2017 at 6:25 AM, Gobinath <[email protected]> wrote: > Hi, > > I've found a minor bug and sent the PR [1] with the fix. Similar behavior > is noticed with *or* operator as well (Even after the fix). I have given > the code and the output below for your concern. > > // Query: e1 or e2 -> e3 > > define stream Stream1 (symbol string, price float, volume int); > define stream Stream2 (symbol string, price float, volume int); > > @info(name = 'query1') > from e1=Stream1[price > 20] or e2=Stream2[price >30] -> e3=Stream2['IBM' > == symbol] > select e1.symbol as symbol1, e2.price as price2, e3.price as price3 > insert into OutputStream; > > // Input > Stream1.send(new Object[]{"WSO2", 55.6f, 100}); > Stream2.send(new Object[]{"GOOG", 72.7f, 100}); > Stream2.send(new Object[]{"IBM", 4.7f, 100}); > > // Output > Event{timestamp=1494203709496, data=[WSO2, null, 4.7], isExpired=false} > Event{timestamp=1494203709496, data=[WSO2, null, 4.7], isExpired=false} > > If it is also a bug, please do let me know without merging the PR. I will > fix it under the same PR. > > [1] https://github.com/wso2/siddhi/pull/345 > > > Thanks & Regards, > Gobinath > > On Sun, May 7, 2017 at 2:06 PM, Gobinath <[email protected]> wrote: > >> Sure. I'll check the issue and send a separate PR with the fix. >> >> >> Thanks & Regards, >> Gobinath >> >> On Sun, May 7, 2017 at 1:51 PM, Sriskandarajah Suhothayan <[email protected]> >> wrote: >> >>> Yes, it looks like a bug to me, can you check why it's happening. >>> >>> Regards >>> Suho >>> >>> On Sun, May 7, 2017 at 8:56 PM, Nirmal Fernando <[email protected]> wrote: >>> >>>> Looks like a bug to me. I would expect only 1 event. >>>> >>>> On Sun, May 7, 2017 at 8:49 PM, Gobinath <[email protected]> wrote: >>>> >>>>> Hi, >>>>> >>>>> Thanks for accepting my proposal. I have a question regarding the >>>>> behavior of *and* in a pattern. >>>>> >>>>> // Query: e1 and e2 -> e3 >>>>> >>>>> define stream Stream1 (symbol string, price float, volume int); >>>>> define stream Stream2 (symbol string, price float, volume int); >>>>> >>>>> @info(name = 'query1') >>>>> from e1=Stream1[price > 50.0f] and e2=Stream2['IBM' == symbol] -> >>>>> e3=Stream2[price > 20] >>>>> select e1.symbol as symbol1, e2.price as price2, e3.price as price3 >>>>> insert into OutputStream; >>>>> >>>>> // Input >>>>> Stream1.send(new Object[]{"GOOGLE", 72.7f, 100}); >>>>> Stream2.send(new Object[]{"IBM", 4.7f, 100}); >>>>> Stream2.send(new Object[]{"WSO2", 55.6f, 100}); >>>>> >>>>> >>>>> // Output >>>>> Event{timestamp=1494169305631, data=[GOOGLE, 4.7, 55.6], >>>>> isExpired=false} >>>>> Event{timestamp=1494169305631, data=[GOOGLE, 4.7, 55.6], >>>>> isExpired=false} >>>>> >>>>> Is this the expected output?. Note that the output contains two >>>>> exactly similar events but the pattern *e1 -> e2 and e3* outputs a >>>>> single event [1]. >>>>> >>>>> [1] https://github.com/wso2/siddhi/blob/master/modules/siddh >>>>> i-core/src/test/java/org/wso2/siddhi/core/query/pattern/Logi >>>>> calPatternTestCase.java#L98 >>>>> >>>>> >>>>> Thanks & Regards, >>>>> Gobinath >>>>> >>>>> On Mon, Apr 17, 2017 at 7:58 AM, Gobinath <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Please see the PR at [1]. Please do not merge it. >>>>>> >>>>>> >>>>>> Thanks & Regards, >>>>>> Gobinath >>>>>> >>>>>> [1] https://github.com/wso2/siddhi/pull/313 >>>>>> >>>>>> >>>>>> On Mon, Apr 17, 2017 at 7:44 AM, Sriskandarajah Suhothayan < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Based on first look, it looks great. >>>>>>> >>>>>>> Can you send it as a PR so I can see the exact implementations and >>>>>>> also give comments. >>>>>>> >>>>>>> Regards >>>>>>> Suho >>>>>>> >>>>>>> On Mon, Apr 17, 2017 at 5:30 AM, Gobinath <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> 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/sid >>>>>>>> dhi/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 <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/> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *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 <+94%2077%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/> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> *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 >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> Thanks & regards, >>>> Nirmal >>>> >>>> Technical Lead, WSO2 Inc. >>>> Mobile: +94715779733 <071%20577%209733> >>>> Blog: http://nirmalfdo.blogspot.com/ >>>> >>>> >>>> >>> >>> >>> -- >>> >>> *S. Suhothayan* >>> Associate Director / Architect >>> *WSO2 Inc. *http://wso2.com >>> * <http://wso2.com/>* >>> lean . enterprise . middleware >>> >>> >>> *cell: (+94) 779 756 757 <+94%2077%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/> >> >> > > > > -- > *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/> > > -- Thanks & regards, Nirmal Technical Lead, WSO2 Inc. Mobile: +94715779733 Blog: http://nirmalfdo.blogspot.com/
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
