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