Skip to content
Snippets Groups Projects
Commit 5f6aa968 authored by Jan Zickermann's avatar Jan Zickermann
Browse files

OZG-6891 KOP-2736 Improve Readme sequence diagrams

parent 6d2cae81
No related branches found
No related tags found
No related merge requests found
...@@ -8,11 +8,13 @@ Der Client verwendet *XTA 2 Version 3.1* mit [XTA-Modul-Webservice-Version](http ...@@ -8,11 +8,13 @@ Der Client verwendet *XTA 2 Version 3.1* mit [XTA-Modul-Webservice-Version](http
Er wird als Maven-Artefakt `xta-client-lib` bereitgestellt und kann in Java-Anwendungen eingebunden werden. Er wird als Maven-Artefakt `xta-client-lib` bereitgestellt und kann in Java-Anwendungen eingebunden werden.
## Senden einer Nachricht ## Senden einer Nachricht
Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client. Zum Senden einer Nachricht konfiguriert die Nutzer*in einen neuen XTA-Client mit einem Client-Zertifikat, welches ihn für das Senden mit einer Autor-Kennung autorisiert.
Beim Aufruf von `sendMessage` wird die Nachricht an den XTA-Server übergeben und der Transport-Report zurückgegeben.
```mermaid ```mermaid
%% Versand einer Nachricht %% Senden einer Nachricht
sequenceDiagram sequenceDiagram
participant A as Nutzer participant A as Nutzer*in
participant B as XTA-Client participant B as XTA-Client
participant C as XTA-Server participant C as XTA-Server
Note left of A: (1) XTA-Client erzeugen Note left of A: (1) XTA-Client erzeugen
...@@ -27,7 +29,7 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client. ...@@ -27,7 +29,7 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client.
deactivate C deactivate C
B->>C: lookupService B->>C: lookupService
activate C activate C
C-->>B: C-->>B:
deactivate C deactivate C
B->>C: createMessageID B->>C: createMessageID
activate C activate C
...@@ -35,18 +37,19 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client. ...@@ -35,18 +37,19 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client.
deactivate C deactivate C
B->>C: sendMessage B->>C: sendMessage
activate C activate C
C-->>B:
deactivate C deactivate C
B->>C: getTransportReport B->>C: getTransportReport
activate C activate C
C-->>B: C-->>B:
deactivate C deactivate C
Note left of A: (4) Nachrichtenstatus prüfen
B-->>A: B-->>A:
deactivate B deactivate B
deactivate A deactivate A
Note left of A: (4) Nachrichtenstatus prüfen
``` ```
<small>* XTA-Server wird auch oft als Nachrichtenbroker oder Nachrichtenvermittler bezeichnet.</small> <small>* Der XTA-Server wird oft als Nachrichtenbroker oder Nachrichtenvermittler bezeichnet.</small>
**Beispielcode:** **Beispielcode:**
...@@ -54,70 +57,109 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client. ...@@ -54,70 +57,109 @@ Zum Senden einer Nachricht konfiguriert der Nutzer einen neuen XTA-Client.
// (1) XTA-Client erzeugen // (1) XTA-Client erzeugen
var client = XtaClient.from(config); var client = XtaClient.from(config);
// (2) Nachricht erzeugen // (2) Nachricht erzeugen
... var zipFileName = "d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.zip";
var zipFileContentDataHandler = new DataHandler(new FileDataSource("/path/to/" + zipFileName));
var xdomeaXtaFile = XtaFile.builder()
.name(zipFileName)
.content(zipFileContentDataHandler)
.contentType("application/zip")
.build();
var message = XtaMessage.builder()
.metaData(XtaMessageMetaData.builder()
.service("urn:xoev-de:xdomea:schema:2.4.0/xdomea240Antrag.wsdl")
.businessScenarioCode("XDOMEAGAD_DATA")
.businessScenarioListUri("urn:de:dataport:codeliste:business.scenario")
.businessScenarioListVersionId("1.0")
.messageTypeCode("Geschaeftsgang.Geschaeftsgang.0201")
.messageTypePayloadSchema("urn:xoev-de:xdomea:schema:2.4.0")
.authorIdentifier(XtaIdentifier.builder()
.category("Generischer Antragsdienst")
.value("gad:010103000000")
.build())
.readerIdentifier(XtaIdentifier.builder()
.category("Generischer Antragsempfänger")
.value("gae:test-environment@ozg-cloud.de")
.build())
.build())
.messageFile(xdomeaXtaFile)
.attachmentFiles(emptyList())
.build();
// (3) Nachricht senden
var transportReport = client.sendMessage(message);
// (4) Nachrichtenstatus prüfen
assert transportReport.status() == XtaMessageStatus.OPEN;
``` ```
## Empfangen von Nachrichten ## Empfangen von Nachrichten
Zum Empfangen von Nachrichten konfiguriert der Nutzer einen neuen XTA-Client mit allen seinen Leser-Kennungen. Zum Empfangen von Nachrichten konfiguriert die Nutzer*in einen neuen XTA-Client mit den gewünschten Leser-Kennungen. Zudem konfiguriert er das Client-Zertifikat, welches ihn zum Lesen mit den Leser-Kennungen autorisiert.
Beim Aufruf von `fetchMessages` werden alle Nachrichten für die Leser-Kennungen abgeholt und verarbeitet.
Die Nachrichten-Verarbeitung erfolgt durch die übergebene `processMessage`-Funktion.
```mermaid ```mermaid
%% Abfrage einer Nachricht %% Empfangen von Nachrichten
sequenceDiagram sequenceDiagram
participant A as Nutzer participant A as Nutzer*in
participant D as Verarbeiter
participant B as XTA-Client participant B as XTA-Client
participant C as XTA-Server participant C as XTA-Server
Note left of A: (1) XTA-Client erzeugen Note left of A: (1) XTA-Client erzeugen
Note left of A: (2) Nachrichten abholen Note left of A: (2) Nachrichten abholen
A->>B: fetchMessages A->>B: fetchMessages
activate A activate A
activate B activate B
B->>C: getStatusList loop Für jede Leser-Kennung
activate C B->>C: checkAccountActive
C-->>B: activate C
deactivate C C-->>B:
B->>C: getTransportReport deactivate C
activate C B->>C: getStatusList
C-->>B: activate C
deactivate C C-->>B:
B->>A: deactivate C
deactivate B loop Für jede ungelesene Nachricht
Note left of B: (4) Nachricht abholen B->>C: getMessage
A->>B: getMessage activate C
activate B Note left of B: Nachricht abholen
B->>C: getMessage C-->>B:
activate C deactivate C
C-->>B: B->>A: processMessage
deactivate C deactivate B
B->>C: getTransportReport Note left of A: (3) Nachricht verarbeiten
activate C A-->>B:
C-->>B: activate B
deactivate C B->>C: close
B->>A: activate C
deactivate B Note left of B: Nachricht schließen
Note left of D: ...Nachricht verarbeiten... C-->>B:
Note left of B: (5) Nachricht schließen deactivate C
A->>B: close B->>C: getTransportReport
activate B activate C
B->>C: close C-->>B:
activate C deactivate C
C-->>B: B->>A:
deactivate C end
B->>A: end
deactivate B deactivate B
deactivate A deactivate A
Note left of A: (4) Nachrichtenstatus prüfen
``` ```
<small>* Sollte `processMessage` bei der Verarbeitung eine *RuntimeException* werfen, wird `Nachrichten schließen` übersprungen.</small>
**Beispielcode:** **Beispielcode:**
```java ```java
// (1) XTA-Client erzeugen // (1) XTA-Client erzeugen
var client = XtaClient.from(config); var client = XtaClient.from(config);
// (2) Nachricht erzeugen // (2) Nachrichten abholen
... var transportReports = client.fetchMessages(xtaMessage -> {
// (3) Nachricht verarbeiten
});
// (4) Nachrichtenstatus prüfen
for (var transportReport : transportReports) {
assert transportReport.status() == XtaMessageStatus.GREEN;
}
``` ```
## Referenzen ## Referenzen
......
...@@ -8,7 +8,7 @@ import jakarta.validation.constraints.NotNull; ...@@ -8,7 +8,7 @@ import jakarta.validation.constraints.NotNull;
import lombok.Builder; import lombok.Builder;
/** /**
* A xta message consisting of meta data, a message file and optional attachment files. * An XTA message consisting of metadata, a message file and optional attachment files.
* *
* @param metaData Metadata of the message <p>This field is required.</p> * @param metaData Metadata of the message <p>This field is required.</p>
* @param messageFile Main message of the message <p>This field is required.</p> * @param messageFile Main message of the message <p>This field is required.</p>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment