首页 文章

WSO2 CEP pizzaOrderProcessingPlan的Siddhi语言很奇怪

提问于
浏览
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”的地点和时间 . 但是,它正在工作..

我的问题是

when or where overdueDeliveries is defined? automatically generated?

和...

Is overdueDeliveries stream or table?

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 查询显式定义它 .

相关问题