WSO2 CEP pizzaOrderProcessingPlan 的 Siddhi 语言很奇怪

WSO2 CEP pizzaOrderProcessingPlan's Siddhi Language is strange

以下link提供WSO2 CEP样本

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

我按顺序处理文档,没有问题。

但我对遵循悉提语有疑问

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被定义为table。 orderStream、deliveryStream、deliveredOrders 被定义为 document.

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

我的问题是

逾期交货是在何时何地定义的?自动生成?

还有……

是否逾期交货流或table?

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' 的流,因为它是显式 selected 的。如果没有 select 语句,默认情况下,所有属性都添加到流中。

此外,orderStream、deliveryStream 和 deliveredOrders 都是流。在 siddhi 中,事件流经 'streams',您可以将其想象成一种将事件从一个查询传递到另一个查询(一个或多个)的方式。

关于 tables - 当您定义 table 时,您必须使用此执行计划中给出的 define table 查询明确定义它。