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/siddhi-core/src/test/java/org/wso2/siddhi/core/query/pattern/LogicalPatternTestCase.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 | 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

Reply via email to