IsyFact Architekturregeln

IFS-Logo Diese Seite ist ein Teil der IsyFact-Standards. Alle Inhalte der Seite, insbesondere Texte und Grafiken, sind urheberrechtlich geschützt. Alle urheberrechtlichen Nutzungs- und Verwertungsrechte liegen beim Bundesverwaltungsamt.

Creative Commons Namensnennung Die Nutzung ist unter den Lizenzbedingungen der Creative Commons Namensnennung 4.0 International gestattet.

1. Einleitung

Dieses Dokument gibt einen Überblick über alle in der IsyFact verwendeten Architekturregeln.

2. Architekturregeln

Vererbungshierarchien im Persistenz-Klassenmodell

Vererbungshierarchien zur Abbildung in relationalen Datenbanken sollten nur verwendet werden, wenn das fachliche Datenmodell dadurch optimal wiedergegeben wird. Sie sollten nur eine Oberklasse mit einigen Subklassen und höchstens zwei Vererbungsebenen umfassen.

Benennung von Metadaten

Metadaten sind, egal über welches Protokoll sie übertragen werden, einheitlich benannt. Gibt es eine durch einen Standard vorgegebene Benennung, ist diese zu verwenden.

Verwendung von HTTP für Service-Aufrufe

Synchrone Service-Aufrufe finden über das Protokoll HTTP statt und werden sowohl zur internen als auch externen Servicekommunikation genutzt. HTTP-Anfragen bzw. HTTP-Antworten (s. Abbildung 1) erlauben es an drei Stellen, anwendungsspezifische Daten zu übertragen: in der URL, in den Headern sowie im Body.

http messages aufbau.dn
Abbildung 1. Aufbau von HTTP-Anfragen bzw. HTTP-Antworten

Header enthalten Metadaten. Der Body enthält Nutzdaten. Bei Anfragen mittels GET und DELETE, die keinen Body erwarten, enthalten URL-Parameter Nutzdaten.

Persistente Entitäten im Anwendungskern

Persistente Entitäten dürfen nicht über den Anwendungskern hinaus herausgegeben werden. Sie haben im Anwendungskern zu verbleiben.

Architekturregel

Beim Loggen der Nachrichten sind grundsätzlich die Vorgaben der Datenschutzgrundverordnung (DSGVO) einzuhalten. Eine besondere Rolle spielen dabei personenbezogene Daten und insbesondere Daten gemäß Artikel 9 DSGVO. Ebenso dürfen grundsätzlich keine sicherheitsrelevanten Daten (z.B. Passwörter) geloggt werden.

Architekturregel

Logback wird durch eine Anwendung niemals direkt, sondern ausschließlich über die Bibliothek isy-logging aufgerufen. Dadurch wird die einheitliche Nutzung von logback sichergestellt. Ausnahmen sind hierbei externe Bibliotheken (siehe Logging externer Bibliotheken).

Verwendung von Hibernate Filtern

Wenn das fachliche Datenmodell variable Sichtbarkeitsregeln in größerem Umfang benötigt, sollten diese mit Hibernate Filtern umgesetzt werden.

Architekturregel

Die Single Table per Class Hierarchy Strategie sollte die Default-Strategie sein, weil sie performante Abfragen erlaubt.

Architekturregel

Wenn Not-Nullable-Constraints zwingend erforderlich sind und polymorphe Queries benötigt werden, ist die Joined Subclass Strategie eine gute Wahl. Ein weiteres Argument für diese Strategie sind Subklassen mit vielen Attributen.

Architekturregel

Die Table per Concrete Class Strategie sollte, wenn überhaupt, nur gewählt werden, wenn die anderen Strategien nicht passen und auf die Oberklasse keine oder nur wenig polymorphe Zugriffe zu erwarten sind.

Architekturregel

Diese Art der Vererbung von einer Java-Oberklasse auf Entitäten-Subklassen kann eingesetzt werden, wenn nur auf die Subklassen zugegriffen werden muss.

Architekturregel

Ein auf der IsyFact basierendes IT-System muss seine REST-Services mindestens anhand Stufe zwei des Richardson Maturity Models umsetzen.

Architekturregel

Es dürfen nur nicht datenschutzrelevante Informationen in Query Parametern verwendet werden, um das Loggen von datenschutzrelevanten Daten zu verhindern.

Architekturregel

POST wird auch für fachliche Operationen genutzt, die keiner der anderen HTTP-Methoden zugeordnet werden können (z. B. Verifikation eines Antrags).

Architekturregel

PATCH ist nur zu verwenden, wenn PUT aus triftigen Gründen nicht funktioniert.

Architekturregel

Alle REST-Services innerhalb einer Systemlandschaft nutzen eine einheitliche, textbasierte Repräsentationsform. Binäre Daten werden über direkte Anfragen binär ohne Transformation zurückgeliefert.

Architekturregel

REST-Schnittstellen verwenden ausschließlich Transferobjekte (Data Transfer Objects, DTOs).

Logging für Tasks

Der Anwendungscode für Tasks muss mindestens die folgenden Informationen ins Log schreiben:

  • Fachliche Fehlermeldungen (Log-Level: INFO),

  • Technische Fehlermeldungen (Log-Level: ERROR).