艾伦时间运算符恰逢Siddhi

时间:2016-01-17 09:22:45

标签: wso2cep siddhi

如何定义Siddhi查询以检测具有以下属性的两个事件e1和e2:

  • e1可能发生在e2之前或之后。
  • 这意味着:abs(e1.timestamp - e2.timestamp)< = 5s)

在Drools中我们可以使用Allen运算符重合:e1重合e2 [5s]

1 个答案:

答案 0 :(得分:0)

如果e1和e2都是来自同一流的两种不同类型的事件,那么

<div class="wrapper">
  <img src="http://lorempixel.com/image_output/nature-h-c-300-450-2.jpg">
  <img src="http://lorempixel.com/image_output/people-h-c-300-601-10.jpg">
  <img src="http://lorempixel.com/image_output/nature-h-c-300-306-10.jpg">
  <img src="http://lorempixel.com/image_output/abstract-q-c-300-148-2.jpg">
  <img src="http://lorempixel.com/image_output/cats-h-c-300-627-4.jpg">
  <img src="http://lorempixel.com/image_output/technics-h-c-300-460-8.jpg">
</div>

否则,如果它们来自不同的流,您可能需要编写两个查询

from every e1=FooStream -> e2=FooStream[e1.type!= e2.type and math:abs(e1.timestamp - e2.timestamp ) <= 5*6000] 
within 10 sec
select e1.timestamp, e2. ...
insert into OutputStream;

如果&#34;时间戳&#34;是一个Siddhi事件时间戳(不是事件中的属性)然后我们可以在5秒内使用&#34;&#34;并省略filter子句,但如果timeStamp也作为普通属性发送,那么我们必须遵循上述查询格式。