Aktivieren Sie bitte JavaScript, um diese Seite anzeigen zu können.

Altova MapForce 2020 Professional Edition

» Keine übergeordneten Kapitel «

Debuggen von Mappings

Bildlauf Zur Startseite Zurück Nach oben Weiter Mehr

MapForce enthält für die eigene BUILT-IN-Transformationssprache einen Mapping Debugger. Mit dem Mapping Debugger können Sie Folgendes tun:

 

Anzeigen und Analysieren der vom Mapping erzeugte Werte auf jeder einzelnen Konnektor-Ebene

Markierung des Kontext (der Node-Gruppe) im Mapping, anhand desses ein bestimmter Wert erzeugt wird

Schrittweise Ausführung eines Mappings, um zu sehen, wie MapForce die einzelnen Werte in Echtzeit verarbeitet oder berechnet und Anzeige einer Vorschau auf die Mapping-Ausgabe während der Generierung der Ausgabe

Setzen von Meilensteinen (Breakpoints), an denen die Ausführung des Mappings angehalten und an denen der/die aktuell verarbeitete(n) Wert(e) angezeigt werden soll(en)

Anzeige des Verlaufs für von einem Konnektor verarbeitete Werte ab dem Beginn der Mapping-Ausführung bis zur aktuellen Ausführungsposition

 

Der Mapping Debugger steht zur Verfügung, wenn als Transformationssprache für das Mapping BUILT-IN ausgewählt wurde. Wenn Sie den Debugger für ein Mapping, das für eine andere Sprache erstellt wurde, starten, werden Sie aufgefordert, zu BUILT-IN zu wechseln. Sie können ein Mapping auch über den Menübefehl Ausgabe | Built-in-Ausführungsprozessor in BUILT-IN konvertieren. In beiden Fällen ist die Konvertierung in BUILT-IN erfolgreich, wenn das Mapping keine Komponenten enthält, die in der Sprache BUILT-IN nicht zur Verfügung stehen (wie z.B. XSLT-Funktionen).

 

Der MapForce Debugger unterscheidet sich insofern von einem herkömmlichen Debugger, als er Ihren Programmcode nicht Zeile für Zeile durchläuft (da Sie mit MapForce ja keinen Code schreiben). Stattdessen untersucht der Debugger die anhand der Mappings in Ihrem Design erzeugten Ergebnisse von MapForce-generiertem Code. Genauer gesagt, protokolliert der Debugger alle Werte, die über ihre Input- und Output-Konnektoren von und an Mapping-Komponenten übergeben werden. Die protokollierten Werte stehen anschließend direkt im Mapping oder über eigene Fenster zur Analyse zur Verfügung.

 

In den folgenden Abschnitten werden verschiedene Debugging-Methoden gezeigt.

 

 

Debuggen mit Breakpoints

Wenn Sie die Debugger-Ausführung an einer bestimmten Stelle im Mapping anhalten müssen, können Sie ähnlich wie in einer herkömmlichen Entwicklungsumgebung Breakpoints setzen. Der Unterschied ist, dass die Breakpoints nicht zu einer Codezeile, sondern zu einem Input- oder Output-Konnektor einer Mapping-Komponente hinzugefügt werden. Sie können auch Bedingungen zu Breakpoints hinzufügen (Dies kann sich z.B. als nützlich erweisen, wenn Sie die Ausführung nur dann anhalten möchten, wenn die definierte Bedingung zutrifft).

diagram_debugging_breakpoints

Sie können an den gewünschten Konnektoren Breakpoints definieren und das Mapping bis zum ersten Breakpoint ausführen, anschließend zum nächsten gehen usw. Auf diese Art können Sie den Mapping-Kontext und die mit den ausgewählten Konnektoren in Zusammenhang stehenden Werte analysieren. In diesem Szenario können Sie die Ausführung mit Hilfe der Debugger-Befehle Einsteigen, Aussteigen, Überspringen und Minimaler Schritt beschleunigen oder verlangsamen. Mit Hilfe dieser Befehle können Sie Mapping-Abschnitte überspringen oder umgekehrt, Abschnitte eines Mappings bei Bedarf genauer analysieren.

 

