ti&m e-gov-framework

4 Lösungsstrategie

4.1 Technologie-Entscheidungen

Bereich Entscheidung Begründung
Persistence JPA/Hibernate + nativer JDBC für Queries JPA für Entity-Mapping; native SQL im QueryBuilder für volle Kontrolle über Permission-Filter und dynamische WHERE-Klauseln
Datenbankmigrationen Flyway Versionierte, reproduzierbare Schema-Migrationen; Framework liefert eigene Skripte mit
Multi-DB PostgreSQL + SQL Server Behörden haben unterschiedliche Infrastrukturvorgaben; beide Dialekte werden unterstützt
Build & Distribution Maven BOM + Artifactory BOM ermöglicht konsistentes Dependency-Management; Artifactory als internes Registry
AI-Integration Spring AI + Azure OpenAI Regelgenerierung aus Freitext; Spring AI als Abstraktionsschicht für spätere LLM-Wechselbarkeit
Service Discovery Apache Curator / ZooKeeper Optionale verteilte Command-Ausführung über Instanzen hinweg
ID-Generierung LUID / DB-Sequence / ULID (e-gov-luid) Sortierbare, gap-tolerante IDs je nach Anforderung der Applikation

4.2 Top-Level-Zerlegung

Das Framework ist als Maven-Bibliothek strukturiert — es läuft nicht selbst, sondern wird in Fachapplikationen eingebettet. Die Zerlegung folgt dem Prinzip Kern + optionale Erweiterungsmodule:

e-gov-bom                  ← Dependency-Versionssteuerung (kein Code)
e-gov-framework            ← Pflicht-Kern: Persistence, IAM, Command-Pattern, Exception-Handling
e-gov-luid                 ← Optional: alternative ID-Generierungsstrategien
e-gov-mdm                  ← Optional: Stammdatenverwaltung (Codelisten, Vokabulare)
e-gov-mdm-api              ← Optional: REST-API-Layer für MDM
e-gov-ai-rule-generation   ← Optional: LLM-gestützte Regelgenerierung
e-gov-framework-demo       ← Referenzimplementierung (nicht für Produktion)

4.3 Wesentliche Designprinzipien

4.4 Erreichung der Qualitätsziele

Qualitätsziel Massnahme
Wartbarkeit BOM, Convention over Configuration, generische Basisklassen (BaseRepositoryImpl, BaseExecutor, BaseAction) minimieren Wiederholung in consuming Apps
Performance Query-Schicht Nativer JDBC im QueryBuilder statt JPA-Criteria-API; Permission-Filter direkt in SQL; konfigurierbare Paginierung
Row-based Security PermissionBuilder erweitert jede SELECT-Abfrage automatisch um rollenbasierte WHERE-Bedingungen; keine manuelle Filterung nötig
Stammdatenkonsistenz Zentrales MDM-Modul mit mehrsprachiger Unterstützung; alle Apps greifen auf denselben Vokabular-Store zu