WSO2 CEP pizzaOrderProcessingPlan的Siddhi语言很奇怪

时间:2015-02-11 14:05:03

标签: wso2 wso2cep

以下链接提供WSO2 CEP样本

https://docs.wso2.com/display/CEP310/Getting+Started+with+CEP

我顺序完成文件并没有任何问题。

但我有一个关于跟随Siddhi语言的问题

define table pizza_deliveries (deliveredTime long, order_id string);

from deliveryStream
select time, orderNo
insert into pizza_deliveries;

from orderStream#window.time(30 seconds)
insert into overdueDeliveries for expired-events;

from overdueDeliveries as overdueStream unidirectional join pizza_deliveries
on pizza_deliveries.order_id == overdueStream.orderNo
select count(overdueStream.orderNo) as sumOrderId, overdueStream.customerName
insert into deliveredOrders;

在此执行计划中,pizza_deliveries被定义为表格。 orderStream,deliveryStream,deliveredOrders被定义为document。

我找不到定义“overdueDeliveries”的地点和时间。但是,它正在发挥作用..

我的问题是

定义overdueDeliveries的时间或地点?自动生成?

而且......

OverdueDeliveries流还是表?

1 个答案:

答案 0 :(得分:0)

overdueDeliveries是一个流,它由Siddhi引擎隐式定义。

如果查看此查询:

from orderStream#window.time(30 seconds)
insert into overdueDeliveries for expired-events;

在此查询中,通过orderStream传递的所有属性都被添加到overdueDeliveries流中,Siddhi引擎使用它们定义流。

同样如果您编写如下查询:

from orderStream
select orderNo
insert into orderNumbersStream;

在这种情况下,Siddhi引擎将定义一个名为orderNumbersStream的流,其属性为' orderNo'只有在明确选择之后才会这样做。如果没有select语句,默认情况下,所有属性都会添加到流中。

此外,orderStream,deliveryStream和deliveredOrders是流。在siddhi,事件流经'溪流'你可以把它想象成一种将事件从一个查询传递到另一个查询(一个或多个)的方法。

关于表 - 在定义表时,必须使用此执行计划中给出的define table查询显式定义它。