Um die korrekte Funktionsweise einer Mappingtransformation zu testen gibt es verschiedene Möglichkeiten:
Um im Mappingdesigner das Debuggen zu verwenden muss zuerst das Quellobjekt instanziert werden. Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich Debugging Menu.
Dies bietet vier verschiedenen Möglichkeiten der Objektinstanzierung an.
Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich Debugging Menu den Eintrag Testdaten erzeugen aus. Dies generiert automatisch eine Objektinstanz im Quellobjekt mit Datenelementspezifischen Inhalten und jeweils drei Instanzen je ArrayList Item. Mit Testdaten kann schnell geprüft werden ob die Transformation die gewünschten Resultate erzeugt.
Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich Debugging Menu den Eintrag Aus Datei laden aus. Enthält die, im nun folgenden Dateiauswahldialog selektierte Datei eine Entität welche in das Quellobjekt passt wird dieses mit dem Inhalt der Datei instanziert.
Dieser Methode bietet sich dann an, wenn Quelldateien mehrere Entitäten des Quellobjekts enthalten. Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich Debugging Menu den Eintrag Über Analysator laden aus. Zunächst wird der gewünschte Analysator ausgewählt und mit OK bestätigt, mit dem nun folgenden Dateiauswahldialog die gewünschte Datei selektierte. Kann die Datei erfolgreich mit dem ausgewählten Analysator analysiert werden wird in einem folgenden Dialog eine Liste von Entitäten angeboten aus der man nun eine auswählt und mit OK bestätigt.
Hinweis: Sind in einer Nachricht mehrere Entitäten enthalten können diese mit Mehrfachselektion ausgewählt und als Quelle instanziert werden. Dadurch wird es möglich Gruppierungen bzw. Auswertungen und Konvertierungen über den Entitätskontext hinaus machen zu können.
Dieser Methode bietet sich dann an, wenn die Datenquelle über eine Datenbankintegration bedient werden kann. Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich Debugging Menu den Eintrag Aus BackendObject laden aus.
Wird ein Zielobjekt erfolgreich instanziert und besitzt das System ein Mapping mit diesem Zieltyp als Quelltyp, dann kann mit dem instanzierten Ziel direkt in eine neue Mappingdesignerinstanz gegangen werden. Wählen Sie in der Mapping Definitionsansicht im *rechten oberen Bereich aus dem Debugging Menu den Menüeintrag Mit anderem Mapping debuggen aus.
Man kann aus Nachrichten heraus direkt in das Debugging von Mappings gelangen. Wenn also eine Nachricht in der Liste der Nachrichten ausgewählt wird kann man via das Kontextmenu
via Nachricht debuggen ► Mapping debuggen oder in der Detailansicht einer Nachricht über das Menu
den Inhalt der Nachricht als Quellobjekt eines Mappings mit dem Menüeintrag Mapping debuggen instanzieren.
Hinweis: Nur unter der Voraussetzung das die Nachricht bereits erfolgreich analysiert ist. Sonst ist Mapping debuggen nicht aktiv.
Hat man das Quellobjekt instanziert, dann kann auf das Ziel übersetzt werden indem man aus dem Debugging Menu den ersten Menueintrag Mapping anwenden5) wählt. Daraufhin werden im Quell-Objekt (linke Seite) die Eingangs- und im Ziel-Objekt (rechte Seite) die Ausgangswerte ausgegeben.
Die Statusleiste6) gibt via Einfärbung ein erstes Feedback über Erfolg oder Misserfolg der Transformation.
Alle Übersetzungsschritte werden in einem Log-Fenster ausgegeben, dieses muss allerdings erst eingeblendet werden über die Schaltfläche , in der Statusleiste7).
Mit der XPath Abfrage können einzelne Selektionen auf die Quellinstanz getestet werden.
Treten Fehler auf, so werden die Einträge der Objekte bei denen ein Fehler aufgetreten ist rot markiert im Logfenster mit Objektname und Fehlerbeschreibung ausgegeben. Anhand der Fehlerbeschreibung können dann, falsche Verknüpfungen lokalisiert und korrigiert werden.
Wird eine komplexere Fehlerausgabe benötigt so kann im Map-Editor für jede Mapping-Rule unter Element-Eigenschaften eine eigene CustomErrorExpression definiert werden. Auch hierbei muss es sich um eine XPath-Expression handeln z.Bsp. :
concat('An Position: ', $position,' fehlt die EAN!')