WSO2 CEP pizzaПлан обработки заказов Сиддхи Язык странный

По следующей ссылке представлен образец 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 определяются как документ.

Я не могу найти, где и когда определяется "overdueDeliveries". Но, работает..

мой вопрос

когда и где определяется просроченная доставка? генерируется автоматически?

И...

Просрочены поставки: поток или таблица?


person Julian Lee    schedule 11.02.2015    source источник


Ответы (1)


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. В сиддхи события проходят через «потоки», и вы можете представить это как способ передачи событий от одного запроса к другому (одному или нескольким).

Относительно таблиц. Когда вы определяете таблицу, вы должны явно определить ее, используя запрос define table, как указано в этом плане выполнения.

person Rajeev Sampath    schedule 12.02.2015
comment
Спасибо за ваши добрые и четкие ответы. Оказал большую помощь в понимании. - person Julian Lee; 12.02.2015