CodamAIDocs
Themafertig

Wie die passende Vorlage gefunden wird

Je Mail und Sprache eine Standardfassung, dazu die Fassung eines Mandanten: die Suche vom Mandanten zum Standard, Datenbank vor Auslieferung, und was bei einer kaputten Vorlage passiert.

Ausprägungen
Mandant + SpracheMandant + SprachcodeStandard + SpracheStandard + SprachcodeStandard in der RückfallspracheAnwendung und Ablauf als Platzhalterkaputte Vorlage → übersprungen

Worum es geht

Jede Mail hat je Sprache genau eine Standardfassung. Dazu kann ein Mandant seine eigene Fassung haben, die für ihn statt der Standardfassung gilt. CIAS muss für jede Mail genau eine Vorlage auswählen. Es sucht dafür vom Speziellen zum Allgemeinen: zuerst die Fassung des Mandanten, dann die Standardfassung, jeweils zuerst in der genauen Sprache.

Woher die Vorlagen kommen

Mit CIAS werden Vorlagen für jede Mail auf de und en ausgeliefert. Beim Start übernimmt CIAS sie in die Datenbank, jede als Standardfassung ihrer Mail und Sprache. So findet, wer Texte pflegt, jede Mail in der Datenbank, nicht nur die schon geänderten.

Beim Start einer Installation
  1. 1
    CIAS
    liest die ausgelieferten Vorlagen: die eigenen und die, die andere Module mit einer PackagedMailKeys-Bean anmelden
  2. 2
    CIAS→Datenbank
    legt jede fehlende Standardfassung an, als ausgeliefert markiert
  3. 3
    CIAS→Datenbank
    bringt ausgelieferte Fassungen, die niemand geändert hat, auf den Text der neuen Version
    Ergebnis: Geänderte Fassungen bleiben, wie sie sind. Ein neuer ausgelieferter Text wird dazu einmal im Log gemeldet.

Ob eine Fassung noch ausgeliefert oder schon geändert ist, zeigt das Feld origin (PACKAGED oder EDITED). Laufen mehrere Instanzen gleichzeitig an, entscheidet die Datenbank, wer eine Zeile anlegt. Ein Fehler dabei hält den Start nicht auf.

Woher die Merkmale einer Mail kommen

Merkmalbei Mails der RegistrierungBeispiel
Mandantder Mandant, dem die Person beitritt. Fehlt, wenn noch keiner feststehtnordbau
Sprachedie Sprache der Anfrage, ohne Angabe Deutschde-AT

Die Treppe

Welche Vorlage nimmt CIAS für VERIFY_EMAIL, Mandant nordbau, Sprache de-AT?
  1. CIAS
    Mandant + Sprache
    nordbau + de-AT: die Fassung dieses Kunden, genau in dieser Sprache
    ↳ nein weiter
  2. CIAS
    Mandant + Sprachcode
    nordbau + de: die Fassung dieses Kunden in der Sprache ohne Land
    ↳ nein weiter
  3. CIAS
    Standard + Sprache
    de-AT: die Standardfassung
    ↳ nein weiter
  4. CIAS
    Standard + Sprachcode
    de: die Standardfassung ohne Land
    ↳ nein weiter
  5. CIAS
    Standard in der Rückfallsprache
    die Rückfallsprache, ohne Einstellung Deutsch
    ↳ nein Fehler: keine Vorlage
  6. Vorlage gefunden, Mail wird erzeugt

Schritte, deren Merkmal fehlt, entfallen. Hat eine Mail keinen Mandanten, beginnt die Suche bei der Standardfassung. Ist die Sprache schon nur ein Sprachcode wie de, entfallen die Schritte mit Sprachcode.

Zwei Quellen je Schritt

An jedem Schritt fragt CIAS zwei Quellen, in dieser Reihenfolge:

  1. die Datenbank: die Standardfassungen und die Fassungen der Mandanten, siehe Vorlagen bearbeiten,
  2. den Klassenpfad: die mit der Anwendung ausgelieferten Dateien.

