MusterKapitel I · Domäne · Baustein 7 von 7

Anti-Corruption Layer

Eine Anti-Corruption Layer schützt das eigene Modell vor Begriffen und Strukturen eines fremden Systems. Sie übersetzt in beide Richtungen und behandelt nicht abbildbare Zustände ausdrücklich.

  1. ÜbersetzungFremde Codes werden Shop-Zustände.
  2. ZuordnungsregelJeder Code hat eine feste Regel.
  3. ÄnderungsstelleAnbieteränderungen treffen nur die ACL.

Einordnung

Warum das wichtig ist

Übernimmt der Shop die Codes des Anbieters ungeprüft, wandern sie in die Fachlogik. Ein Adapter übersetzt technisch (Protokoll, Format), die ACL übersetzt Bedeutung. Oft steckt sie als Adapter hinter einem Port, den das Fachmodell vorgibt. Die Richtung technischer Abhängigkeiten behandelt Dependency Inversion.

Dieser Baustein erklärt semantische Übersetzung an einer Fremdgrenze. Für die Richtung technischer Abhängigkeiten siehe Dependency Inversion.

Auf einen Blick · Übersetzung an der Grenze

Eine Schutzschicht übersetzt das Modell des Fremdsystems in das eigene Modell, sodass fremde Begriffe nie in die eigene Domäne gelangen.
Shop-Beispiel · Übersetzung an der Grenze

So übersetzt die ACL

Der Zahlungsanbieter liefert die Codes APPROVED, DECLINED und PENDING_REVIEW. Der Shop verwendet die eigenen Zustände autorisiert, abgelehnt und Klärung läuft.

So liest du das Bild

  1. Übersetzung APPROVED wird zu autorisiert, Betrag und Währung zu Geldbetrag(49,90 EUR).
  2. Zuordnungsregel Die hervorgehobene Regel zeigt, welcher Anbietercode in welchen Zustand übergeht.
  3. Änderungsstelle Im Fall v2 heißt das Feld state; nur die Regeln ändern sich, das Ergebnis nicht.

Antwort des Zahlungsanbieters

{
  "status": "APPROVED",
  "amount": 4990,
  "currency": "EUR",
  "ref": "pay_7Qx2",
  "merchant_order": "B-1042"
}

ACL · Zuordnungsregeln

  • status APPROVEDzustand: autorisiert (greift)
  • status DECLINEDzustand: abgelehnt
  • status PENDING_REVIEWzustand: Klärung läuft
  • anderer statustechnischer Klärungsfall
  • amount + currencybetrag: Geldbetrag(49,90 EUR) (greift)
  • refanbieterReferenz (greift)
  • merchant_orderbestellung (greift)

Shop-Modell Zahlung

bestellung
B-1042
zustand
autorisiert
betrag
Geldbetrag(49,90 EUR)
anbieterReferenz
pay_7Qx2

übersetztDie ACL macht aus APPROVED den Shop-Zustand autorisiert; Betrag und Währung werden zu Geldbetrag(49,90 EUR).

Beispieldaten illustrativ

Wähle die Antwort des Anbieters; hervorgehoben ist die Regel, die greift. Beispieldaten illustrativ.

Wohin wandern die Codes?

Schutz
Code des Anbieters
  • sauberZahlungsanbietersendet APPROVED
  • ungeschütztACL an der Grenzefehlt, nichts wird übersetzt
  • FremdbegriffBestellungarbeitet mit Anbietercode APPROVED
  • FremdbegriffRechnungkennt den Anbietercode

ja, in Bestellung und RechnungAnbietercodes im Fachmodell

Ohne ACL arbeiten Bestellung und Rechnung mit dem Anbietercode. Ändert der Anbieter sein Modell, ändert sich der Shop mit.

Mit und ohne ACL im Vergleich: Ohne sie landen Anbietercodes in Bestellung und Rechnung, mit ihr bleiben sie an der Grenze.

Nutzen & Grenzen

