Version: GSB 7Newsletter Workflows
Newsletter sind Dokumente, welche eine Reihe von Dokumenten oder sonstige Nachrichten zusammenstellen und an einen Kreis von Interessenten per Mail verschicken. Ein typischer Anwendungsbereich sind wöchentliche Newsletter mit den wichtigsten Nachrichten und ggf. einer redaktionell bearbeiteten Einleitung. Auf der WebSite des Mandanten kann sich jeder Interessent über ein Formular in die Liste eintragen. Dieser Mechanismus wird nicht in diesem Dokument beschrieben; der Workflow schickt lediglich eine Mail mit dem erzeugten Newsletter an eine beliebige, konfigurierbare Mailadresse. In den meisten Fällen ist dies eine Verteileradresse der Newsletter-Software (Majordomo, Mailman)
Häufig sind dabei einige Arbeitsschritte immer gleich, etwa das Zusammenstellen der zu verschickenden Dokumente, das Eintragen einer Kopfzeile, der Mailadresse für den Verteiler, usw. Auch werden Newsletter meist in regelmäßigen Abständen versandt, womit sich schließlich ein konfigurierbarer Workflow für diese Routineaufgaben anbietet.
Dabei kann man zwischen zwei getrennten Aufgaben unterscheiden:
- Das schablonenhafte, immer wiederkehrende Erzeugen eines Newsletter-Entwurfs anhand bestimmter Regeln und Vorlagen
- Die redaktionelle Bearbeitung eines konkreten Newsletters und das Verschicken
Dementsprechend bieten sich auch zwei einzelne, aber ineinandergreifende Workflows an. Die erste Stufe wird initial konfiguriert und läuft nach einem Start selbstständig im Hintergrund ab. Hier wird zu den festgelegten Zeitpunkten (oder auch einmalig, je nach Bedarf) anhand der Schablonen ein konkreter Newsletter erzeugt und mit automatisch ermittelten Dokument-Fragmenten befüllt. Diese „Rohform“ wird in der zweiten Stufe auf Wunsch einer Redakteursgruppe (oder sofort den Qualitätsbeauftragten) vorgelegt und ggf. nachbearbeitet. Nach der Abnahme kann der Newsletter gerendert und versandt werden.
Beteiligte Dokumenttypen
Der Newsletter-Typ wurde bereits erwähnt. Für die Regeln wird eine Newsletter-Konfiguration erstellt, welche die notwendigen Informationen aufnimmt (Zyklus, Mailadressen, Query, Vorlagen-Newsletter, Namensgebung, ...).
Diese Konfiguration muss der ersten Stufe (NewsletterCreateSubWorkflow) als Parameter mitgegeben werden. Daraufhin sind keine weiteren Aktionen mehr notwendig.
In der Konfiguration kann auf eine Query verwiesen werde, welche bei Ausführung eine Menge an Dokumenten (Fragmenten) liefert. Dies ist eine Standard-CoreMedia-Query, welche als Dokument abgelegt wird. Diese Query kann z.B. alle Dokumente vom Typ „News“ in einem bestimmten Ordner liefern, welche als Referenzen in das zu erzeugende Newsletter-Dokument gesetzt werden.
Abbildung 1 zeigt die Beziehungen der Dokumenttypen untereinander und die Verwendung in Workflows im Überblick.
ConfigNewsletter
Dieser abstrakte Dokumenttyp dient zur Konfiguration einer Newsletter-Art. Konkrete Unterklassen können auf spezielle Features einer Newsletter-Engine eingehen, oder sie benutzen die hier definierten Parameter (Mailman, Majordomo,...)
Folgende Parameter werden hier eingestellt:
Property | Beschreibung |
startDate | Datum der ersten automatischen Newslettererstellung. Falls nicht angegeben, wird Newsletter sofort erstellt.
Falls die Werte timeoutValue und timeoutUnit gesetzt sind, erfolgt eine entsprechende periodische Erstellung des Newsletters, bis das Datum in endDate erreicht ist.Ist kein timeoutValue gesetzt, erfolgt eine einmalige Ausführung.Ist kein Wert in endDate gesetzt, erfolgt eine unendlich häufige Ausführung. Ist kein Wert oder Datum in der Vergangenheit in startDate gesetzt, erfolgt eine sofortige Ausführung. |
endDate | Letzte Ausführung der automatischen Newslettererstellung. Falls nicht angegeben, periodische Erstellung nach Wert in timeoutvalue. |
timeoutValue | Wert des Ausführungsintervalles, z.B. alle 24 Stunden. |
timeoutUnit | Die Zeiteinheit des Ausführungsintervalls, z.B. alle 24 Stunden. Siehe hierzu Klasse DoctypeConstants in der generierten JavaDoc-Api für ein Mapping der Integer-Werte auf tatsächliche Zeiteinheiten. |
receiverEmailPlain | Die Emailadresse, die die letztendliche Verteilung der Plain-Text-Emails übernimmt. |
receiverEmailHtml | Die Emailadresse, die die letztendliche Verteilung der HTML-Emails übernimmt. |
senderEmail | Absenderadresse, die in Newsletter-Emails stehen soll. |
adminEmail | Emailadresse des Newsletteradministrators |
namingSchema | Namensschema der erzeugten Newsletter-Dokumente im CoreMedia-Repository. Die Token ${D}$ und ${T}$ werden durch das aktuelle Datum bzw. die aktuelle Uhrzeit ersetzt. Beispiel: Bundesliga_Newsletter_${D}$_${T}$ |
approveType | Art der Bearbeitung/Freigabe (direkte Publikation = 2, Publikation durch Approver = 1, manuelle Bearbeitung durch Redakteur = 0). |
periodicity | Optionale, textuelle Beschreibung des Ausführungsintervalls, z.B. jeden 1. Sonntag im Monat. |
directorySchema | Wie sollen die erzeugten Newsletter-Dokumente unterhalb des Zielordners abgelegt werden? 0 - (Defaultwert- keine weiteren Ordner) |
includeQueries | Optionale CoreMedia-Query zur Zusammenstellung der für die Erstellung des Newsletters notwendigen Dokumente. Werden mehrere Queries angegeben, so wird die Vereinigungsmenge aller Einzelsuchergebnisse gebildet. |
excludeQueries | CoreMedia-Query, die optional von der Zusammenstellung auszuschließende Dokumente beschreibt. Diese werden aus der Ergebnismenge der includeQueries herausgefiltert. Werden mehrere Queries angegeben, wird die Vereinigungsmenge aller über die excludeQueries gefundenen Dokumente herausgefiltert. |
newsletterLocation | In dem Ordner des verlinkten (Dummy-)Dokuments werden die automatisch generierten Newsletter-Dokumente abgelegt (vgl. namingSchema und directorySchema).
Zur Auswahl des Orders müssen ConfigString-Dokumente ausgewählt werden, die in den entsprechenden Ordner mit dem Namen "_folderIndicator" hinterlegt worden sind. |
prototype | Der (notwendige) Newsletter-Prototyp, dessen Felder in den tatsächlichen, dynamisch generierten Newsletter übertragen werden. |
Newsletter
Dieser Dokumenttyp wird anhand der Konfiguration vom NewsletterCreateWorkflow erzeugt und anhand des Newsletter-Prototyps mit beliebigen Werten vorbelegt. Ein Newsletter ist (bis auf die genannte Ausnahme des Prototyps) immer ein konkreter Newsletter, der generiert und verschickt werden kann. Ein Redakteur erstellt, überarbeitet oder überprüft die optionale Dokumentenliste und den Newsletter-Text. Hier werden nur ausgewählte Properties beschrieben, welche direkt den Erstellungsprozess und die Workflows betreffen.
Property | Beschreibung |
configuration | (Nicht editierbarer) Verweis auf das ConfigNewsletter-Dokument, anhand dessen dieser Newsletter erzeugt wurde. Dies ist notwendig, da nur in diesem Dokument die Notwendigen Informationen für die Generierung und den Versand vorhanden sind. |
documentCompnts | Die Assoziation modelliert auf der Basis des Composite Patterns den Aufbau von zusammengesetzten Dokumenten.
Konkret ist dies eine Liste von Textfragmenten (z.B. News der letzten Woche), die anhand der Query (im NewsletterCreateWorkflow) vorbereitet und vom Redakteur weiterbearbeitet werden kann. |
Query
Zur automatischen Zusammenstellung der gewünschten Textfragmente im Newsletter müssen Regeln formuliert werden. Dies geschieht am einfachsten mit der Standard-Query, welche die SCI bereitstellt. Die Query wird unter einem aussagekräftigen Namen abgespeichert und der Übersicht halber im Ordnerbereich der Newsletter platziert.
Es werden dynamische Queries unterstützt (s. eigenes Kapitel im Workflow-Konzept).
Die Workflows
Dass an dem gesamten Prozess zwei Workflows beteiligt sind, wurde bereits beschrieben. An dieser Stelle wird genauer in die Funktionsweise der beiden Teilworkflows eingegangen.
NewsletterCreateSubWorkflow
Dieser Workflow wird entweder einmalig bei Bedarf oder aber zyklisch verwendet. Die Zykluszeit ist in Konfigurationsdokument festgelegt. Zum nämlichen Zeitpunkt erzeugt er ein neues Newsletter-Dokument unter dem angegebenen Ordner und mit dem angegebenen Namensmuster, kopiert alle Felder aus dem Prototyp-Newsletter hinein, setzt die optional angegebene Query ab und schreibt die Ergebnisdokumente der Query in die Property „documentCompnts“ des neuen Newsletters.
Danach startet er einen losgelösten NewsletterCompleteSubWorkflow und
- beendet sich
oder
- wartet bis zum nächsten Zyklus
Dieser Ablauf ist in der Grafik veranschaulicht.
NewsletterCompleteSubWorkflow
Dieser zweite Workflow-Teil ist eine Art modifizierter 4-Augen-Publikationsworkflow. Die Hauptunterschiede bestehen v.a. darin, dass der „Einstiegspunkt“ konfigurierbar ist und nach der Publikation der Komponenten (die auch weitere, für einen Newsletter notwendige Dokumente sein können) der Newsletter über den Preview-Generator gerendert und anschließend per Mail verschickt wird.
Die Möglichkeit, den Einstiegspunkt im Konfigurationsdokument festzulegen, trägt den vielen denkbaren Newsletter-Typen Rechnung. Bei zwingend erforderlicher redaktioneller Arbeit wird bei „Compose“ begonnen. Hier wird der Newsletter-Text bearbeitet oder zusammengestellt, die Fragmente möglicherweise ergänzt, ausgedünnt oder sortiert.
In einem anderen Fall könnte die Query bereits alle relevanten Texte automatisch ermitteln (etwa alle News der letzen Woche) und der immer gleiche Einleitungstext aus dem Prototypen stammen. Hier könnte eine direkte Publikation ohne QS erfolgen. Allerdings sollte diese Möglichkeit aus offensichtlichen Gründen nur in Sonderfällen erwogen werden. Hier ist der Einstieg bei „Approve“ sicherlich die beste Möglichkeit.