Generierung von Serienbriefen als Sammeldokument mit Massendaten
Ziele
Selektion und Verarbeitung von Massendaten zur Generierung von einem oder mehreren Serienbriefen.
Durchführung mehrerer Serienbriefaktionen (unterschiedliche Serienbriefe)
Die Zielgruppen jeder Serienbriefaktion basieren im Wesentlichen auf unterschiedlichen Vertragsselektionskriterien.
Pro Serienbriefaktion sollten Selektionsmengen > 100.000 verarbeitet werden können (Tests bei CURSOR Software AG wurden mit einem Datenbestand und mit einer Obergrenze von 130.000 Sätzen durchgeführt).
Es wird nur ein Ansprechpartner pro Geschäftspartner angeschrieben.
Zu jedem Ansprechpartner wird eine eigene Aktivität angelegt. Die Aktivität ist mit dem Ansprechpartner, dem Geschäftspartner sowie dem Dokument verknüpft.
Zwecks Reduzierung der Versandkosten soll das Selektionsergebnis einer Serienbriefaktion nach PLZ sortiert sein.(Eine Sortierung nach PLZ über alle Serienbriefaktionen ist nicht möglich.)
Im Serienbriefdokument werden lediglich Daten aus dem Geschäftspartner, Ansprechpartner und dessen Adresse ausgegeben.
Umgebungsbedingungen
Client-Rechner
Der Client-Rechner, auf dem der Serienbrief gestartet wird, sollte über 2GB Arbeitspeicher verfügen.
Indivduelle Konfiguration der Client-Anwendung während der Serienbriefaktionen ist notwendig. Die JVM der Client-Anwendung muss mit genügend Arbeitsspeicher konfiguriert werden (1,4 GB im Falle eines 32 Bit-Client Betriebssystems). Der Aufruf des Clients erfolgt dann mit den Paramtern XMS 1400m XMX 1400m
<Client-Bin-Verzeichnis>\run XMS 1400 XMX 1400
Applikationsserver
Arbeitsspeicher
Der Applikationsserver muss während der Serienbriefaktionen ebenfalls individuell konfiguriert werden. Die erhöhte Zuteilung von Arbeitsspeicher ist hier abhängig vom basierenden Betriebssystem.
Variante 1 - Applikationsserver JBoss auf einem 32Bit Betriebssystem
zugeteilter Arbeitsspeicher: 1,1GB (mehr ist nicht möglich)
Erfahrungswerte: Bei der Verarbeitung von großen Selektionsmengen (>100.000) werden die Ressourcen vom Applikationsserver nahezu vollständig aufgebraucht.Variante 2 - Applikationsserver JBoss auf einem 64Bit Betriebssystem
zugeteilter Arbeitsspeicher: 2GB
Erfahrungswerte: Bei der Verarbeitung von großen Selektionsmengen (>100.000) sind weiterhin ausreichend Ressourcen für den Applikationsserver verfügbar. CURSOR Software AG empfiehlt diese Variante.
In der Datei <JBoss-Bin-Verzeichnis>\run.bat ist die Speichereinstellung zu ändern.
set JAVA_OPTS=%JAVA_OPTS% -server -Xms2048m -Xmx2048m
Datenbanktreiber
Für den Zugriff auf die Datenbank wurden die beiden 32-Bit Treiber-Varianten der Datenbank geprüft: OCI-Treiber und JDBC-Thin-Treiber. Bei unseren Tests konnte in beiden Fällen der Serienbrief erstellt und die Datenmenge verarbeitet werden. Der Speicherverbrauch sowie die Performance des JDBC-Thin-Treibers war geringer.
Im Falle einer 64-Bit Installation des JBoss ist der 64-Bit OCI-Treiber zu verwenden.
Datenbankserver
Der Datenbankserver sollte ebenfalls über genügend Hauptspeicher verfügen und die Tablespaces sollten ausreichend dimensioniert sein, um die Datenmenge aufzunehmen. Ein schnelles Festplattensystem ist hier sicherlich von Vorteil.
Datenvolumen für 2 Serienbriefe ca. 381000 Aktivitäten:
Daten-Tablespace + 0,4 GB
Index-Tablespace + 0,9 GB
Erfahrungswerte: Während der Serienbriefaktion (Neuanlage von Aktivitäten und deren Verknüpfungen) sollten zusätzliche Anfragen an Datenbankserver vermieden werden. Die Performance während dieser Aktion ist deutlich gebremst (eine Select-Anweisung,welche normalerweise unter 1 sec abgehandelt war, benötigte während der Aktivitätenanlage z. B. 45 sec auf unserem Testserver).
Vorarbeiten
Recht zur Ausführung von großen Selektionsmengen
Größere Serienbriefaktionen führen zu einer starken Auslastung des Systems. Daher ist es notwendig, das Recht zur Ausführung von großen Selektionsmengen auf einzelne Mitarbeiter zu beschränken. Die folgenden SQL-Statements müssen pro berechtigten Mitarbeiter ausgeführt werden.
Der Text [Mitarbeiterkürzel] muss durch das Kürzel des berechtigten Mitarbeiters ersetzt werden. Der Primärschlüssel muss pro Mitarbeiter eindeutig sein.
Schritt 1
Benutzerspezifische Freigabe zur Selektion von größeren Datenmengen (>10000) ====
DELETE FROM Propertymapper WHERE pk = '<Mitarbeiterkürzel>' || 'TopCount_UseMax';
INSERT INTO PropertyMapper (Pk, id, propertyValue, propertyType, principal, Active, CreateDate, CreateUser, UpdateDate, UpdateUser)
VALUES ('<Mitarbeiterkürzel>' || 'TopCount_UseMax', '/de/cursor/jevi/client/swingclient/gui/search/ExtendedSearch$!!$TopCount_UseMax', 'false', 'USER', (SELECT pk FROM employee WHERE shortcut ='<Mitarbeiterkürzel>'), 1, SYSDATE, 'TECH_USER', SYSDATE, 'TECH_USER');
Schritt 2
Benutzerspezifische Optimierung zur Selektion per IN-Klausel
DELETE FROM Propertymapper WHERE pk = '<Mitarbeiterkürzel>' || 'Use_Select_For_In';
INSERT INTO PropertyMapper (Pk, id, propertyValue, propertyType, principal, Active, CreateDate, CreateUser, UpdateDate, UpdateUser)
VALUES ('<Mitarbeiterkürzel>' || 'Use_Select_For_In', 'USE_SELECT_FOR_IN', 'true', 'USER', (SELECT pk FROM employee WHERE shortcut ='<Mitarbeiterkürzel>'), 1, SYSDATE, 'TECH_USER', SYSDATE, 'TECH_USER');
Berechtigungen
Im Zuge einer Serienbriefaktion werden neben dem Dokument auch Aktivitäten erzeugt. Alle erzeugten Datensätze erhalten die Berechtigung des ausführenden Anwenders. Damit alle Anwender Zugriff auf die Aktivitäten bzw. das Dokument erhalten, ist es notwendig, dem ausführenden Anwender die Rechtevorlage DefaultTemplate - oder eine andere Vorlage, welche alle notwendigen Berechtigungen für diesen Serienbrief sammelt - zuzuordnen.
Es ist zu prüfen, ob ggf. für die Serienbriefselektion ein neuer virtueller Mitarbeiter angelegt wird. Dieser könnte als Delegiert von und Delegiert an in den generierten Aktivitäten genutzt werden.
Hintergrund
In der Maske Mitarbeiter werden alle Aktivitäten des Mitarbeiters angezeigt. In Folge dessen wird das Laden des Mitarbeiterdatensatzes recht lange dauern, wenn beispielsweise Änderungen am Mitarbeitersatz vorgenommen werden müssen. Diesen Nachteil kann man durch Verwendung eines eigenen Mitarbeiters für Serienbriefe umgehen.
Was ist bei einer Serienbriefaktion zu beachten?
Während der Serienbriefaktion sollte sich kein weiterer Anwender im System aufhalten. Die Performance in der Anwendung ist deutlich zurückgegangen. Die Verarbeitung großer Serienbriefaktionen sollte daher am Ende eines Arbeitstages erfolgen.
Es ist zu prüfen, ob der JBoss-Applikationsserver genügend Speicher konfiguriert hat, ansonsten muss dies erfolgen. Es ist dann ein Neustart des Applikationsservers erforderlich, damit die Änderungen wirksam werden (siehe Kapitel Arbeitsspeicher).
Vor der Serienbriefaktion sollte der Client neu gestartet werden! Vorzugsweise ist die Anmeldung mit dem neuen 'virtuellen' Mitarbeiter für Serienbriefe zu empfehlen.
Innerhalb einer Serienbriefaktion kann es notwendig sein, mehrere Suchen auszuführen, z. B: die Suche nach den Standard Geschäftspartnern sowie die Suche nach den abweichenden Geschäftspartnern im Vertrag.
Um die PLZ-Sortierung über beide Selektionsmengen zu wahren, können beide Selektionsmengen gemischt und anschließend sortiert werden, bevor die eigentliche Generierung des Serienbriefs erfolgt.
Ablaufbeschreibung zur Generierung eines Serienbriefs
Menüpunkt Marketing / Serienbrief wählen
Assistentenseite "Vorlagenauswahl"
Gewünschte Vorlage auswählenAssistentenseite "Selektion der Empfänger"
Zur Selektion von Empfängern stehen zwei Möglichkeiten zur Verfügung:
1. Klassische Variante: Suche nach Adressaten über die Suchmaske
2. Laden von gespeicherten Adressaten. Der Anwender kann auf gespeicherte Adressaten per Explorer zugreifen.
Beide Selektionsvarianten können beliebig oft wiederholt werden. Das Ergebnis jeder Selektion wird hierbei jedes Mal der Gesamtergebnismenge hinzugefügt.
Beim Hinzufügen der Daten wird zudem geprüft, ob die Strukturen beider Mengen zueinander passen. Ist dies nicht der Fall, erscheint eine entsprechende Hinweismeldung und das Hinzufügen wird abgebrochen.Dublettenprüfung
Durch das mehrfache Hinzufügen von Adressaten ist das Entstehen von Dubletten in der Gesamtergebnismenge sehr wahrscheinlich. Diese Dubletten können über den Schalter „Dublettenprüfung Adressaten“ bereinigt werden.Sichten und Sortieren
Hier kann die Gesamtergebnismenge angezeigt und manuell nachbearbeitet werden. Sätze im oberen Bereich werden entfernt, Sätze in unteren Bereich verbleiben in der Gesamtergebnismenge
Die aktuelle Anzahl der Datensätze wird im Schalter ausgegeben. Die Sortierung der Gesamtergebnismenge (z.B. nach PLZ) kann hier ebenfalls erfolgen.Speichern der Gesamtergebnismenge
Das aktuelle Gesamtergebnis kann als *.ser Datei per Explorer gespeichert werden.
Somit kann die gleiche Ergebnismenge zu einem späteren Zeitpunkt wieder geladen werden, um gezielt Folgeaktionen durchzuführen.Assistentenseite "Exportvariante"
Hinweis
Das Exportformat "Excel" kann nur ca. 65000 Datensätze aufnehmen. Ansonsten ist das Exportformat CSV immer zu bevorzugen, wenn mehr Datensätze exportiert werden sollen (schnellere Verarbeitung in Word).
Assistentenseite "Betreff für den Serienbrief"
Einen eindeutigen Betreff eingebenAssistentenseite "Auswahl der Anlagen"
Empfehlung: Um die Menge an erzeugten Daten nicht weiter 'aufzublähen', sollte im Serienbriefassistent keine weitere Anlage hinzugefügt werden.Assistentenseite "Aktivität erzeugen"
Protokoll- oder Erinnerungsaktivität auswählen, Typ der Aktivität(en) auswählen: Sammelaktivität oder Einzelaktivität
Empfehlung: Im Falle einer Einzelaktivität sollte die Menge an erzeugten Daten nicht weiter 'aufgebläht' werden. Daher sollte in einem solchen Fall im Serienbriefassistent nur eine Aktivität ausgewählt werden.Assistentenseite "Aktivität erzeugen"
Aktivität mit Vorgabewerten befüllen und Mitarbeiterzuordnung ggfs. ändern.Serienbriefstart
Mit Bestätigen des Schalters 'Fertig' wird die eigentliche Serienbriefaktion gestartet. Das Serienbriefdokument mit den Daten steht nach einigen Minuten zur Verfügung. Die Aktivitäten und Verknüpfungen werden auf dem Applikationsserver parallel erzeugt.Bearbeitung und paketweiser Druck des Serienbriefdokuments.
Es können nicht mehr als 32000 Seiten innerhalb von Word verarbeitet werden. Es ist daher zu empfehlen ,das Serienbriefdokument "stückweise" zu erzeugen und zu drucken.Der EVI-Client kann nun beendet werden. Die Generierung der Aktivitäten und Verknüpfungen läuft auf dem Applikationsserver weiter.
Hinweise und Tipps
Im Falle von großen Serienbriefaktionen sollte in jedem Fall eine Reindizierung auf der Datenbank durchgeführt werden. Diese Aktion sollte vorzugsweise in der Nacht automatisiert durchgeführt werden.
Dubletten im gemischten Selektionsergebnis. Es entsteht eine Dublette, wenn ein Geschäftspartner sowohl als abweichender als auch Standard Geschäftspartner im Vertrag selektiert wird.