以下链接提供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流还是表?
答案 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
查询显式定义它。