## 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.