---
# System prepended metadata

title: Zeebe Mimarisi

---

# Zeebe Mimarisi


```plantuml
@startuml

    component "Zeebe" as zeebeEngine
    database "Hazelcast" as hazelcast 
    database "Kafka" as kafka 
    component simpleMonitor  [
        <b>Zeebe Simple Monitor</b>
        + Açık kaynak monitor uygulaması
        + Hazelcast üzerindeki verilerle besleniyor
        + İzleme ve gerekirse akışa müdehale etme imkanı sunuyor
        ]
    component persister  [
        <b>Postgre Persister</b>
        + Background Worker olarak çalışır
        + Akış verilerini Postgre üzerine denormalize şekilde persist eder
        ]
    database postgre [
        <b>Postgre</b>
        + Herbir akış için bir tablo oluşturulur
        + Kompleks yapılar için direkt JSON alan kullanılır
        + Akış bilgisi ve son statüsü kayıt ile tutulur
        ]
    component signalR  [
        <b>Client Event Aggregator</b>
        + Aktif istemci sessionuna komut gönderir
        + İstemcilerin asenkron olarak komutlarının cevap almasını sağlar
        ]

     component sampleClient  [
        <b>Örnek Uygulama</b>
        + Web veya Mobil uygulama
        ]


zeebeEngine --> hazelcast : "Hazelcast Exporter"
zeebeEngine --> kafka : "Kafka Exporter"
hazelcast --> simpleMonitor
kafka --> persister
kafka --> signalR
persister --> postgre
signalR --> sampleClient
postgre --> sampleClient

@enduml
```


## TODO

- [ ] **Zeebe Compose dosyası**

Zeebe, Simply Monitor, Kafka ve Hazelcast exporterları ve postgre içeren docker compose dosyası ve kubernetes dağıtımları için yaml dosyaları oluşturulmalıdır.

Developerlar docker üzerinden ilgili kaynakalara erişim sağlayacaktır.

:::info
Community Workerlar da eklenmeli
* [http worker](https://github.com/camunda-community-hub/zeebe-http-worker)
* [script worker](https://github.com/camunda-community-hub/zeebe-script-worker)
* [Dmn worker](https://github.com/camunda-community-hub/zeebe-dmn-worker)
:::

- [ ] **Postgre Persister**

> bbt.zeebe.postgree-persister
* .Net core Background Worker uygulamasıdır.
* Kaynak olarak kafka topic kullanır.


- [ ] **Client Event Aggregator**

> bbt.zeebe.event-aggregator
* .Net core WebApi uygulamasıdır.
* Kaynak olarak kafka topic kullanır.
* Client uygulamalar signalR Hub kanalına register olur. (user ve customer ile)
* İlgili Client tarafından aktif olarak ilerletilen süreçler ile ilgili geri bildirim kanalı için kullanılır.
* Clinet uygulama state değişimine *listener* olarak *delegate* verir ve beklediği eylemin durumuna göre hareket eder.

## Örnek Uygulama - Sözleşme Onay

- [ ] **Contract Approval Workers**
> bbt.contract-approval.worker
* .Net core uygulaması.
* Kubernetes native, multi-pod parallelism desteği.
* https://blog.bernd-ruecker.com/writing-good-workers-for-camunda-cloud-61d322cad862
* https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/dataflow-task-parallel-library

- [ ] **Contract Approval API**
> bbt.contract-approval.api
* .Net core Web API.
* Db olarak postgre kullanır.

- [ ] **Contract Approval UI**
> bbt.contract-approval.ui
* Flutter ?