Schrittweises Debuggen

Sie können ein Mapping Schritt für Schritt debuggen und dabei den Mapping-Kontext und die mit den einzelnen Schritten in Zusammenhang stehenden Werte analysieren. Dieses Szenario ist dem zuvor beschriebenen insofern ähnlich, als Sie damit die Ausführung mit den Befehlen Einsteigen, Aussteigen, Überspringen und Minimaler Schritt beschleunigen oder verlangsamen können.

 

diagram_debugging_steps

 

Analysieren der Log-Werte

Sie können MapForce so konfigurieren, dass es das gesamte Log aller Werte, die von allen Konnektoren beim Debuggen eines Mappings verarbeitet wurden (das Verlaufsprotokoll der Ablaufverfolgung) aufbewahrt. Bei speicherintensiven Mappings ist es oft nicht sinnvoll, den gesamten Verlauf zu speichern, daher kann diese Option bei Bedarf auch deaktiviert werden. Wenn die Option aktiviert ist, können Sie das gesamte Protokoll der von jedem einzelnen Konnektor bis zur aktuellen Ausführungsposition verarbeiteten Werte analysieren. Außerdem können Sie den mit einem bestimmten Wert verknüpften Mapping-Kontext in MapForce wieder aufrufen, um zu verstehen, warum dieser Wert erzeugt wurde.

 

diagram_debugging_standard

 

Setzen des Kontexts auf einen mit der aktuellen Ausführungsposition in Zusammenhang stehenden Wert

Es ist auch möglich, während sich der Debugger an einer bestimmten Ausführungsposition im Mapping befindet, den Mapping-Kontext eines vergangenen Werts im Verhältnis zur aktuellen Ausführungsposition zu analysieren (dies ist, als würden Sie einen Schritt in die Vergangenheit machen):

 

diagram_debugging_step_back

 

Ein Kontext erklärt, warum ein Wert berechnet wird, d.h. er beschreibt, wie ein bestimmter Wert im Mapping generiert wurde. Normalerweise ist der Kontext die aktuelle Ausführungsposition, doch können Sie als Kontext auch einen Kontext in der nahen Vergangenheit des Mappings definieren. Wenn ein bestimmter Wert als Kontext definiert wird, markiert MapForce die damit in Zusammenhang stehenden Nodes im Mapping, zeigt neben den Mapping-Konnektoren Tipps und in anderen Debugger-Fenstern (Werte, Kontext und Breakpoints) zusätzliche Informationen dazu an.

 

Nach Untersuchung des jeweiligen Mapping-Kontext können Sie den Kontext anschließend wieder zurück auf die aktuelle Ausführungsposition setzen.

 

Einschränkungen

Wenn MapForce ein Mapping ausführt, optimiert das Programm Code eventuell intern (z.B. durch Zwischenspeichern von Daten im Cache oder durch Berechnung von Zwischenergebnissen an beliebig gewählten Stellen). Dadurch können bestimmte Konnektoren (und somit auch Breakpoints) möglicherweise beim Debuggen nicht erreicht werden. In diesem Fall wird eine entsprechende Meldung angezeigt. Beachten Sie, dass sich die MapForce Codeoptimierungen (und folglich auch das Verhalten, das der Debugger untersucht) von Version zu Version ändern kann, auch wenn die Mapping-Ausgabe für ein bestimmtes Mapping dieselbe ist.

Der Debugger kann die Ausgabegenerierung immer nur für eine Zielkomponente debuggen. Falls in einem Mapping mehrere Zielkomponenten vorhanden sind, müssen Sie auswählen, welche davon vom Debugger ausgeführt werden soll.

Zur Zeit wird das Debuggen von Datenbanktabellenaktionen von Datenbankkomponenten (wie z.B. "Alle einfügen", "Aktualisieren wenn", usw.) nicht unterstützt.

Für die folgenden Elemente können keine Breakpoints hinzugefügt werden: Konstanten, die Funktion core | position, Nachfahren-Datenelemente von "Alles kopieren"-Verbindungen, Parameter von inline gesetzten benutzerdefinierten Funktionen.

© 2019 Altova GmbH