## Tenants Definition ```plantuml @startuml left to right direction interface IOrchestrator #aliceblue;line:blue;line.dotted;text:blue class Orchestrator annotation Zeebe annotation n8n IOrchestrator +-- Zeebe IOrchestrator +-- n8n IOrchestrator . Orchestrator interface IGateway #aliceblue;line:blue;line.dotted;text:blue class Gateway annotation APISIX annotation Kong IGateway +-- APISIX IGateway +-- Kong IGateway . Gateway interface IVault #aliceblue;line:blue;line.dotted;text:blue class Vault annotation Hashicorp IVault +-- Hashicorp IVault . Vault interface IStorage #aliceblue;line:blue;line.dotted;text:blue class Storage annotation Postgress annotation ClickHouse IStorage +-- Postgress IStorage +-- ClickHouse IStorage . Storage interface IComponent #aliceblue;line:blue;line.dotted;text:blue class Component annotation Redis annotation Kafka IComponent +-- Redis IComponent +-- Kafka IComponent . Component class Environment class Tenant { Kurum içerisinde kurulu tüm Amorhie ve bağlı bileşenlerin tanımlı olduğu merkezi tanım merkezidir. .. Temel beklentiler; * Ortamlar arası dağıtımların otomatize edilmesi * Aynı tanımları paylaşan birden fazla ortam dağıtılabilmesi. * Uygulama tanımlarını ortamlardan izole etmek. * Ortamlar arası uygulama tanımlarında versiyon yönetimi yapabilmek. } Tenant o-- Gateway Tenant o-- Orchestrator Tenant o-- Vault Tenant o-- Storage Tenant o-- Component Tenant --* Environment @enduml ``` ## Workflow Definition ```plantuml @startuml entity Workflow entity State entity Transition entity RouteConfig interface IGateway class Gateway annotation APISIX annotation Kong IGateway +-- APISIX IGateway +-- Kong IGateway .. Gateway Workflow *-- State State *-- Transition Transition *-- RouteConfig RouteConfig <|-- Gateway @enduml ``` ## Amoprhie Integration ```plantuml left to right direction component "Amorphie Demo" as demo { component "Demo widgets" as dwidgets #lime } demo -d- client component "Amorphie Backoffice" as bo { component "Backoffice widgets" as bwidgets #lime } bo -d- client component "Amorphie SDK" as client { component "Http Client" as chttp #lime component "Service Repository" as csr #gold component "Workflow Executer" as cwex #lime component "Form Builder" as cfb #lime component "Navigation" as cnav #gold component "Push Handler" as cpush #gold component "Eventing" as cevent #gold component "InApp, PlaceHolder, Card " as cinapp #gold } component "Amorphie Core" as amorphiecore { component "Workflow" as wf #lime component "Authantication" as authn #lime component "Authorization" as authz #lime component "Forms" as form #lime } component "Amorphie Extensions" as amorphieex { component "Navigation" as nav #lime component "Messaging" as message #lime component "Authorization" as authz #lime component "Eventing" as event #lime } chttp -d- authn chttp -d- authz csr -d- authz cwex -d- wf cfb -d- form cnav -d- nav cpush -d- message cevent -d- event cinapp -d- message ``` ## Amoprhie Workflow Core ```plantuml component "Amorphie Workflow" as core { portin "{ins}/transition/{tran}" as piexecute component "Executer" as wf #limegreen interface " " as wfe component "Zeebe" as zeebe component "n8n" as n8n component "Zapier" as zapier wf -down- wfe wfe - zeebe wfe .. n8n wfe .. zapier piexecute = wf portin "{ins}/data" as pidata component "WF Data" as per #limegreen interface " " as wfper component "Postgres" as postgres component "Mongo" as mongo component "Yugabyte" as yugabyte per -down- wfper wfper - postgres wfper .. mongo wfper .. yugabyte per = pidata portin "{fact}/data" as pifact component "Fact Data" as oltp #limegreen interface "graphql" as oltpi oltp -down- oltpi oltpi -down- postgres oltpi .. mongo oltpi .. yugabyte pifact = oltp portin "{fact}/olap" as piolap component "OLAP" as olap #limegreen interface " " as olapi component "Apache Kylin" as kylin component "Clickhouse" as clickhouse piolap = olap olap -down- olapi olapi .. kylin olapi .. clickhouse } ```