Zum Hauptinhalt springen

Tutorial: Erste Submission in 15 Minuten

Typ C · Onlinedienst   Dauer: ca. 15 Minuten

Was Sie hier bauen: Ein Programm, das als Onlinedienst eine verschlüsselte Submission an einen FIT-Connect-Zustellpunkt sendet und submissionId und caseId ausgibt — die beiden IDs, mit denen in Tutorial 2 die Verwaltungsseite weitermacht.

Lernziel, nicht Produktivcode

Dieses Tutorial ist darauf ausgelegt, dass Sie etwas zum Laufen bringen und verstehen, was passiert. Für vollständige Produktivintegrationen lesen Sie danach das Rezept Antrag senden.


Voraussetzungen​

  • JDK 21+ — java --version
  • Maven 3.6+ — mvn --version
  • Test-Credentials aus dem Self-Service-Portal — clientId und clientSecret eines Onlinedienst-Clients (Sender)
  • Die Destination-ID Ihres eigenen Onlinedienstes (Typ C) — jede Partei in FIT-Connect ist selbst eine Destination, auch ein reiner Sender
  • Eine bekannte Ziel-Destination-ID (Typ A/B) aus dem Self-Service-Portal, an die Sie senden

Schritt 1: Projekt anlegen​

mvn archetype:generate \
-DgroupId=de.example \
-DartifactId=fit-connect-demo \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

cd fit-connect-demo

Schritt 2: SDK-Dependency eintragen​

Öffnen Sie pom.xml und ergänzen Sie innerhalb von <dependencies>:

<dependency>
<groupId>dev.fitko.fitconnect</groupId>
<artifactId>sdk-client</artifactId>
<version>4.0.0-rc.1</version>
</dependency>

Dann:

mvn dependency:resolve

Erwartete Ausgabe: BUILD SUCCESS. Schlägt der Download fehl, prüfen Sie die Maven-Central-Erreichbarkeit.


Schritt 3: Konfigurationsdatei erstellen​

Legen Sie config.yml im Projektverzeichnis an:

# config.yml — niemals committen!
credentials:
clientId: "ihre-client-id"
clientSecret: "ihr-client-secret"

environment: TEST

Private Schlüssel (Entschlüsselung, Signatur) gehören nicht in diese Datei — sie werden dem SDK erst beim Erzeugen von Organisation/OnlineService als Argument übergeben (Schritt 5).

Ohne Datei

Die Datei ist optional. Kommen die Credentials z. B. aus einem Vault, bauen Sie das SDK direkt: FitConnectSdk.fromConfigBuilder().credentials(id, secret).environment(FitConnectEnvironment.TEST).build() — alle weiteren Optionen (SdkSettings) gehen ebenfalls über den Builder, siehe Konfiguration.

Credentials nicht committen

Fügen Sie config.yml bzw. appsettings.json zu .gitignore hinzu. Credentials gehören nicht in die Versionskontrolle.


Schritt 4: SDK initialisieren​

Ersetzen Sie den Inhalt von src/main/java/de/example/App.java:

package de.example;

import dev.fitko.fitconnect.sdk.FitConnectSdk;
import dev.fitko.fitconnect.sdk.clients.OnlineService;
import dev.fitko.fitconnect.sdk.api.Addressing;
import dev.fitko.fitconnect.sdk.api.OutgoingSubmission;
import dev.fitko.fitconnect.sdk.api.Participant;
import dev.fitko.fitconnect.sdk.api.SubmissionData;
import dev.fitko.fitconnect.rest.model.submission.SentSubmission;

import java.net.URI;
import java.nio.file.Path;
import java.util.UUID;

public class App {
public static void main(String[] args) throws Exception {

FitConnectSdk sdk = FitConnectSdk.fromConfigYaml(Path.of("config.yml"));

System.out.println("SDK initialisiert. Sende Submission…");
}
}

Schritt 5: Submission bauen​

Ein Antrag braucht immer einen Empfänger und Fachdaten. Der Empfänger wird als Participant adressiert – Destination-ID plus Addressing (hier: eine Verwaltungsleistung nach LeiKa-Schlüssel). Empfänger und Fachdaten reichen Sie an den OutgoingSubmission-Builder weiter; build() liefert das fertige, aber noch nicht gesendete Objekt zurück.

Ergänzen Sie innerhalb von main() vor der schließenden Klammer:

UUID myDestinationId = UUID.fromString("IHRE-EIGENE-DESTINATION-ID-HIER"); // Typ C
UUID recipientId = UUID.fromString("EMPFAENGER-DESTINATION-ID-HIER"); // Typ A/B

OnlineService onlineService = sdk.onlineService(myDestinationId);

Participant recipient = Participant.of(
recipientId,
Addressing.toService(
"urn:de:fim:leika:leistung:99400048079000",
"FIT-Connect Tutorial"));

OutgoingSubmission submission = OutgoingSubmission.to(recipient)
.setData(SubmissionData.json(
"{\"message\": \"Hallo aus dem Tutorial!\"}",
URI.create("https://schema.fitko.de/fit-connect/fitconnect_demo_0.1.schema.json")))
.build();

Was hier passiert:

  • sdk.onlineService(myDestinationId) / client.AsOnlineService() — Ihr eigener Onlinedienst als handelnde Destination (Typ C); jede Partei in FIT-Connect ist selbst eine Destination, auch ein reiner Sender
  • Participant.of(recipientId, Addressing.toService(...)) / WithDestinationId + WithServiceType — wer empfängt und welche Verwaltungsleistung (Leika-Schlüssel)
  • SubmissionData.json(...) / WithJsonData — Antragsdaten als JSON + Schema-URI zur Validierung
  • WithMetadataVersion(new Version(1, 5, 0)) — nur .NET: die Metadaten-Version ist dort ein expliziter Pflichtschritt, Java leitet sie aus den gesetzten Feldern ab

Schritt 6: Submission senden​

SentSubmission sent = onlineService.send(submission);

System.out.println("✓ Submission gesendet!");
System.out.println(" submissionId: " + sent.submissionId());
System.out.println(" caseId: " + sent.caseId());

Schritt 7: Ausführen​

mvn compile exec:java -Dexec.mainClass="de.example.App"

Erwartete Ausgabe:

SDK initialisiert. Sende Submission…
✓ Submission gesendet!
submissionId: 3fa85f64-5717-4562-b3fc-2c963f66afa6
caseId: a1b2c3d4-e5f6-7890-abcd-ef1234567890

Wenn Sie die submissionId sehen, hat alles geklappt: Das SDK hat die Submission verschlüsselt, FIT-Connect hat sie entgegengenommen und für den Zustellpunkt bereitgelegt. Notieren Sie submissionId und caseId — Tutorial 2 holt genau diesen Antrag auf der Verwaltungsseite ab.


Was Sie gelernt haben​

  • SDK installieren und konfigurieren (Java: YAML, .NET: DI + JSON) — ein Sender braucht keine Schlüssel
  • Die Rolle (OnlineService / AsOnlineService()) entscheidet, welche Methoden es gibt
  • Eine Submission mit Fachdaten bauen und senden; das SDK erledigt Verschlüsselung, Hashes und Upload
  • Was submissionId und caseId bedeuten

Was als Nächstes?​