以下链接提供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”的地点和时间 . 但是,它正在工作..
我的问题是
when or where overdueDeliveries is defined? automatically generated?
和...
Is overdueDeliveries stream or table?
1 回答
overdueDeliveries是一个流,它由Siddhi引擎隐式定义 .
如果你看看这个查询:
在此查询中,通过orderStream传递的所有属性都被添加到overdueDeliveries流中,Siddhi引擎使用它们定义流 .
同样,如果您编写如下查询:
在这种情况下,Siddhi引擎将定义一个名为orderNumbersStream的流,其属性为'orderNo',因为它是明确选择的 . 如果没有select语句,默认情况下,所有属性都会添加到流中 .
此外,orderStream,deliveryStream和deliveredOrders是流 . 在siddhi中,事件流经“流”,您可以将其想象为将事件从一个查询传递到另一个查询(一个或多个)的方式 .
关于表 - 在定义表时,必须使用此执行计划中给出的
define table
查询显式定义它 .