# Sequenzdiagramm Daten Intermediär ## Definitionen ### Beispiel Die Verwendung eines Daten Intermediärs wird anhand des folgendem Beispiels demonstriert: Eine Energiegemeinschaft stellt Stromerzeugungs- und Verbrauchsdaten via Daten Intermediär zur Verfügung. Ein Service verwendet die Daten im Intermediär, um einen Forecast zu erstellen. Sowohl die Energiegemeinschaft als auch eine Forschungseinrichtung möchten auf die Ergebnisse zugreifen. ### Stakeholder * Energiegemeinschaft * tritt als Datenquelle und als Datenempfänger auf * Komponenten: * :bust_in_silhouette: vertreten durch den Vereinsvorsitz * :briefcase: Vereinsvorsitz hat ID Austria Zugang und ein privates Mobile SSI Wallet * :cd: igecos Geräte fungieren als Datenquelle * Daten Intermediär * verwaltet Verträge zwischen den Stakeholdern * listet verfügbare Services (führt diese aber nicht aus!) * Komponenten: * :bust_in_silhouette: juristische Person * :briefcase: verwendet Online Wallet zum Speichern von Identitäten & Credentials * :cd: Datenbank zum (Zwischen-)Speichern von Daten * Service Anbieter * bietet Verfahren zur Datenvearbeitung * Komponenten: * :bust_in_silhouette: natürliche oder juristische Person * :briefcase: hat ID Austria Zugang und ein Mobile SSI Wallet * :potable_water: datenverarbeitendes Service * Forschungseinrichtung * tritt als Datenempfänger/Datenkonsument auf * Komponenten: * :bust_in_silhouette: vertreten durch autorisierten Mitarbeiter * :briefcase: hat ID Austria Zugang und ein Mobile SSI Wallet * :cd: Datenbank zum Speichern von Daten ### Interaktionen zwischen Stakeholdern ```plantuml @startuml Alice -> Bob : **Data**: Datenaustausch Alice --> Bob : **Process**: Prozessebene (Aktion) Alice -[#red]->> Bob : **Legal**: rechtliche Vereinbarung ``` ## Sequenzdiagramm ### Datenaustausch ohne Persistierung der Daten ```plantuml @startuml box "\nDatenquelle" #LightBlue database " Datenquelle " as provider_store end box box "\nDaten Intermediär" #Yellow database " Daten Speicher " as di_store end box box "\n Service Provider " #Orange queue " Service " as service box "\nDatenempfänger" #LightGreen database " Data \nSink" as consumer_store end box == Setup == provider_store -> di_store : Datenquelle registrieren service -> di_store: Service registrieren di_store -> service : Konfiguration == Servicenutzung== provider_store -> service : igecos Daten == Datenzugriff== provider_store -> consumer_store: igecos Daten (Rohdaten) service -> provider_store : Ergebnisse service -> consumer_store : Ergebnisse @enduml ``` ### Datenaustausch mit Persistierung der Daten ```plantuml @startuml box "\nDatenquelle" #LightBlue database " Datenquelle " as provider_store end box box "\nDaten Intermediär" #Yellow database " Daten Speicher " as di_store end box box "\n Service Provider " #Orange queue " Service " as service box "\n Datenempfänger " #LightGreen database "Data\nSink" as consumer_store end box == Setup == provider_store -> di_store : Datenquelle registrieren service -> di_store: Service registrieren di_store -> service : Konfiguration == Datenbereitstellung== provider_store -> di_store : igecos Daten == Servicenutzung== di_store -> service : Service Request di_store <- service : Service Response == Datenzugriff== di_store -> consumer_store : Rohdaten di_store -> consumer_store : Ergebnisse @enduml ``` ### Prozessebene ```plantuml @startuml box "\nDatenquelle" #LightBlue actor " Kontaktperson " as provider database " Datenquelle " as provider_store end box box "\nDaten Intermediär" #Yellow actor "Intermediär\nDienst" as intermediary database " Datenspeicher " as di_store end box box "\nService Provider" #Orange queue " Service " as service actor "Anbieter" as sp box "\nDatenempfänger" #LightGreen database "Datenkonsument" as consumer_store actor "Research\nInstitute" as consumer end box == Setup== provider --> intermediary: möchte Daten rechtskonform teilen sp --> intermediary: möchte Forecast-Service anbieten provider --> intermediary: möchte Zugriff auf Forecast-Daten consumer --> intermediary: möchte Zugriff auf Rohdaten & Forecast-Daten == Datenbereitstellung== provider --> provider_store: stelle Daten bereit provider_store --> di_store: speichere Daten == Servicenutzung== intermediary --> di_store: schicke Daten an\nService Provider di_store --> sp: verarbeite Daten sp --> di_store: speichere\nverarbeitete Daten == Datenzugriff== intermediary --> consumer: Rohdaten verfügbar intermediary --> provider: verarbeitete Daten verfügbar intermediary --> consumer: verarbeitete Daten verfügbar @enduml ``` ### Rechtliche Vereinbarungen ```plantuml @startuml box "\nDatenquelle" #LightBlue participant "SSI\n Wallet " as provider_wallet actor "EEG\n Kontakt " as eeg end box box "\nDaten Intermediär" #Yellow participant "DID FlexCo\n Online Wallet " as di_wallet database "Data\nStorage" as di_store end box box "\n Service Provider " #Orange participant "SSI\nWallet" as service_wallet actor "Forecast\nService" as service box "\nDatenempfänger" #LightGreen participant "SSI\nWallet" as consumer_wallet actor "Research\nInstitute" as consumer end box box "\nStaatliche ID" #LightGray participant "ID Austria" as ida == Setup== provider_wallet -[#red]->> ida: Anmeldung ida -[#red]->> di_wallet : staatliche Identität und Verknüpfung zu Identität im SSI Wallet provider_wallet -[#red]->> di_wallet: Zustimmung für\nDatennutzung provider_wallet -[#red]->> di_wallet: Bestätigung der\nDatenverwendung ==== service_wallet -[#red]->> ida: Anmeldung ida -[#red]->> di_wallet : staatliche Identität & SSI Link service_wallet -[#red]->> di_wallet: Bestätigung der\nDatenauftragsverarbeitung ==== consumer_wallet -[#red]->> ida: Anmeldung ida -[#red]->> di_wallet : staatliche Identität & SSI Link consumer_wallet -[#red]->> di_wallet: Bestätigung der\nDatenweitergabe == Servicenutzung== di_wallet -[#red]->> di_store : Vertrag zur\nServicenutzung di_wallet -[#red]->> di_store : Vertrag zum Speichern\nder Ergebnisse == Datenzugriff== di_wallet -[#red]->> di_store : Vertrag zur\nDatenbereitstellung (EEG) di_wallet -[#red]->> di_store : Vertrag zur Datenbereitstellung\n(Research Institute) @enduml ``` ### Alles Kombiniert (mit Datenpersistierung im Intermediär) ```plantuml @startuml box "\nDatenquelle" #LightBlue actor "Kontaktperson" as provider participant "SSI\n Wallet " as provider_wallet database "Datenquelle" as provider_store end box box "\nDaten Intermediär" #Yellow actor "Intermediär\nDienst" as intermediary participant "DID FlexCo\n Online Wallet " as di_wallet database " Datenspeicher " as di_store end box box "\nService Provider" #Orange queue " Service " as service participant "SSI\nWallet" as service_wallet actor "Anbieter" as sp box "\nDatenempfänger" #LightGreen database "Datenkonsument" as consumer_store participant "SSI\nWallet" as consumer_wallet actor "Research\nInstitute" as consumer end box box "\nStaatliche ID" #LightGray participant "ID Austria" as ida == Setup== provider --> intermediary: möchte Daten rechtskonform teilen provider_wallet -[#red]->> ida: Anmeldung ida -[#red]->> di_wallet : staatliche Identität und Verknüpfung zu Identität im SSI Wallet provider_wallet -[#red]->> di_wallet: Zustimmung für\nDatennutzung provider_store -> di_store : Datenquelle registrieren provider_wallet -[#red]->> di_wallet: Bestätigung der\nDatenverwendung ==== sp --> intermediary: möchte Forecast-Service anbieten service_wallet -[#red]->> ida: Anmeldung ida -[#red]->> di_wallet : staatliche Identität & SSI Link service_wallet -[#red]->> di_wallet: Bestätigung der\nDatenauftragsverarbeitung service -> di_store: Service registrieren di_store -> service : Konfiguration ==== consumer --> intermediary: möchte Zugriff auf Rohdaten & Forecast-Daten consumer_wallet -[#red]->> ida: Anmeldung ida -[#red]->> di_wallet : staatliche Identität & SSI Link consumer_wallet -[#red]->> di_wallet: Bestätigung der\nDatenweitergabe == Datenbereitstellung== provider --> provider_store: stelle Daten bereit provider_store --> di_store: speichere Daten provider_store -> di_store : igecos Daten == Servicenutzung== intermediary --> di_store: schicke Daten an\nService Provider di_wallet -[#red]->> di_store : Vertrag zur\nServicenutzung di_store --> sp: verarbeite Daten di_store -> service : Service Request di_wallet -[#red]->> di_store : Vertrag zum Speichern\nder Ergebnisse sp --> di_store: speichere\nverarbeitete Daten di_store <- service : Service Response == Datenzugriff== intermediary --> consumer: Information über verfügbare Rohdaten di_wallet -[#red]->> di_store : Vertrag zur Datenbereitstellung\nder Rohdaten (Research Institute) di_store -> consumer_store : Rohdaten intermediary --> provider: Info: verarbeitete Daten verfügbar intermediary --> consumer: Info: verarbeitete Daten verfügbar di_wallet -[#red]->> di_store : Vertrag zur\nDatenbereitstellung\nder Ergebnisse (EEG) di_wallet -[#red]->> di_store : Vertrag zur Datenbereitstellung\nder Ergebnisse\n(Research Institute) di_store -> provider_store : Ergebnisse di_store -> consumer_store : Ergebnisse @enduml ```