---
# System prepended metadata

title: Untitled

---

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