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

OZG-6891 KOP-2736 readme: Explain xdomea validation

parent 5f6aa968
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ Er wird als Maven-Artefakt `xta-client-lib` bereitgestellt und kann in Java-Anwe
## Senden einer Nachricht
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.
Mit einem Aufruf von `sendMessage` wird eine Nachricht an den XTA-Server übergeben und der Transport-Report zurückgegeben.
```mermaid
%% Senden einer Nachricht
sequenceDiagram
......@@ -75,7 +75,7 @@ var message = XtaMessage.builder()
.messageTypePayloadSchema("urn:xoev-de:xdomea:schema:2.4.0")
.authorIdentifier(XtaIdentifier.builder()
.category("Generischer Antragsdienst")
.value("gad:010103000000")
.value("gad:010200100000")
.build())
.readerIdentifier(XtaIdentifier.builder()
.category("Generischer Antragsempfänger")
......@@ -91,6 +91,36 @@ var transportReport = client.sendMessage(message);
assert transportReport.status() == XtaMessageStatus.OPEN;
```
Da eine Xdomea-Nachricht die Leser- und Autor-Kennungen bereits enthält, ist es möglich aus der Xdomea-ZIP-Datei die Metadaten der XTA-Nachricht abzuleiten:
```java
// ...
// (2) Nachricht erzeugen
// ...
var message = XdomeaXtaMessageCreator.createInstance().createMessage(xdomeaXtaFile);
// (3) Nachricht senden
var transportReport = client.sendMessage(message);
// ...
```
Hierbei wird die Xta-Autor-Kennung aus dem *Xdomea-Absender-Kennung/Behoerdenschluessel* gelesen und die Xta-Leser-Kennung aus dem *Xdomea-Empfaenger-Kennung/Behoerdenschluessel*.
### Validierung der Xdomea-ZIP-Datei
Wenn eine `XtaMessage` für eine Xdomea-ZIP-Datei mit `XdomeaXtaMessageCreator::createMessage` erstellt wird, wird zudem geprüft, ob die Nachricht die ["Transportfestlegungen Generischer Antragsdienst"](Transportfestlegungen%20Generischer%20Antragsdienst.pdf) einhält.
Für eine erfolgreiche Validierung muss eine Xdomea-ZIP-Datei muss folgende Bedingungen erfüllen:
- Der ZIP-Dateiname ist `<ProzessID>_<Nachrichtentyp>.zip` (z.B. `00000000-0000-0000-0000-_Geschaeftsgang.Geschaeftsgang.0201.zip`)
- Die ProzessID in der Xdomea-Nachricht entspricht der ProzessID im Dateinamen
- Die Xdomea-Nachricht `<ProzessID>_<Nachrichtentyp>.xml` in der ZIP-Datei ist schema-konform.
- Der Xdomea-Nachrichten-Typ ist zulässig:
- `Geschaeftsgang.Geschaeftsgang.0201` mit Xdomea 2.4.0
- `Abgabe.Abgabe.0401` mit Xdomea 3.0.0
- `Abgabe.ImportBestaetigen.0402` mit Xdomea 3.0.0
- Alle Dateien, die die Xdomea-Nachricht referenziert, sind in der ZIP-Datei enthalten.
- Eine Absender-Kennung ist vorhanden mit dem Präfix `gad`
- Eine Empfänger-Kennung ist vorhanden mit dem Präfix `gae`
<small>Hinweis: Die Xdomea-Nachricht sollte mit UTF-8 kodiert sein.</small>
## Empfangen von Nachrichten
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.
......
File added
......@@ -13,9 +13,9 @@ import jakarta.validation.constraints.NotNull;
import de.ozgcloud.xta.client.config.XtaClientConfig;
import de.ozgcloud.xta.client.core.XtaClientService;
import de.ozgcloud.xta.client.core.XtaExceptionHandler;
import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
import de.ozgcloud.xta.client.exception.XtaClientException;
import de.ozgcloud.xta.client.exception.XtaClientInitializationException;
import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
import de.ozgcloud.xta.client.model.XtaIdentifier;
import de.ozgcloud.xta.client.model.XtaMessage;
import de.ozgcloud.xta.client.model.XtaMessageMetaData;
......@@ -200,13 +200,14 @@ public class XtaClient {
* reader. If both checks pass, sends the message to the reader. Finally, returns the transport report for the sent message.
* </p>
* <p>
* <b>Note:</b> message size and id are set by the server, and thus may initially be null. This applies to the message metadata as well as
* to the message and attachment files.
* <b>Note:</b> message size and id are set by the server, and thus may initially be null. This also applies to the size of message and attachment
* files.
* </p>
*
* @param messageWithoutMessageId The message to send without id and size.
* @return The transport report for the sent message. As long as the reader did not read the message the status is {@link XtaMessageStatus#OPEN}.
* Moreover, the report contains the message metadata, including id and size values set by the server.
* @param messageWithoutMessageId The XTA message to send without id and size.
* @return The transport report for the sent message. As long as no critical error occurred, indicated by status {@link XtaMessageStatus#RED RED},
* the message the status is {@link XtaMessageStatus#OPEN OPEN}, until the reader closes the message. Moreover, the report contains the message
* metadata, including id and size values set by the server.
* @throws XtaClientException If a check fails or a technical problem occurs while sending the message.
*/
public XtaTransportReport sendMessage(@NotNull @Valid XtaMessage messageWithoutMessageId) throws XtaClientException {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment