====== Debugging ====== Um die korrekte Funktionsweise einer Mappingtransformation zu testen gibt es verschiedene Möglichkeiten: - Im Mappingdesigner: - mit automatisch generierten Testdaten - Anhand einer bestehenden Datei((Diese muss einem bestehenden [[prozessdefinition:repositorien:entitaetstyp:start|Entitätstyp]] entsprechen.)) im Mappingeditor - Anhand einer bestehenden Datei mit mehreren Entitäten via Analysator ((So kann eine spezifische Entität innerhalb einer Datei ausgewählt werden.)) im Mappingeditor - Aus einem BackendObjekt ((So kann eine spezifische Entität innerhalb einer Datei ausgewählt werden.)) im Mappingeditor - Testen von Transformationsketten - Im Nachrichtenkorb: - Ausgehend von einer bestehenden und analysierten Nachricht((Diese muss Entitäten enthalten welche einem bestehenden [[prozessdefinition:repositorien:entitaetstyp:start|Entitätstyp]] entsprechen.)) ===== 1. Quellobjekt instanzieren im Mappingdesigner ===== Um im Mappingdesigner das Debuggen zu verwenden muss zuerst das Quellobjekt instanziert werden. Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich {{images:hammer.png?nolink}} **Debugging** Menu.\\ {{images:mapping_quelle_debugging_menu.png?nolink}} Dies bietet vier verschiedenen Möglichkeiten der Objektinstanzierung an. ==== a) Objektinstanz mit generierten Testdaten erzeugen ==== Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich {{images:hammer.png?nolink}} **Debugging** Menu den Eintrag {{:images:notebook_edit.png|}} **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. ==== b) Objektinstanz aus einer bestehenden Datei mit bekannter Entität erzeugen ==== Wählen Sie in der Mapping Definitionsansicht im linken oberen Bereich {{images:hammer.png?nolink}} **Debugging** Menu den Eintrag {{:images:folder_document.png|}} **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. ==== c) Objektinstanz aus einer bestehenden Datei mit mehreren Entitäten via Analysator erzeugen ==== 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 {{images:hammer.png?nolink}} **Debugging** Menu den Eintrag {{:images:folder_document.png|}} **Ü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. {{:images:sign_warning.png?nolink|}}**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. ==== d) Objektinstanz aus einem BackendObjekt erzeugen ==== 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 {{images:hammer.png?nolink}} **Debugging** Menu den Eintrag {{:images:data_scroll.png|}} **Aus BackendObject laden** aus. ==== e) Testen von Transformationsketten ==== 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 {{images:hammer.png?nolink}} **Debugging** Menu den Menüeintrag {{images:plug2.png?nolink}} **Mit anderem Mapping debuggen** aus.\\ {{images:mapping_ziel_debugging_menu.png?nolink}} ===== 2. Quellobjekt instanzieren aus einer Nachricht ===== 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\\ {{:images:nachrichten_kontextmenu.png|}} via {{images:plug2.png?nolink}} **Nachricht debuggen** ► {{images:plug2.png?nolink}} **Mapping debuggen** oder in der Detailansicht einer Nachricht über das Menu\\ {{:images:nachricht_debuggen.png|}} den Inhalt der Nachricht als Quellobjekt eines Mappings mit dem Menüeintrag {{images:plug2.png?nolink}} **Mapping debuggen** instanzieren. {{:images:sign_warning.png?nolink|}}**Hinweis:** Nur unter der Voraussetzung das die Nachricht bereits erfolgreich analysiert ist. Sonst ist {{images:plug2.png?nolink}} **Mapping debuggen** nicht aktiv. ===== 3. Mapping anwenden ===== Hat man das Quellobjekt instanziert, dann kann auf das Ziel übersetzt werden indem man aus dem {{images:hammer.png?nolink}} **Debugging** Menu den ersten Menueintrag {{images:gearwheel_play.png?nolink}} **Mapping anwenden**((Tastaturshortcut STRG+r ist hier auch möglich.)) wählt. Daraufhin werden im Quell-Objekt (linke Seite) die Eingangs- und im Ziel-Objekt (rechte Seite) die Ausgangswerte ausgegeben. ==== Statusleiste ==== Die Statusleiste((Im Mappingdesigner, unten)) gibt via Einfärbung ein erstes Feedback über Erfolg oder Misserfolg der Transformation. - Sie ist grün bei Erfolg:\\ {{images:mapping_success_statusleiste.png?nolink}} - Sie ist gelb bei Warnungen:\\ {{images:mapping_warnungen_statusleiste.png?nolink}} - Sie ist rot bei Fehler:\\ {{images:mapping_fehler_statusleiste.png?nolink}} Alle Übersetzungsschritte werden in einem Log-Fenster ausgegeben, dieses muss allerdings erst eingeblendet werden über die Schaltfläche {{images:windows.png?nolink}}, in der Statusleiste((Im Mappingdesigner, unten)).\\ ==== XPath Abfragen ==== Mit der [[transformation:mappings:details#xpath_abfrage|XPath Abfrage]] können einzelne Selektionen auf die Quellinstanz getestet werden. ===== 4. Mapping Fehler ===== Treten Fehler auf, so werden die Einträge der Objekte bei denen ein Fehler aufgetreten ist rot markiert im {{images:windows.png?nolink}} Logfenster mit Objektname und Fehlerbeschreibung ausgegeben. Anhand der Fehlerbeschreibung können dann, falsche Verknüpfungen lokalisiert und korrigiert werden. ==== Custom Error Message ==== Wird eine komplexere Fehlerausgabe benötigt so kann im Map-Editor für jede Mapping-Rule unter [[transformation:mappings:anlegen:extended_properties#element-eigenschaften|Element-Eigenschaften]] eine eigene **CustomErrorExpression** definiert werden. Auch hierbei muss es sich um eine [[transformation:mappings:details#xpath_abfrage|XPath-Expression]] handeln z.Bsp. :\\ concat('An Position: ', $position,' fehlt die EAN!')\\