diff --git a/modellierung/holzhandel_sequenz.puml b/modellierung/holzhandel_sequenz.puml index 8a4d5999600f607e7710a90bcc485b6cce9abbf4..0d627b01107c19a02545a93fc5fdd97c52f08963 100644 --- a/modellierung/holzhandel_sequenz.puml +++ b/modellierung/holzhandel_sequenz.puml @@ -5,6 +5,7 @@ ' - wie werden Nachrichten modelliert und worüber versendet? skinparam maxMessageSize 120 +skinparam wrapWidth 200 box #LightBlue participant Waldbesitzer @@ -128,42 +129,65 @@ deactivate WaldmanagerApp == OPTIONAL: Preisangebote einholen (vor oder nach Einschlag) == -Waldbesitzer -> WaldmanagerApp: Preisbereiche für stehendes Holz / Holzlisten anfragen +Waldbesitzer -> WaldmanagerApp: Benutzer wählt in UI Holzliste und fordert Preisbereiche dafür an activate WaldmanagerApp -WaldmanagerApp -> DZ_Wald: Preisbereiche für stehendes Holz / Holzlisten anfragen +WaldmanagerApp -> DZ_Wald: S3I-ServiceRequest an DZ Wald auf AAS Operation getHolzpreisbereich(Submodel-Id der Holzliste) activate DZ_Wald -DZ_Wald -> Holzhandelsplattform: Gesuche/Preise/Angebote passend zu stehendem Holz / Holzlisten abrufen +DZ_Wald -> Holzhandelsplattform: REST Call GET: /api/v2/external/priceestimate activate Holzhandelsplattform -Holzhandelsplattform --> DZ_Wald: Liste von Gesuchen/Preisen/Angeboten/SEC.Holzpreisbereiche +Holzhandelsplattform --> DZ_Wald: Forstify-proprietäres JSON mit allen Parametern für Holzpreisbereich deactivate Holzhandelsplattform -DZ_Wald -> DZ_Wald: Liste von Gesuchen/Preisen/Angeboten auswerten, d.h. SEC.Holzpreisbereiche anlegen -DZ_Wald --> WaldmanagerApp: Fertig / Holzpreisbereiche +note over DZ_Wald +{ + "Baumart": "kie", + "PreisVon": 14500, + "PreisBis": 14500, + "Sorte": "st", + "MittendurchmesserVon": "d2b", + "MittendurchmesserBis": "d5", + "Datum": "8/4/2023, 10:56:39 AM", + "Quelle": "Forstify Marktplatz Angebote" +} +end note +DZ_Wald -> DZ_Wald: Einlesen des prop. Forstify-JSON; Anlegen einer SMEC Holzpreisbereich in Submodel Holzpreisbereiche (ggf. Erzeugen); Verknüpfung mit zugehöriger Holzliste +DZ_Wald --> WaldmanagerApp: S3I-ServiceReply "ok" +note over DZ_Wald #FF0000 +TODO: Welches Rückgabeformat bevorzugt ForestManager? +end note deactivate DZ_Wald -WaldmanagerApp --> Waldbesitzer: Fertig / Holzpreisbereiche +WaldmanagerApp --> Waldbesitzer: UI-Anzeige des Holzpreisbereichs in ForestManager deactivate WaldmanagerApp +deactivate Waldbesitzer == Holzangebot via Holzhandelsplattform erstellen & einstellen == -Waldbesitzer -> Holzhandelsplattform: (S3I) Login +Dienstleister -> Holzhandelsplattform: S3I-Login 'Holzliste zum Verkauf veröffentlichen! activate Holzhandelsplattform - activate Waldbesitzer - Waldbesitzer -> Holzhandelsplattform: Freigabe für DZ Wald erteilen - activate Holzhandelsplattform - Holzhandelsplattform -> DZ_Wald: Get Holzlisten-Daten - activate DZ_Wald - DZ_Wald --> Holzhandelsplattform: Holzlisten-Daten - deactivate DZ_Wald - Holzhandelsplattform --> Waldbesitzer: Ok! - deactivate Holzhandelsplattform - Waldbesitzer -> Holzhandelsplattform: Verkaufslose bilden, Preise etc. eingeben + activate Dienstleister + note over Dienstleister #FF0000 + TODO Autorisierung auf Basis der HMI der Person (=ThingID) oder der Person selbst (=PersonID)? + end note + Dienstleister -> Holzhandelsplattform: Dienstleister wählt in UI von Forstify im Profil die Funktion "Alle Holzlisten von Wald des Waldbesitzers abrufen" + note over Dienstleister + Vollständig sauber müsste der Dienstleister an dieser Stelle über das S3I-Dir nach dem entsprechenden Waldbesitzer und dessen DZ Wald suchen und dann den richtigen auswählen. Aktuell hart verdrahtet. + end note + note over Dienstleister #FF0000 + TODO attributePath für Abruf *aller* Holzlisten? Evtl. Suche nach allen SM mit bestimmter SemanticId möglich? + end note + Holzhandelsplattform -> DZ_Wald: S3I-GetValueRequest an DZ Wald mit + activate DZ_Wald + DZ_Wald --> Holzhandelsplattform: Holzlisten-Daten + deactivate DZ_Wald + Holzhandelsplattform --> Dienstleister: Ok! + Dienstleister -> Holzhandelsplattform: Verkaufslose bilden, Preise etc. eingeben Holzhandelsplattform -> Holzhandelsplattform: Verkauflose bilden Holzhandelsplattform -> DZ_Wald: Put Verkaufslose, verknüpfe Holzlisten activate DZ_Wald DZ_Wald --> Holzhandelsplattform: Fertig deactivate DZ_Wald - Holzhandelsplattform --> Waldbesitzer: Fertig - deactivate Waldbesitzer + Holzhandelsplattform --> Dienstleister: Fertig + deactivate Dienstleister Käufer <-> Holzhandelsplattform: Interaktion... note right: Eigentlicher Abschluss außerhalb des Projekt-Scope. @@ -177,54 +201,10 @@ activate Holzhandelsplattform DZ_Wald -> WaldmanagerApp: Update Verkaufsstatus in Verkaufslos (Benachrichtigung / Event?) deactivate DZ_Wald activate WaldmanagerApp - WaldmanagerApp -> Waldbesitzer: Verkaufsstatus + WaldmanagerApp -> Dienstleister: Verkaufsstatus deactivate WaldmanagerApp deactivate Käufer deactivate Holzhandelsplattform -== VARIANTE: Holzangebot via Dienstleister-App erstellen & einstellen == - -note over DZ_Wald #FF0000 - TODO Igor nochmal anpassen -end note - -Waldbesitzer -> DienstleisterApp: (S3I) Login -activate Waldbesitzer -activate DienstleisterApp -Waldbesitzer -> DienstleisterApp: Freigabe für DZ Wald erteilen -activate DienstleisterApp - DienstleisterApp -> DZ_Wald: Get Holzlisten-Daten - activate DZ_Wald - DZ_Wald --> DienstleisterApp: Holzlisten-Daten - deactivate DZ_Wald - DienstleisterApp --> Waldbesitzer: Ok! -deactivate DienstleisterApp - Waldbesitzer -> DienstleisterApp: Preise etc. eingeben - note right: Dienstleister kann Holzlisten von versch. Waldbesitzer holen und daraus Verkaufslose bilden - DienstleisterApp -> DienstleisterApp: Verkauflose bilden - DienstleisterApp <-> Holzhandelsplattform: Verkauflose veröffentlichen (Optional) - note right: Eigentlicher Abschluss außerhalb des Projekt-Scope. - DienstleisterApp --> Waldbesitzer: Fertig -deactivate Waldbesitzer - -Käufer <-> DienstleisterApp: Interaktion... -activate DienstleisterApp - activate Käufer - note right: Eigentlicher Abschluss außerhalb des Projekt-Scope. - DienstleisterApp -> DZ_Wald: Get Holzlistenstatus in HolzlisteSubmodel - activate DZ_Wald - DienstleisterApp <-- DZ_Wald: Holzlistenstatus - deactivate DZ_Wald - Käufer <-> DienstleisterApp: Interaktion... - DienstleisterApp -> DZ_Wald: Update Holzlistenstatus in HolzlisteSubmodel - activate DZ_Wald - DZ_Wald -> WaldmanagerApp: Update Holzlistenstatus in HolzlisteSubmodel (Benachrichtigung / Event?) - deactivate DZ_Wald - activate WaldmanagerApp - WaldmanagerApp -> Waldbesitzer: Holzlistenstatus - deactivate WaldmanagerApp - deactivate Käufer -deactivate DienstleisterApp - @enduml \ No newline at end of file