Weil die Standardfassungen beim Start in die Datenbank kommen, antwortet fast immer schon die Datenbank. Der Klassenpfad springt ein, wenn eine Zeile fehlt oder sich nicht erzeugen lässt, oder wenn die Installation ohne Datenbank für Vorlagen läuft. Die ausgelieferten Dateien liegen hier, je Sprache eine Datei für den Betreff und eine für den Text:

cias/mail/{KEY}/{sprache}.subject.ftl                Standard
cias/mail/tenant/{mandant}/{KEY}/{sprache}.…         Mandant

Der Text heißt {sprache}.body.ftl für reinen Text oder {sprache}.body.html.ftl für HTML. Gibt es beides, gewinnt der reine Text.

Anwendung und Ablauf: Platzhalter statt eigener Vorlagen

Eine Registrierung weiß, aus welchem Produkt eine Person kam (application, etwa auditoor) und über welchen Ablauf sie läuft (flow, etwa SELF_SERVICE oder TENANT_ADMIN). Beides sind keine Merkmale einer Vorlage. Sie stehen in jeder Mail als Platzhalter ${application} und ${flow} zur Verfügung, leer, wenn der Absender keinen Wert hat. Eine Vorlage kann darauf verzweigen:

<#if flow == "TENANT_ADMIN">
Sie wurden von Ihrem Administrator eingeladen.
<#else>
Sie haben sich selbst registriert.
</#if>

Die Ausprägungen

Wo die Suche endet

Wann: Nordbau hat eine eigene Willkommensmail auf de-AT.

Ergebnis: diese Vorlage, nur für Nordbau

Wann: Nordbau hat eine eigene Willkommensmail auf de, die Person hat de-AT gewählt.

Ergebnis: Nordbaus Fassung auf de. Der eigene Wortlaut des Kunden schlägt eine Standardfassung in der genaueren Sprache

Wann: Kein eigener Wortlaut des Mandanten, die Person hat en gewählt.

Ergebnis: die englische Standardfassung

Wann: Die Person hat de-AT gewählt, es gibt nur de.

Ergebnis: die Standardfassung auf de

Wann: Die Person hat fr gewählt, es gibt keine französische Vorlage.

Es gilt die Rückfallsprache. Sie ist Deutsch, einstellbar mit codamai.cias.notification.fallback-language.

Ergebnis: die Standardfassung in der Rückfallsprache

Wann: Die Willkommensmail soll für auditoor anders klingen.

Statt einer eigenen Vorlage verzweigt die Standardfassung auf ${application}.

Ergebnis: eine Vorlage für alle Produkte, mit unterschiedlichem Text

Wann: Eine gefundene Vorlage lässt sich nicht erzeugen, etwa eine ältere Zeile mit einem Tippfehler in der Vorlagensprache.

CIAS schreibt eine Warnung ins Log, überspringt die Vorlage und sucht weiter: zuerst in der ausgelieferten Datei derselben Stufe, dann auf der nächsten Stufe. Neue kaputte Vorlagen lassen sich gar nicht erst speichern, siehe Vorlagen bearbeiten.

Ergebnis: nächste Quelle oder nächste Stufe

Erst wenn auch die Standardfassung in der Rückfallsprache fehlt oder kaputt ist, scheitert das Erzeugen der Mail. Das ist ein Fehler der Auslieferung, kein fachlicher.

Fallen

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-notification – FreeMarkerMailRenderer (render: application und flow im Modell, candidates), MailTemplateKey (Mail, Mandant, Sprache), MailRequest
  • CIAS/cias-notification – CompositeMailTemplateSource (Datenbank vor Klassenpfad je Kandidat), DbMailTemplateSource, ClasspathMailTemplateSource (Pfade cias/mail/…)
  • CIAS/cias-notification – MailTemplateSeeder, ClasspathPackagedTemplates (KEYS, LANGUAGES), PackagedMailKeys
  • CIAS/cias-notification – CiasNotificationConfiguration (codamai.cias.notification.fallback-language)
  • CIAS/cias-registration – RegistrationService.sendMail (tenantKey, application, flow, locale)
  • CIAS/cias-notification/docs/adr – ADR-019
Suchen