Tipps & Tricks - Sammelmail

In diesem Beitrag erfahren Sie, wie statt mehrerer einzelner E-Mails eine Sammelmail 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, der automatisch einmal täglich startet, benötigt. Hier finden Sie eine ZIP-Datei mit unserem Beispiel, die Sie wie gewohnt in ein Portal importieren können.

Applikation anpassen

Referenz auf Benutzer

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

Eingabeseite anpassen

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

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.

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.

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.

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. Users - User-ID = 'int_UserId'). Hier wird die im Datensatz gespeicherte Benutzer-ID auf Gleichheit mit der Variablen "int_UserId" 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_UserId) 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.

Prozess

Nach dem Import ist der Prozess zunächst deaktiviert. Wenn Sie das Beispiel ausführen und testen möchten, aktivieren Sie den Prozess.

Globaler Timer

Das erste Element im Prozess ist ein Globaler 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 Datumsdatenfeld "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.

Timer-Ereignisbehandler

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

Groovy-Aktion

Mit dem Timer-Ereignisbehandler wird als drittes Element im Prozess die Groovy-Aktion "Adressaten zusammenstellen" mit dem folgenden Skript verbunden:

def int_UserId = g_record["29EAEF57FB774606A0F0E81FEAACCE669E6E9345"].value /* datafield Ref. Users - (REF-PK) User ID <integer> */
g_sharedState.int_UserId = int_UserId

Hier wird die Variable "int_UserId" definiert und die im aktuellen Datesatz gespeicherte Benutzer-ID ausgelesen. Die Variable wird mit g_sharedState im Verarbeitungskontext zur Verfügung gestellt.

Filter-Bedingung

Prüft, ob der Benutzer, der von der vorausgehenden Groovy-Aktion ermittelt wurde, bereits eine Sammel-E-Mail erhalten hat. Das Datumdatenfeld "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.

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_UserId", 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.

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.