Hilft, wenn

  • Begriffe oder Zustände eines Fremdsystems weichen von der eigenen Domäne ab und brauchen eine kontrollierte Übersetzung.
  • Ein instabiler externer Vertrag soll Änderungen an einer klaren Stelle bündeln.

Grenzen

  • Eine Übersetzungsschicht verursacht eigenen Pflegeaufwand. Prüfe, ob die fremde Semantik tatsächlich das Modell beeinträchtigt und ordne die Beziehung über eine Context Map ein.
  • Eine Übersetzung kann nur weitergeben, was der Fremdvertrag liefert. Fehlende Informationen erfindet sie nicht; sie müssen im API-Vertrag geklärt werden.

In der Praxis

  1. Fremde Semantik und Grenzfälle erfassen. Sammle Formate, Statuswerte und Fehlerantworten samt Bedeutung. Das Ergebnis trennt stabile Zusagen von unbekannten oder mehrdeutigen Zuständen.
  2. Eigenen Vertrag und Übersetzung festlegen. Definiere interne Begriffe und die Zuordnung vom externen Modell. Verknüpfe die Integrationsbeziehung mit der Context Map.
  3. Mapping mit echten Varianten prüfen. Teste bekannte, fehlende und unbekannte Felder und Zustände. Nutze den API-Vertrag, um Änderungen des Partners früh gegen die Übersetzung zu validieren.
Ausführliche Erklärung lesen

Eine Integrationsgrenze nimmt fremde Formate, Status und Fehler an und wandelt sie in eine interne Repräsentation um. So bleiben Fachregeln unabhängig von historischen Codes oder unpassenden Begriffen eines Partners. Context Map macht die Beziehung zwischen den Modellen sichtbar; API-Verträge beschreiben den beobachtbaren Austausch.

Die Übersetzung muss Semantik erhalten und unklare oder nicht darstellbare Zustände ausdrücklich behandeln. Feldumbenennung reicht nicht, wenn Informationen fehlen oder mehrere Bedeutungen zusammenfallen. Die Schicht benötigt Tests mit repräsentativen Daten und eine klare Zuständigkeit für Änderungen am Fremdvertrag.

Ein Adapter passt Protokoll und Format an, eine Fassade vereinfacht den Zugriff auf ein System. Die ACL geht weiter und übersetzt die Bedeutung fremder Begriffe in das eigene Modell. Umgesetzt wird sie oft als Adapter hinter einem Port, den das Fachmodell vorgibt; die Richtung dieser Abhängigkeit behandelt Dependency Inversion.

Selbst prüfen

Teste dich in drei Stufen

  1. AblesenIm Bild nachsehen

    Der Anbieter sendet PENDING_REVIEW. Welchen Zustand hat die Zahlung im Shop-Modell, und was geschieht mit der Bestellung?

    Lösung mit Begründung ansehen

    Der Zustand ist Klärung läuft. Die Bestellung wird nicht fortgesetzt; der Shop fragt später erneut ab.

  2. AnwendenAuf eine neue Lage übertragen

    Der Anbieter liefert den Betrag künftig in Euro statt in Cent (49.90 statt 4990). Welche Regel änderst du, und was bleibt gleich?

    Lösung mit Begründung ansehen

    Du änderst nur die Regel für amount + currency in der ACL: Sie rechnet nicht mehr aus Cent um. Das Ergebnis Geldbetrag(49,90 EUR) und alle Shop-Zustände bleiben unverändert.

  3. BewertenEine Alternative abwägen

    Der Shop nutzt vom Anbieter nur einen einzigen Code. Lohnt sich trotzdem eine ACL?

    Lösung mit Begründung ansehen

    Eine kleine ACL kostet wenig Pflege und hält die Anbietersprache aus dem Fachmodell. Bei einem externen Anbieter ohne Einfluss auf seinen Vertrag lohnt sie sich. Ist die Übersetzung trivial und der Vertrag stabil, genügt ein einfacher Adapter.

Weiter im Lernpfad

Damit hast du Domänenmodellierung durchlaufen. Weiter geht es mit Stile & Muster.