Intern wird von SOG Forms immer eine XML Datenquelle verarbeitet. Das XML Datenformat definiert nicht nur die Syntax in der eine Datenquelle zu lesen ist, sie enthält neben den eigentlichen Nutzdaten auch weitere Daten, die für das Verständnis der Datenquelle hilfreich sind. Diese weiteren Daten, im folgenden Metadaten genannt, werden in die XML Datenquelle eingefügt, um diese zum einen für den Menschen verständlicher zu machen, bzw. um Schnittstellen zwischen verschiedenen Anwendungen zu vereinheitlichen. Die Metadaten enthalten z.B. den Namen der Datenfelder, oder deren Datentyp.
Neben den Daten und Metadaten veranschaulicht eine XML Datenquelle aber auch die Beziehung der Daten zueinander. XML Datenquellen sind dabei hierarchisch organisiert .
Beispiel XML Datenstruktur Rechnung.
Um Formulare designen zu können, sollten Sie nach Möglichkeit einen XML Testdatenstrom benutzen, in dem alle Datenfelder gefüllt sind und in dem mit möglichst großen Datenwerten (z.B. Namen) gearbeitet wurde. Dadurch können Sie beim Design jeweils die Felder so belegen, dass alle zu erwartenden Werte hineinpassen. Eine solche Datenquelle kann und sollte für spätere Änderungen im Design aufbewahrt werden. Dies versetzt auch unterschiedliche Formularentwickler in die Lage mit den gleichen Testdaten zu arbeiten.
SOGForms kann Daten aus folgenden Datenquellen direkt verarbeiten
XML Datendateien, die einem hierarchischen Datenmodel folgen.
Es können keine XML Datendateien direkt verarbeitet werden, die vor der Verarbeitung noch miteinander verknüpft werden müssen, oder in denen keine eindeutige Positionsdatenstruktur vorhanden ist. Sind derartige Quelldaten zu verarbeiten, müssen diese evtl. über eine XSLT Umformung transformiert werden.
SOGForms ist dabei in der Lage das Ergebnis einer oder mehrerer SQL SELECT Anweisung in XML zu wandeln, und direkt weiter zu verarbeiten. Auch SQL Ausgaben können mit Hilfe von XSLT transformiert werden. Innerhalb der SQL-Anweisung kann die SOG Generic SQL Syntax verwendet werden.
SQL-Anweisungen können auch parametrisiert aufgerufen werden. Siehe Verwendung von parametrisierten SQL-Anweisungen.
Anwendungen die direkt XML Datenstrukturen liefern.
Das Projekt SOG ERP (VACOS) enthält .NET Klassenbibliotheken, die eine Wandlung von SOG ERP (VACOS) Datenstrukturen in XML ermöglichen ohne zwischendurch eine XML Datei auf einen Datenträger schreiben zu müssen. Dabei kann SOG ERP (VACOS) die umfangreichen Referenzen und Strukturen berücksichtigen, und einen überschaubaren XML Datenstrom liefern der als Basis für die Formulargestaltung dienen kann. Der Beispieldatenstrom ist auf diesem Wege entstanden.
Anwendungen die XML Daten liefern.
Neben der Möglichkeit über .NET Klassenbibliotheken XML Daten zu erstellen, kann SOG ERP (VACOS) aber auch im Zuge seiner Crystal Reports Datenschnittstelle XML Tabellen erzeugen. Auch diese XML Tabellen können von SOG Forms verarbeitet werden. Manche müssen allerdings vor der Verarbeitung mit Hilfe von XSLT transformiert, oder über eine einfache Umformungssteuerdatei umgeformt werden (LGEN).
Beliebige XML Datenstrukturen, die über XSLT transformiert werden können.
XSLT ist eine kleine XML basierende Transformationssprache, mit der XML Datenströme verändert werden können. SOG Forms transformiert ggf. XML Daten automatisch.
Für jede zu verarbeitende Datenquelle wird geprüft, ob ein XSLT Script gleichen Namens im Verzeichnis "SOGForms" existiert. Wird ein Script gefunden, werden die Daten automatisch vor der Verarbeitung transformiert. Der Benutzer hat somit normalerweise keinen Kontakt mit den untransformierten XML Daten.
Erstellung einer XML Datendatei
Erstellung über SOG ERP (VACOS) - ( Beispiel )
Starten Sie das Programm "p800 - Kurzauskunft". Begeben Sie sich über "Vorgang", "Rechnung" zur Rechnungsauswahl. Öffnen Sie eine Rechnung durch Doppelklick oder Softkey "anzeigen". Betätigen Sie nun den Button "SOGForms".
SOG ERP (VACOS) startet nun "SOGForms", und übergibt als Parameter die angewählte Rechnungsnummer. SOG Forms stellt selbst eine Verbindung zur Datenbank her, und bildet über die SOG ERP (VACOS) .NET Klassenbibliothek eine Rechnungsdatenstruktur. Nun werden die möglichen Formulare angezeigt, die mit dieser Datenstruktur vereinbar sind.
Wählen Sie nun die Schaltfläche "Datenstrom anzeigen". Sie gelangen in den SOGWT XML Viewer, der das gesamte XML Dokument anzeigt. Wählen Sie hier die Schaltfläche "Speichern", um eine XML Datei auf einem Datenträger zu speichern. SOG Forms schlägt als Speicherort das Verzeichnis "SOGForms" innerhalb Ihres aktuellen Projektes vor. Als Dateiname wird der Name des enthaltenen Datenstroms hier: "Rechnung" vorgeschlagen.
Verwendung einer SOG Forms SQL-Steuerdatei
In dem Verzeichnis "SOGForms" unterhalb Ihres Projektes können Dateien mit der Endung ".sogformsql" erstellt worden sein. Diese SQL-Dateien sollten den Syntaxregeln für SQL-Dateien folgen, die für das Programm "hhsqloledb" festgelegt wurden. Der erste Teil des Datennamens bis zum ersten "." definiert dabei den Namen des enthaltenen XML Datenstroms.
Beispiel: "Rechnung.test1.sogformsql" liefert den Datenstrom "Rechnung".
Durch einen Doppelklick auf eine solche Datei wird SOG Forms gestartet. Sollte die SQL-Anweisung Parameter erfordern, werden diese abgefragt. Anschließend wird der SQL ausgeführt, das Ergebnis in XML gewandelt, und die Formularauswahlmaske von SOG Forms angezeigt.
Wählen Sie nun die Schaltfläche "Datenstrom anzeigen". Sie gelangen in den SOGWT XML Viewer, der das gesamte XML Dokument anzeigt. Wählen Sie hier die Schaltfläche "Speichern", um eine XML Datei auf einem Datenträger zu speichern. SOG Forms schlägt als Speicherort das Verzeichnis "SOGForms" innerhalb Ihres aktuellen Projektes vor.
Verwendung der SOG ERP (VACOS) .NET Klassenbiliothek
In dem Verzeichnis "config.basis" unterhalb Ihres Projekte finden Sie Dateien mit der Endung ".sogformref". Diese Dateien definieren den Aufruf und die Parameter für Funktionen der SOG ERP (VACOS) .NET Klassenbibliothek.
Öffnen Sie eine solche Datei durch Doppelklick, und geben Sie die erforderlichen Parameter ein. Sie landen nun wieder in der Formularauswahlmaske von SOG Forms und können von hier über "Datenstrom anzeigen" und "Speichern" die Daten in eine XML Datei speichern.
Verwendung der Crystal Reports Datenschnittstelle
Starten Sie ein SOG ERP (VACOS) Programm, dass für Crystal Reports vorbereitet wurde. Geben Sie als Ausgabenamen "|M ||Name.sogformxml" oder "|R |sf:FormularName" an. Im ersten Fall finden Sie in Ihrem persönlichen Druckordner eine entsprechende Datei, im zweiten Fall wird SOG Forms interaktiv gestartet. Durch Angabe von "|R |sf:Formular|Drucker" erfolgt der Ausdruck eines Formulars ohne weitere Benutzerinteraktion.
Nutzung einer XSLT Transformation
Jede XML Datenquelle enthält eine XML Rootnode. Dies ist die erste XML Node innerhalb eines XML Dokumentes. In der Beispieldatenquelle ist dies die Node "Rechnung".
Der Name dieser XML Rootnode bestimmt auch den Namen des XML Datenstroms.
Immer wenn SOG Forms einen Datenstrom öffnet, wird dieser Datenstromname ermittelt, und dem Benutzer ggf. angezeigt.
Sie haben die Möglichkeit Datenströme automatisch umzuformen, indem Sie ein XSLT Transformationsscript erstellen, und dieses in dem Verzeichnis SOG Forms unterhalb Ihres Projekte ablegen. Der Dateiname muss den Namen des internen Datenstroms, sowie die Endung ".xslt" haben.
Findet SOG Forms eine so benannte XSLT Datei, wird ein entsprechender Datenstrom nach dem Öffnen automatisch transformiert.
Beispiele könne Sie den ausgelieferten XSLT Scripten entnehmen. Ein Beschreibung der XSLT Sprache finden Sie in einschlägiger XML Literatur, oder unter http://www.w3.org/TR/xslt. Für die Transformation wird von SOG Forms der in MSXML enthaltene MSXSLT Prozessor verwendet.
Beachten Sie bei der Erstellung solcher XSLT Scripte, dass Sie während der Transformation den Datenstromnamen (=Name der XML Rootnode) verändern sollten, um jedem Datenstrom einen eindeutigen Namen zu geben.
Stammen die XML-Daten aus einer LGEN-Verarbeitung, muss für die SOG Forms-Verarbeitung eine einfache Umfromungsdatei unter dem Pfadnamen "${PROJ}\SOGForms\Translate\Datenstromname.txt" erstellt werden.
Aufbau der Datei:
head CopyName
detail CopyName
Mit Hilfe von "head" Zeilen wird jeweils ein Copy benannt, dass in dem XML-Datenstrom im Kopfbereich abgelegt werden soll. Copies die nicht unter "head" erwähnt wurden, werden in den Detailbereich generiert. Für Copies, die sowohl im Kopf als auch im Detailbereich erscheinen sollen, steht die "detail" Anweisung zur Verfügung.
Beispiel:
head Inhalt
head p130pr_01_par
head p130pr_01_p130sp
detail p130pr_01_p130sp
Alle nicht erwähnten Copies erscheinen im Detailbereich.
readall
Die Angabe von "readall" sorgt dafür, dass Grundsätzlich die vollständige XML-Datenquelle am Stück eingelesen wird.
Dies kann verwendet werden, wenn die Copies nicht in zeitlichem Zusammenhang entstehen, und somit über den schrittweisen Lesevorgang nicht zueinander sortiert werden können.
reordertotop <copy>
Die Angabe von "reordertotop <copy>" sorgt dafür, dass die XML-Eingabe in einer ersten Phase zuerst vorsortiert wird, und alle per "reordertotop" angegebenen Copies in den XML-Strom nach oben gezogen werden. Der Vorgang ist sehr aufwendig, sorgt aber dafür, dass z.B. spät entstehende Fuss-Copies während der gesamten Bearbeitung zur Verfügung stehen.
Verwendung von parametrisierten SQL-Anweisungen
SQL-Anweisungen, die von SOG Forms verarbeitet werden sollen, haben normalerweise die Dateiendung ".sogformsql".
In solchen SQL-Dateien können Sie Parameter definieren, die zur Laufzeit von SOG Forms vom Benutzer abgefragt und eingesetzt werden. Hier ein Beispiel:
#P:sa:Satzart (1 oder 2):1
#P:vk:Von Konto:#1
#P:bk:Bis Konto:#99999999
select *
from f010
where hhsubstr(f010.key_1,3,1) = ${sa}
and hhsubstr(f010.key_1,4,8) >= ${vk}
and hhsubstr(f010.key_1,4,8) <= ${bk}
Eine Zeilen, die mit "#P" beginnt, leitet die Definition eines Parameters ein. Durch Doppelpunkte getrennt können Sie 3 Felder definieren, die folgende Funktion haben:
Definieren Sie hier den Namen des Parameters. In der SQL-Anweisung verwenden Sie die Syntax ${NAME} um auf diesen Parameter Bezug zu nehmen.
Legen Sie hier den Führungstext der Benutzereingabe fest.
Hier können Sie einen Wert angeben, der dem Benutzer als Vorschlagswerts vorgegeben wird. Ist dieses Feld leer, oder beginnt der Vorschlagswert mit einem '#' Zeichen, wird jeweils die letzte vom Benutzer getätigte Eingabe vorgeschlagen.
Verwendung von variablen Vorschlagswerten
Innerhalb der Vorschlagswerte können auch Umgebungsvariablen verwendet werden.
Dadurch ist es z.B. auch möglich, das aktuelle Tagesdatum als Vorschlagswert einzublenden.
Muss innerhalb der Definition einer Vorschlagsvariablen das ":" verwendet werden, so muss der gesamte Text in Klammern gesetzt werden.
Beispiel:
#P:dat:Datum:(${fn:dat:now:::yyyymmdd})
schlägt für den Parameter "dat" das aktuelle Tagesdatum im Format "4 stelliges Jahr, 2 stelliger Monat, 2 stelliger Tag" vor.
Weitere Möglichkeiten dieser Definition entnehmen Sie bitte der Beschreibung Environment-Funktionen unter Automatische Ersetzungen bei der Jobausführung.