0

以下链接提供了 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 被定义为文档。

我找不到定义“overdueDeliveries”的位置和时间。但是,它正在工作..

我的问题是

何时何地定义了逾期交货?自动生成?

和...

overdueDeliveries 是流还是表?

4

1 回答 1

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此执行计划中给出的查询显式定义它。

于 2015-02-12T04:56:18.633 回答