1 / 21

bidirektionales VFX-XML-Interface für Daten-Import/Export

VFX-XML. bidirektionales VFX-XML-Interface für Daten-Import/Export. Visual Extend Anwendertreffen 2009 Rainer Becker, Frank Kropp deutschsprachige FoxPro User Group. Rainer Becker. dFPUG Homepage/Portal/Forum FoxProfessional FoxRockX VFP-Entwicklerkonferenz Lokalisierung VFP8/VFP9

gunnar
Download Presentation

bidirektionales VFX-XML-Interface für Daten-Import/Export

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VFX-XML bidirektionales VFX-XML-Interfacefür Daten-Import/Export Visual Extend Anwendertreffen 2009 Rainer Becker, Frank Kropp deutschsprachige FoxPro User Group

  2. Rainer Becker • dFPUG • Homepage/Portal/Forum • FoxProfessional • FoxRockX • VFP-Entwicklerkonferenz • Lokalisierung VFP8/VFP9 • Framework Visual Extend • MVP (Lifetime), MCP • Wizards & Builders GmbH

  3. Warum ein XML-Interface • Für Export von Daten müssen Ausgabeformate verwaltet und Fremdschlüssel umgesetzt werden • Für den Import von Daten gilt das gleiche zzgl. Validierung von Feldarten/längen und Lookup-Listen • Dies alles geht am besten mit dem Standard XML statt mit Excel (wg. wechselnder Formate in Versionen, Lokalisierung, Lizenz-Notwendigkeit) • Für Anwender muß außerdem eine Dokumentation generiert werden für die korrekte XML-Erstellung

  4. Warum XML statt XLS/TXT • XML ist versions- und (theoretisch) lizenzunabhängig • Excel hat verschiedene Versionen (2003, 2007) • Excel hat unvorhersehbare Änderungen beim nächsten Update • Für Excel wird eine Lizenz benötigt, für XML direkt nicht (IE) • XML erlaubt verschiedene Zeichensätze • Verwaltung von Zeichensätzen ist in CSV/TXT nur schwer möglich • Verschiedene Zeichensätze können in Excel ein Problem sein • XML ist ein mittlerweile üblicher Standard • XML ist ohnehin der de facto Standard für Datenaustausch • XML kann von Excel und Internet Explorer verarbeitet werden • Und kann außerdem direkt in Notepad gelesen werden

  5. Wie ruft man die Funktionen auf? • Die XML-Funktionen sind über eine Vielzahl von Klassen verstreut. • Zu jeder Klasse gibt es eine leere Appl-Klasse für die notwendigen anwendungsspezifischen Einstellungen • Für die Ansteuerung aus der Anwendung werden ein Export und ein Import-Button bereitgestellt • Für den Entwickler gibt es eine Maske für die Bearbeitung aller XML-Einstellungen • Speicherung erfolgt im USER-Feld des DBCs

  6. Aufruf auch im Batch-Betrieb • Da man Import und/oder Export auch gerne mal automatisieren möchte, ist ein Parameter für die generierte EXE vorgesehen. Eine Batch-Datei, die man aus dem Scheduler aufrufen könnte, sieht dann grob so aus: C: CD \<anwendungsverzeichnis> <VFX>.EXE <parameters> • Die Parameter werden mit Leerzeichen getrennt und lauten ungefähr (noch in Entwicklung) wie folgt: IMPORT | EXPORT <user code> <path2inifile>\xml.ini <path2xml>\<file>.xml • Ländereinstellungen werden vom Anwender (Erweiterung von VFXUSR) genommen oder aus den Daten entnommen.

  7. Format für XML-Import • Für jede Haupttabelle und für jede abhängige Tabelle muß eine gültige XML-Datei bereitgestellt werden. Das Format ist einfaches XML mit folgenden Grundlagen: • Jede XML Datei muß einen kleinen Header haben. Siehe Beispieldateien. Dieser enthält unter anderem eine Referenz auf die XSD-Datei für die Validierung. • Für jeden Datensatz muß ein XML-Tag zum Öffnen und eines zum Schließen vorhanden sein wie folgt: <xmlimport>(hier kommt der Datensatz)</xmlimport> • Für jedes Feld muß ebenfalls ein XML-Tag vorhanden sein mit dem entsprechenden Feldnamen wie folgt: <feldname>(hier kommt der feldwert)</feldname>. • Leere Felder können komplett weggelassen werden oder als <feldname /> geschrieben werden, wenn nur gelegentlich leer.

  8. Beispiel für eine XML-Datei • Wenn Sie zum Beispiel Adressen über XML importieren möchten, hat die XML-Datei den üblichen Header und dann beispielhaft nachfolgende Feldelemente für jede Anschrift: <firma>Firmenbezeichnung</firma> <strasse>Strasse</ad2> <ort<Ort</ort> <plz>Postleitzahl</plz> <tel>Telefonnummer (ohne Landesvorwahl)</tel> <land>Länderschlüssel (lookup)</land> <email>email addresse</email> <alien_key>Primärschlüssel aus Fremdsystem</alien_key> • Dies ist nur eine verkürzte Version. Sehr viel mehr Felder können abhängig von der Anwendung vorhanden sein…

  9. Verfügbare Feldtypen • Es stehen drei einfache Feldarten zur Verfügung: Date (Datum), String (Zeichenkette) und Boolean (Logisch): • Date: <deliverydate>2008-05-15</deliverydate> • String: <position>MANAGER</position> • Boolean: <active>false</active> • Meist wird die Feldart String (Zeichenkette) verwendet. • Im Falle von Zeichenketten gibt es noch eine weitere Geschmacksrichtung. Es kann sich um ein Lookup-Feld handeln, welches nur bestimmte Werte erlaubt. Der Feldwert muß also in einer entsprechenden Lookup-Liste vorhanden sein (z.B. VFXPLIST) • Die zulässigen Werte für Lookups (sofern SQL-basiert) können der generierten Datenbankdokumentation entnommen werden, siehe unten.

  10. Automatische Felder • Innerhalb der Anwendung stehen einige Felder nur für den internen Zugriff zur Verfügung. Hier ein paar Beispiele: • Schlüssel (Primärschlüssel eines Datensatzes, Fremdschlüssel eines Datensatzes) • Zeitstempel (Datum und Uhrzeit für Satzeneuanlage, Änderung, Löschung und Synchronisation) • Protokollinformatoinen (Anwender der letzten Änderung) • Statusinformationen (Feld für Löschflag) • Diese Felder können nicht über den XML-Import aktualisert werden, auch wenn sie sehr wohl exportiert werden können, und werden ignoriert. Stattdessen werden die Felder von der Anwendung mit Werten gefüllt (Code notwendig).

  11. XSD-Datei für Validierung • Für jede XML Importdatei gibt es eine dazugehörige XSD-Datei • Eine XSD Datei enthält Feldbeschreibungen sowie Feldnamen, Feldtypen und maximale Feldlängen. Letztere werden im Falle von landesabhängigen Zeichensätzen in der Länge verdoppelt. • Weitere Regeln können über die Definitionsmaske in die XSD-Datei vom Entwickler eingefügt werden. • Es ist immer die jeweils neueste XSD-Datei zu verwenden. • Mit Hilfe der XSD-Datei kann der Anwender eine einfache Prüfung der erstellten XML-Datei für den Import vornehmen, ob Feldnamen, Feldtypen, Feldlängen und Lookupwerte korrekt sind und überhaupt eine Verarbeitung möglich wäre.

  12. Beispiel für eine XSD-Datei • Pro Feld in einer Tabelle enthält die XSD-Datei einen Eintrag nachfolgender Art mit Definition von Feldname, Länge, Typ: <xsd:element name=“companyname“> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value=“50"></xsd:maxLength> </xsd:restriction> </xsd:simpleType> </xsd:element> • Man muß die XSD-Datei als Anwender weder lesen noch verstehen. Man muß sie nur für eine erste Validierung der selbst erstellten XML-Import-Datei verwenden, um die offensichtlichsten Probleme (z.B. Tippfehler) zu vermeiden.

  13. Internationale Zeichensätze • In XML werden Zeichenketten im UTF8 Format gespeichert, so daß internationale Zeichensätze wie Kyrillisch (Russisch), Hebräisch, Griechisch und so weiter und der XML-Datei korrekt dargestellt werden können. • Dabei besteht allerdings ein Problem mit internationalen Zeichensätzen. Sie können bis zu doppelt so lang sein wie das entsprechende Feld in der Datenbank. Deshalb werden für landesabhängige Zeichenfelder die Längen verdoppelt. • Natürlich darf letztendlich die Anzahl der zulässigen Zeichen nicht überschritten werden, selbst wenn die XSD-Datei keine Fehlermeldung erzeugt. Der Anwender muß selbst sicherstellen, daß die Feldlängen nicht überschritten werden, da die Daten sonst natürlich abgeschnitten werden..

  14. Primärschlüssel Fremdsystem • Wie zuvor erwähnt, werden für Haupttabellen Schlüssel eines anderen Systems verwaltet, da ein externes System kaum die gleichen Primärschlüssel wie die VFX-Anwendung verwenden wird. • Der Primärschlüssel eines Fremdsystems wird stattdessen in einer zusätzlichen Spalte der Tabellen abgelegt. In den Beispielen heißt dieses Feld „alien_key“ (bzw. alien_ <weitere tabelle>_key) und ist ein String mit 30 Zeichen Länge. • Dieser alien_key wird permanent gespeichert und dient als Rückreferenz auf die externen Originaldaten. • Die Primärschlüssel im Fremdsystem dürfen natürlich keinesfalls geändert werden, da die Relation sonst nicht mehr verfügbar ist

  15. Arten von Transaktionen • Bei der Verarbeitung von XML-Importdateien gibt es drei Arten von Aktionen / Transaktionen: • Insert: Der alien_key kann in der Anwendung nicht gefunden werden. Ein neuer Datensatz wird angelegt. • Update: Der alien_key kann gefunden werden. Der gefundene Datensatz wird aktualisiert. • Delete: Der alien_key kann gefunden werden und die Spalte „Del“ enthält „true“ als Wert (in XML: <Del>true</Del>). Der Datensatz wird gelöscht. • Mit letzterem Fall gibt es gelegentlich Probleme: Das Datenbanksystem des Kunden entfernt gelöschte Sätze möglicher- weise direkt und der Anwender kann gar eine zu löschenden Datensätze mehr exportieren. In solchen Fällen muß ein anderes Verfahren verwendet werden. Stattdessen wird eine vollständige Liste alle gültigen Fremdschüssel geliefert und alle darüberhinaus vorhadenen Datensätze mit Fremdschlüsseln werden gelöscht…

  16. Aktualisierung bestehender Daten • Es gibt ein weiteres Problem, sofern bereits Daten aus einem externen System auf welche Art und immer in den Tabellen der VFX-Anwendung vorhanden sind. Diese wurden aber vermutlich nicht mit dem externen Schlüssel gespeichert. • Deshalb folgender Warnhinweis an die Anwender: Wenn einfach alle vorhadenen Datensätze per XML importiert werden, werden dadurch mit Sicherheit eine Vielzahl von Doubletten angelegt, die dann bereinigt werden müssen! • Wahlweise warten Sie auf eine geplante Funktion zum Import von Listen mit Primär- und externen Schlüsseln, wobei diese Listen aber auch erst vom Anwender vorbereitet werden müßten. Oder die Anwendung ermöglicht das Nachtragen von externen Schlüsseln zu vorhandenen Datensätzen…

  17. Bereitgestellte Dokumentation • Die nachfolgende Dokumentation steht zur Verfügung: • Datenbank Dokumentation (als .XLS) mit Beschreibung aller • Felder für alle Tabellen • Werte für alle Lookuplisten (sofern SQL-basierend) • Die folgenden Dateien stehen pro importierbarer Tabelle zur Verfügung bzw. können vom Anwender erstellt werden: • XML-Beispieldatei mit echten Daten • XSD-Datei • HTML Dokumentation des XML-Formats • Um einen ersten Eindruck zu gewinnen, sollte der Anwender eine bestehende Datei als XML exportieren und anschauen.

  18. Datenbankdokumentation • Die generierte Datenbankdokumentation ist ein Spreadsheet mit vielen Seiten. Hier eine Übersicht über die Seitenarten: • Tablelist: Übersicht über alle Tabellen. Hyperlink zur Felderliste. • Pickuplist: Übersicht über alle Lookups. Hyperlink zur Werteliste. • Viewlist/Indexlist: Übersicht Views/Indizes. Bitte ignorieren. • Table X...Z: Liste aller Felder zu Tabellen mit Name, Überschrift, Typ, Länge, Notwendigkeit, Kommentar, Vorgabewert, Format, Eingabemaske • View X..Z: Liste aller Felder zu View. Bitte ignorieren. • XML Properties: Liste alle XML-Einstellungen. • Lookup lists: Liste aller Werte zu allen Lookuplisten. • Die Datenbankdokumentation kann aus der Anwendung genierert werden, damit sie immer aktuell ist.

  19. Dokumentation pro Tabelle • Beispiel XML-Datei: • Die erstellte Beispieldatei kann vom Anwender per Doppelklick geöffnet werden und der Internet Explorer wird für die Anzeige gestartet. Die Sicherheitswarnungen bezüglich ActiveX-Steuer-elementen können dabei getrost ignoriert werden, da sowieso keine aktiven Inhalte bereitgestellt werden… • Man kann die Datei natürlich auch über das Rechtsklick-Menü und „Öffnen mit“ in Excel öffnen. Excel bietet dann 3 Optionen zum Öffnen an – bitte die erste verwenden „als XML-Tabelle öffnen“! • XSD-Datei: • Kann man in Notepad anschauen. Zeigt Feldtypen/längen usw.. • HTML Dokumentation: • Öffnet im Internet Explorer. Zeigt Feldtypen/längen als auch Kommentare/Erläuterungen in einem separaten kleinen Fenster.

  20. Vorbereitung auf Kundenseite • Was sollen die Kunden zuerst tun: • Prüfen, ob deren Anwendungen XML pro Tabelle exportieren können. • Prüfen, ob dabei Feldnamen festgelegt werden können. • Prüfen, ob für alle Pflichtfelder auch Werte vorliegen. • Prüfen, ob für alle Lookup-Felder die richtigen Werte vorliegen. • Die Ergebnisse müssen die Kunden erstmal zurückmelden. • Und dann muß man diskutieren, wie man die zu erwartende Vielzahl von Bereitstellungsproblemen denn lösen könnte! • Von daher ist eine XML-Schnittstelle zwar technisch sehr schön, aber in der Praxis erfordert es auf Kundenseite noch einige Arbeit, bis das auch tatsächlich funktionsfähig ist!

  21. Vielen Dank! Besuchen Sie unsere Webseiten: http://www.visualextend.de (Homepage) http://portal.dfpug.de (Reiter/Verzeichnis VFX) http://forum.dfpug.de (Sektion VFX) http://newsletter.dfpug.de (Rubrik VFX) http://devcon.dfpug.de (Vorträge VFX) http://www.dfpug.de (Reiter VFX)

More Related