Zum Hauptinhalt springen

Custom Schemata für Fachdatenvalidierung

Nur Java-SDK

Wenn ein Verwaltungssystem eingehende Fachdaten gegen ein Schema validieren soll, das weder ein FIM-Schema noch ein XÖV-Standard ist, kann das SDK ein lokales Custom Schema aus dem Dateisystem registrieren.

Das SDK löst Schemata beim Empfang einer Submission in folgender Reihenfolge auf:

  1. Eingebettete SDK-Schemata — Metadaten- und SET-Schemata aus dem Classpath
  2. Custom Schemata — lokal registrierte Dateien aus dem Dateisystem
  3. Remote-Schemata — automatischer HTTPS-Download zur Laufzeit (kein Eintrag nötig)

Custom Schemata werden über eine URI (identifier) adressiert, die exakt mit der schemaUri in den Metadaten der eingehenden Einreichung übereinstimmen muss. Der path zeigt auf die lokale Schema-Datei (JSON Schema oder XSD).

Remote-Schemata brauchen keinen Eintrag

Enthält die schemaUri im Metadatensatz eine https://-URL (z. B. ein FIM-Schema), lädt das SDK die Datei automatisch zur Laufzeit herunter. Nur für Schemata, die nicht öffentlich erreichbar sind oder lokal gebündelt werden sollen, ist eine Registrierung unter customSchemas erforderlich.

Konfiguration per YAML​

sdkSettings:
validationConfig:
validateMetadata: true
validateData: true
validateAttachments: true
customSchemas:
- identifier: "urn:de:meine-behoerde:schema:mein-antrag_1.0"
path: "/etc/fit-connect/schemas/mein-antrag-v1.0.schema.json"
- identifier: "urn:de:meine-behoerde:schema:mein-antrag-xml_1.0"
path: "/etc/fit-connect/schemas/mein-antrag-v1.0.xsd"

Konfiguration per Code​

import dev.fitko.fitconnect.sdk.config.settings.CustomSchema;
import dev.fitko.fitconnect.sdk.config.settings.SdkSettings;
import dev.fitko.fitconnect.sdk.config.settings.ValidationConfig;

ValidationConfig validationConfig = ValidationConfig.builder()
.validateMetadata(true)
.validateData(true)
.validateAttachments(true)
.customSchemas(List.of(
new CustomSchema(
URI.create("urn:de:meine-behoerde:schema:mein-antrag_1.0"),
"/etc/fit-connect/schemas/mein-antrag-v1.0.schema.json"
)
))
.build();

FitConnectSdk sdk = FitConnectSdk.fromConfigBuilder()
.credentials("client-id", "client-secret")
.environment(FitConnectEnvironment.TEST)
.settings(SdkSettings.builder().validationConfig(validationConfig).build())
.build();

Wie der identifier mit der Einreichung zusammenspielt​

Der Sender trägt die schemaUri in den Metadaten der Einreichung ein (unter contentStructure.data.submissionSchema.schemaUri). Das SDK des Empfängers sucht beim Validieren nach einem registrierten Schema, dessen identifier dieser URI entspricht. Stimmen sie nicht überein, fällt die Auflösung auf Schritt 3 (Remote) zurück — oder schlägt fehl, wenn die URI nicht per HTTPS erreichbar ist.

Metadaten der Einreichung (Sender-seitig)
{
"contentStructure": {
"data": {
"submissionSchema": {
"schemaUri": "urn:de:meine-behoerde:schema:mein-antrag_1.0",
"mimeType": "application/json"
}
}
}
}
Dateipfad muss zur Laufzeit erreichbar sein

Der unter path angegebene Pfad wird beim Start des SDK eingelesen. Ist die Datei nicht vorhanden, wirft das SDK eine FitConnectSchemaException beim Aufbau des Clients. Prüfen Sie daher in Ihrer Deployment-Pipeline, dass Schema-Dateien zusammen mit der Anwendung ausgeliefert werden.