6 Laufzeitsicht
6.1 Szenario 1 — Schreiboperation via Command Pattern
Ablauf einer typischen Schreiboperation (z.B. Anlegen einer neuen Entität) in einer Fachapplikation:
Sachbearbeiter → REST-Controller (consuming App)
→ DomainCommandFactory.getCommand(action, dto, parameters)
→ Command.status = INITIATED (persistiert in egov_cmd_command)
→ BaseExecutor.execute(command)
→ RuleSetService.getApplicableRuleSet(command) ← DB-Abfrage egov_iam_*
→ ValidationEngine.validate(ruleSet, dto, action)
→ Validierungsregeln rekursiv ausgewertet → ValidationTriple
→ [FAILED] → Command.status = HARD_VALIDATION_FAILED, ResponseExceptionBody zurückgegeben
→ [OK] → Command.status = VALIDATED
→ BaseRepositoryImpl.saveWithTx(entity)
→ Command.status = EXECUTED
→ HTTP 200 / 201
Beteiligte Bausteine: REST-Controller (App),
DomainCommandFactory, BaseExecutor,
ValidationEngine, RuleSetService,
BaseRepositoryImpl
6.2 Szenario 2 — Gefilterte Listenabfrage mit Row-based Security
Ablauf einer paginierten GET-Anfrage mit Filterausdruck:
Sachbearbeiter → REST-Controller (consuming App)
→ BaseRepositoryImpl.find(parameters)
→ QueryBuilder.buildBaseQuery(parameters, entity, config)
→ FilterParser.parse(parameters.filter) ← Filter-DSL → AST
→ PermissionBuilder.append(query, userId) ← Rollen-WHERE aus egov_iam_permission_definition
→ Sortierung + LIMIT/OFFSET angefügt
→ Native SQL via JDBC ausgeführt
→ PaginatedResult<T> zurückgegeben
→ HTTP 200 mit Datenliste (ausschliesslich berechtigte Zeilen)
Beteiligte Bausteine: REST-Controller,
BaseRepositoryImpl, QueryBuilder,
FilterParser, PermissionBuilder,
DataHolder
6.3 Szenario 3 — Authentication-Flow (Vorgelagertes IAM)
Sachbearbeiter → Azure AD (Login)
→ F5-Firewall setzt EGOV_TOKEN-Cookie
→ HTTP-Request mit Cookie → ContextInterceptor (Framework)
→ UserIdProvider.getUserId(request) ← Implementierung in consuming App
→ DataHolder.setUserId(userId) ← ThreadLocal für Request-Dauer
→ Alle nachgelagerten Permission-Checks lesen userId aus DataHolder
Beteiligte Bausteine: Azure AD (extern), F5-Firewall
(extern), ContextInterceptor, UserIdProvider
(consuming App), DataHolder
6.4 Szenario 4 — AI-gestützte Regelgenerierung
Ablauf der Generierung einer neuen Validierungsregel aus natürlicher Sprache:
Framework-Entwickler / Admin → RuleModificationController (POST)
→ RuleGenerator.generate(freitextBeschreibung)
→ Azure OpenAI API aufgerufen
→ Prompt enthält Grammatik der erlaubten Validierungsfunktionen
→ RuleTranslator.translate(llmResponse)
→ JSON → Framework-Validierungsregel-Format
→ Regel in egov_iam_rule_set persistiert
→ HTTP 200 mit generierter Regel
Beteiligte Bausteine:
RuleModificationController, RuleGenerator,
RuleTranslator, Azure OpenAI (extern),
RuleSetService