## CEP - Übung 05 #### Simon Stadlinger - Moritz Spranger ### Aufgabe 1: Mustererkennung mit Automaten #### a) Bin mir bei allen Sachen eher unsicher, sollten also nochmal quatschen. - Welches Muster erkennt der Automat? $$A \rightarrow Every(B \land C)$$ - Handelt es sich um einen DEA oder NEA? - DEA - Äquivalenter NEA #### b) - Welches Muster erkennt der Automat? $$Every(B \rightarrow A\ \lor\ C \rightarrow A)$$ - Handelt es sich um einen DEA oder NEA? - NEA - Äquivalenter DEA ### Aufgabe 2: Muster in Esper EPL #### a) ```sql SELECT *, diff(a.price, b.price) as zusätzlichesAttribut FROM pattern[ every(a=MarketDataXetra(symbol="ABEA") -> y=MarketDataXetra(symbol="YOJ") and not MarketDataXetra(symbol!="YOJ"))] .win:firstlength(5); ``` #### b) ```sql SELECT s FROM pattern[ every(a=MarketDataXetra(symbol="ORC")) ->(s=MarketDataXetra(symbol="SAP")->b=MarketDataXetra("ORC")) ]; ``` #### c) ```sql CREATE CONTEXT symbol PARTITIONED BY symbol FROM MarketDataXetra CONTEXT symbol SELECT a,b,c FROM pattern[ every(a=symbol())->(b=symbol() -> c=symbol()) ] WHERE a.price < b.price < c.price; ``` ### Aufgabe 3: Prozesse und Events "Lieferanfrage wurde empfangen": - <b>Subscription</b>: Bei Process Deployment, da eine neue Instanz des Prozesses von diesem Event getriggerd wird. - <b>Unsubscription</b>: Bei Process Undeployment, weil eventuell mehrere Prozessinstanzen parallel durch das Startevent erstellt werden. "Transportplan wurde erhalten": * <b>Subscription</b>: Nachdem die Lieferanfrage reingekommen ist, da der Transportplan erst erstellt werden kann, wenn feststeht, was wohin geliefert werden soll. * <b>Unsubscription</b>: Nach Event Consumption, da der Transportplan nicht verändert werden sollte, wenn er einmal geladen ist. "Neue Verkehrsinformationen wurden erhalten": * <b>Subscription:</b> Bei Consumption von Startevent, weil es sich um ein asynchrones Update handelt, und wir einfach das letzte Update benutzen wollen anstatt eventuell warten zu müssen. * <b>Unsubscription:</b> Sobald die Aktivität "Route berechnen" beginnt, weil diese nur einmal berechnet wird und wir keine weiteren Updates verwerten müssen. "Verkehrsstörung wurde Empfangen": * <b>Subscription</b>: Bei Beginn von Aktivität "Zum Empfänger fahren", da nur dieses Event unterbrochen werden darf * <b>Unsubscription</b>: Sobald Aktivität "Zum Empfänger fahren" beendet wird oder sobald Aktivität "Verkehrstörung ausweichen" begonnen wird.