sample on detecting non-occurrences with patterns을 참조 할 수 있습니다. 그러나 PO 이벤트 이전에 REQ 이벤트가 왔는지 확인하려면 사용자의 요구 사항을 충족시키기 위해 메모리 이벤트 테이블을 사용해야 할 수도 있습니다. 인 메모리 테이블을 사용하여 동일한 결과를 얻으려면 다음 샘플을 참조하십시오.
@Import('REQStream:1.0.0')
define stream REQ (ITEM_ID int, QUANTITY int, CREATED_BY string);
@Import('POStream:1.0.0')
define stream PO (ITEM_ID int, QUANTITY int, CREATED_BY string);
@Export('ALERTStream:1.0.0')
define stream ALERT (ITEM_ID int, ALERT string);
define table REQ_TABLE (ITEM_ID int, QUANTITY int, CREATED_BY string);
define trigger DAILY_TRIGGER at every 1 day;
from REQ
insert into REQ_TABLE;
-- check whether request exists before the purchase
from PO[not((REQ_TABLE.ITEM_ID == ITEM_ID and REQ_TABLE.QUANTITY == QUANTITY and REQ_TABLE.CREATED_BY == CREATED_BY) in REQ_TABLE)]
select ITEM_ID, 'No REQ created before' as ALERT
insert into ALERT;
-- purge reauests table daily
from DAILY_TRIGGER join REQ_TABLE
select REQ_TABLE.ITEM_ID, REQ_TABLE.QUANTITY, REQ_TABLE.CREATED_BY
insert into PURGE_STREAM;
-- if there's no matching purchase order came up for previous day
from PURGE_STREAM
select ITEM_ID, 'No purchase order came up for a day' as ALERT
insert into ALERT;
from PO
insert into DEL_STREAM;
from PURGE_STREAM
insert into DEL_STREAM;
-- delete corresponding request from table
from DEL_STREAM
delete REQ_TABLE
on REQ_TABLE.ITEM_ID == ITEM_ID and REQ_TABLE.QUANTITY == QUANTITY and REQ_TABLE.CREATED_BY == CREATED_BY;
감사합니다. 나는 당신의 코드를 재사용하지는 않았지만 그 뒤에 숨은 아이디어는 내가이 문제를 해결하는 것을 도왔다. – Wenzel