next up previous contents index
Next: Modulprogrammierung Up: Anlegen eines neuen Workflows Previous: workflow_schleifenstart-Elemente (i.d.R. als Kinder

Der genaue Ablauf der Konvertierung läuft wie folgt:

1.
Das XML-Struktur des XML-Eingabe-File wird geparst und ein Baum aus Elementen und Attributen im Speicher aufgebaut, wobei im Normalfall einem XML-Element ein Element im berechneten Baum entspricht. Die Attribute für ein solches Element werden dabei aus den XML-Attributen des ursprünglichen XML-Elements gewonnen. Konkret bedeutet dies:
(a)
XML-Attribute, derren Namen die Struktur ``alias:<aliasname>'' haben, werden nicht als Attribute im entstehenden Element, sondern als Alias-Definitionen für das im XML-Attributwert genannte Attribut diese Elements aufgefasst.
(b)
XML-Attribute, derren Namen die Struktur ``aliased:<attributname>'' haben, werden auch nicht unmittelbar mit diesem Attributamen in das Baum-Element übernommen, sonder mit dem Attributnamen ``<attributname>'', wobei gespeichert wird, dass im Wert dieses Attributs Aliase für Attribute anderer Elemente vorkommen können, die später aufgelöst werden.
(c)
Alle sonstigen XML-Attribute werden einfach als Attribute des Baum-Elementes übernommen. Konflikte zwischen Baum-Attributen, die direkt mit ihrem Namen ``<attributname>'' als XML-Attribute vorkommen und als ``aliased:<attributname>'', sollten vermieden werden.
(d)
Die XML-Element-Hierarchie wird im wesentlichen übernommen. Fast alle XML-Elemente werden zu Baum-Elementen. Es gibt nur eine Ausnahme:
Um dem Benutzer das Editieren (mit nicht-XML-fähigen Editoren) von Attributwerten, die Sonderzeichen wie v.a. ``<'' und ``>'' enthalten (manche Module z.B. können SQL-Queries als Parameter haben und < und > dienen dort dem Verglich) zu erleichtern besteht aber die Möglichkeit einen Wert, der später im eingelesenen Element/Attribut-Baum ein Attribut eines Elementes darstellen soll, nicht als XML-Attribut des entsprechenden XML-Elementes, sondern als ein spezielles Kind-Element dieses XML-Elementes darzustellen. Der Element-Inhalt eines solchen speziellen XML-Elementes sollte einfach der gewünschte spätere Attributwert (als Text, d.h. kann v.a. mit ``<![CDATA[`` und ``]]>'' umklammert sein, um beliebigen Text für das Attribut darin zu ermöglichen) sein um keine weiteren XML-Elemente enthalten. Der spezielle XML-Element-Name ist ``A'' und mit dem XML-Attribut ``name'' wird der Name des gewünschten Attributs angegeben:
z.B.: '<schritt attributname1=''wert1''> <A name=''attributname2''> wert2</A> </schritt>'
wäre gleichwertig zu '<schritt attributname1=''wert1'' attributname2=''wert2''></schritt>'
Allerdings müssen bei zweiten Lösung in wert2 sämtliche Zeichen, die nicht in XML-Attributwertenerlaubt sind (v.a. ``<'',''>'') als XML-Charakterreferenzen geschrieben werden. Bei der ersten Lösung ist statt dessen in wert2 eine CDATA-Umklammerung des Textes, der die nicht erlaubten Zeichen enthält, möglich.
Dem Benutzer bleibt überlassen, ob er diese spezielle Möglichkeit der Angabe von Baum-Attributen benutzt.
2.
Ist der Element/Attribut-Baum aus der XML-Eingabe aufgebaut worden, werden bei Elementen fehlende Attribute, die aus der Struktur ersichtlich sind, wie oben beschrieben ergänzt.
3.
Der um fehlende Attribute ergänzte Element/Attribut-Baum wird in SQL-INSERT-Statements umgewandelt. Dabei wird i.a. ein Element zu einem SQL-INSERT in eine DB-Relation und seine Attributwerte zu den Tupel-Attributwerten der Relation. (siehe Tabellen oben).
Die oben beschriebenen Regeln für die automatische Ergänzung von Attributen eines Elements, z.b. hierarchischer Strukturinformation oder Nummerierungen, sind in einer perl-Library, dem Skript ``xml2sqlinsert-definitions-workflow.pl" im Ordner ``Skripte'' in der Variablen ``@node_defaultvalues'' definiert.

In dieser Library sind ebenso die Regeln für die Übersetzung der XML-Elemente in DB-Relationen bzw. XML-Attribute in DB-Attribute'' in der Variablen ``@node2table'' zu finden.

Das Konverter-Skript ``wfcreate.pl'' übernimmt diesen ganzen Konvertierungsvorgang. Es liegt im Unterverzeichnis ``Skripte''. Zur Lauffähigkeit des Skriptes muss das Perl-Paket ``expat'' (Version >= 1.95-1) zum Parsen von XML-Daten installiert sein. ``wfcreate.pl `` wird mit der XML-Eingabe-Datei als Parameter aufgerufen und gibt auf die Standardausgabe die SQL-Anweisungen zum Abspeichern des neuen Workflows in der Datenbank aus. Diese Anweisungen können direkt verwendet werden, um den neuen Workflow anzulegen. Ein Beispiel für eine Workflow-Konfiguration befindet sich in der Datei ``SQL/workflow_tgi.xml''.


next up previous contents index
Next: Modulprogrammierung Up: Anlegen eines neuen Workflows Previous: workflow_schleifenstart-Elemente (i.d.R. als Kinder
Copyright Munich Network Management Team