Tipps & Tricks - Sammel-Mails

1. Allgemeines

In diesem Beitrag erfahren Sie, wie statt mehrerer einzelner E-Mails eine Sammel-E-Mail erstellt werden kann, so dass z.B. jeder Mitarbeiter täglich eine E-Mail mit allen nicht erledigten Aufgaben erhält. Dazu werden eine angepasste Applikation und ein Prozess benötigt. Hier finden Sie eine ZIP-Datei mit unserem Beispiel, die Sie wie gewohnt in ein Portal importieren können.

2. Applikation anpassen

2.1. Referenz auf Benutzer




In den Datensätzen, die in einer Sammel-Mail zusammengefasst werden sollen, wird über den Eigenschaftendialog der Datengruppe eine Referenz auf die Benutzerverwaltung gebildet. Damit stehen Benutzer-ID, Benutzername und die geschäftliche E-Mail-Adresse zur Verfügung.

2.2. Eingabeseite anpassen

Auf der Eingabeseite kann der Benutzer aus einer entsprechend konfigurierten Auswahlliste ausgewählt werden.

2.3. Datenfeld für das Datum des E-Mail-Versands




Nun wird noch ein Datenfeld benötigt - hier im Beispiel das Datenfeld Gesendet am mit dem Datentyp Datetime. Dieses Feld wird nicht mit einem Eingabe-Element verknüpft. Es wird ausschließlich vom Prozess mit Werten gefüllt.

2.4. Ansichtsseite erstellen




Nun wird eine Ansichtsseite (hier z.B. die Seite tbl_Details) erstellt, die die gewünschten Daten eines einzelnen Datensatzes (hier einer Aufgabe) anzeigt. Diese Seite kann mit einer Schaltfläche versehen werden, über die ein Anwender die Aufgabe später aus der Sammel-E-Mail heraus öffnen kann.

2.5. Frei gestaltete Tabelle erstellen




Für die Sammel-Mail wird eine Seite benötigt, die die entsprechend gefilterten Daten in der E-Mail auflistet. In diesem Beispiel setzen wir dies mit einer Frei gestalteten Tabelle auf einer Ansichtsseite (hier die Seite Sammel-Mail in der ersten Ebene der Applikationsstruktur um. Die Ansichtsseite tbl_Details wird im Eigenschaftendialog der Tabelle eingebunden.

2.6. Filter




Hier im Beispiel schließt die zweite Bedingung alle nicht erledigten Aufgaben aus (Erledigt = Falsch). Dieser Status wird mit dem Kontrollkästchen auf der Eingabeseite erfasst. Interessant ist die erste Bedingung (Ref. Benutzer - Benutzer ID = 'int_BenutzerId'). Hier wird die im Datensatz gespeicherte Benutzer ID auf Gleichheit mit der Variablen int_BenutzerId verglichen. Die Variable stammt aus dem zugehörigen Prozess. Hier im Filter ist die System-Option mit der Auswahl Verarbeitungskontext eingestellt, damit der Tabellenfilter die Werte der Variablen verarbeiten kann. Als Wert ist der Variablenname (int_BenutzerId) eingetragen. Der Tabellenfilter kann hier nicht auf die gewohnte Art und Weise konstruiert werden, da die Tabelle nicht für eine Seite im Browser aufgebaut wird, sondern für eine Seite, die in einer Mail eines beliebigen Standard-Mailprogramms eingebettet wird.

3. Prozess

3.1. Globaler Timer




Das erste Element im Prozess ist ein Globalen Timer, der die Prozesskette 1 x täglich startet. Im Eigenschaftendialog wird auf dem Datengruppen-Reiter die gewünschte Applikation und Datengruppe - hier Aufgaben - ausgewählt. Die Datengruppe wird, wie die Tabelle in der Applikation, so gefiltert, dass nur nicht erledigte Aufgaben im Prozess untersucht werden. Außerdem darf das Datums-Datenfeld (Gesendet am), das eigens für diesen Zweck in der Applikation angelegt wurde, nicht gefüllt sein. Der Filterausdruck muss hier mit einer ODER-Verknüpfung erstellt werden. Die erste Bedingung ist, dass das Feld keinen Wert enthält (Gesendet am ist undefiniert). Der zweite Teil filtert die Aufgaben so, dass alle nicht erledigten Aufgaben, die vor heute, 00:00 Uhr verschickt wurden, erneut mit in die Sammel-Mail aufgenommen werden.

3.2. Timer-Ereignisbehandler




Das zweite Element im Prozess ist ein Timer-Ereignisbehandler, der auf den globalen Timer reagiert.

3.3. Groovy-Aktion




Mit dem Timer-Ereignisbehandler wird als drittes Element im Prozess eine Groovy-Aktion (Adressaten zusammenstellen) mit dem folgenden Skript verbunden:
def int_BenutzerId = g_record["29EAEF57FB774606A0F0E81FEAACCE669E6E9345"].value /* datafield Ref. Benutzer - (REF-PK) Benutzer ID <integer> */
g_sharedState.int_BenutzerId = int_BenutzerId
Hier wird die Variable int_BenutzerId definiert und die im aktuellen Datesatz gespeicherte Benutzer-ID ausgelesen. Die Variable wird mit g_sharedState im Verarbeitungskontext zur Verfügung gestellt.

3.4. Filter-Bedingung




Prüft, ob der Benutzer, der von der vorausgehenden Groovy-Aktion ermittelt wurde, bereits eine Sammel-E-Mail erhalten hat. Das Datums-Datenfeld (Gesendet am) darf nicht gefüllt sein. Der Filterausdruck ist mit einer ODER-Verknüpfung erstellt. Die zweite Bedingung gibt vor, dass alle nicht erledigten Aufgaben, die vor heute, 00:00 Uhr verschickt wurden, in die Sammel-Mail aufgenommen werden.

3.5. E-Mail-Aktion




In der E-Mail-Aktion wird die Ansichtsseite aus der Applikation eingebunden. Intrexx verwendet in diesem Prozessschritt die in der Groovy-Aktion erstellte Variable int_BenutzerId, um die Tabelle auf der eingebunden Seite zu filtern. Der in der Applikation erstellte Tabellenfilter wird vor dem Versand der Seite automatisch angewendet und filtert die Aufgaben in der Tabelle entsprechend.



Der Empfänger wird aus der referenzierten geschäftlichen E-Mail-Adresse ermittelt.

3.6. Datengruppen-Aktion




Das letzte Element in der Prozesskette ist eine Datengruppen-Aktion. Damit nicht bei jedem Datensatz eine Mail an den zuständigen Mitarbeiter erstellt wird, werden an dieser Stelle alle weiteren Aufgaben des Mitarbeiters mit dem heutigen Datum, 00:00 Uhr versehen.



Auf dem Reiter Manipulationsmenge werden dazu folgende Einstellungen gesetzt:

Einfacher Filter

Ziel- und Quelldatengruppe ist dieselbe Datengruppe, hier im Beispiel die Aufgaben-Datengruppe. Auch das Datenfeld, hier im Beispiel der referenzierte Benutzer (Ref. Benutzer - (Ref-PK) Benutzer ID) ist das selbe für Ziel und Quelle.

Feldzuordnung




In der Feldzuordnung wird ein benutzerdefinierter Wert erstellt, der das heutige Datum, 00:00 Uhr liefert. Der Wert wird anschließend dem Datenfeld (Gesendet am) zugeordnet. Der Prozess ist damit fertiggestellt.

Für den E-Mail-Versand muss der E-Mail-Service in Intrexx konfiguriert sein.