Verwenden von Write-Triggern
Write-Trigger dienen dazu der Mapping-Runtime mitzuteilen, dass ein Datensatz komplett ist und geschrieben bzw. eine Datensatzeinheit geschlossen werden kann. Je nach Struktur des Moduls kann ein Modul keinen oder mehrere Write-Trigger anbieten.
Hier kommt eine Besonderheit des Aufgaben-Framework zum Tragen: Module können ihre eigenen Aufgaben registrieren. Modul-spezifische Aufgaben werden im Aufgaben-Dialog in einer eigenen Gruppe angeboten. Unterhalb dieser Gruppe befinden sich die bereitgestellten Aufgaben in Untergruppen über dem Namen des Moduls aufgeteilt.
In diesem Beispiel wird ein Quell-Element, das das Ende einer EDIFACT Segmentgruppe anzeigt, in den Quell-Bereich gezogen. Dieses Ende gibt an, dass die zu schreibenden Daten komplett sind und einen Datensatz innerhalb der DB bilden. Das Ziel ist das Schreiben des Datensatzes in die entsprechende Tabelle. Hier haben wir das Ende der Positionssegmentgruppe gewählt, die das Schreiben eines Positionsdatensatzes in die Datenbank veranlassen soll.
Um den Datensatz in die DB schreiben zu können, muss dass Zielmodul eine entsprechende Anweisung erhalten. Wie man hier sieht, ist es möglich auch ohne verbundenes Ziel-Feld Aufgaben einem Quell-Feld zuzuweisen.
Im Aufgaben-Dialog wird der Trigger write des DB-Moduls ausgewählt und in die Liste der Aufgaben für dieses Mapping aufgenommen. Die Auswahl der Aufgabe zeigt die zu konfigurierenden Parameter an.
Als table id wird die ID der Tabelle ausgewählt, auf die der Trigger angewendet werden soll. Diese Tabellen-ID werden automatisch während des Mappings vergeben. In der Sicht, die modulspezifische Informationen anzeigt (Header-Sicht), können die IDs eingesehen werden.
Das fertige Mapping mit einem Write-Trigger sieht wie folgt aus:
Implizierte Write-Trigger statt Aufgaben im DB-Modul
Neben Aufgaben-basierenden Write-Triggern gibt es auch implizite Write-Trigger. In diesem Fall wird keine Aufgabe verwendet, sondern das Ziel-Element repräsentiert das Datensatzende einer Tabelle des DB-Moduls. Wird diese Mapping aufgerufen, weiß das Ziel-Modul (im Beispiel: DB2), dass die gepufferten Daten für die Tabelle jetzt geschrieben werden können.
Write-Trigger in anderen Modulen (sogenannte Close-Trigger)
Auch andere Module können über eine Form von Write-Triggern verfügen. Da Write-Trigger das Abschließen eines vollständigen Datensatzes charakterisieren, gibt es sie auch bei Modulen wie EDIFACT und FLATFILE.
Hier dienen sie dem Abschließen einer definierten Informationseinheit, z.B. bei EDIFACT repräsentiert durch ein Segment oder eine Segmentgruppe. Ein entsprechender Write-Trigger oder Close-Trigger wird über ein Sonderelement bereitgestellt (bei EDIFACT und FLATFILE beispielsweise durch S-END, SG-END), die einem impliziten Write-Trigger des DB-Moduls entsprechen.
Ein solcher Close-Trigger bewirkt, dass diese Informationseinheit (z.B. Segmentgruppe oder Segment) nicht mehr ohne weiteres gefüllt werden kann. Auf diese Weise kann gesteuert werden, wann eine Informationseinheit vollständig ist und eine neue eröffnet werden soll.
Beispiel:
Aus Kopf- und Positionsdatensätzen von zwei Datenbanktabellen soll eine EDIFACT ORDERS erstellt werden. Innerhalb der ORDERS wird eine Position durch eine Gruppe von Segmenten repräsentiert.
Je nachdem wie die Daten vorliegen besteht die Gefahr, dass leere Datenelemente in der EDIFACT-Gruppe mit Daten einer neuen Position gefüllt werden, weil die Felder innerhalb der Datenbank der vorangegangenen Position leer waren (siehe Auto-Occurrence).
Um dem EDIFACT-Modul mitzuteilen, dass keine weiteren Daten mehr für diese Position zur Verfügung stehen, wird von der Quell-Seite das Spezialfeld ROW-END der Positionstabelle mit dem Spezialfeld SG-END der EDIFACT-Positionsgruppe verbunden. Auf diese Weise wird dem EDIFACT-Modul signalisiert, dass die Gruppe zu schließen ist. Für eingehende Daten einer neuen Position wird eine neue Gruppe geöffnet.
Verallgemeinertes Veranschaulichungs-Beispiel:
Das SEGMENT4 (Wiederholung 1) wurde geschlossen, bevor neue Daten das Erzeugen des neuen SEGMENT4 (Wiederholung 2) zur Folge hatten. Ein nicht schließen des SEGMENT4 (Wiederholung 1) hätte zur Folge, dass auf Grund des Mechanismus der Auto-Occurrence (Erläuterung des Mechanismuns von Auto-Occurrence siehe AUTO-OCCURRENCE) der Wert in das leere Feld DE3 von SEGMENT4 (Wiederholung 1) geschrieben worden wäre.