Session D-CASE

Inside xCase

Markus Winhard


Einleitung

Diese Session zeigt wie man das Datenmodellierungs-Tool xCase erweitern kann. Wer schon einmal mit xCase oder einem Konkurrenzprodukt gearbeitet hat wird sicher einen größeren Nutzen daraus ziehen als jemand der xCase nur vom Hörensagen kennt. J 
Trotzdem möchte ich natürlich niemenden davon abhalten meine Session zu besuchen. Ich versuche mit dem Vortrag rechtzeitig fertig zu werden, so daß am Ende noch genügend Zeit ist ihre Fragen zu beantworten, falls Sie Probleme beim Umgang mit xCase haben.

Grenzen und wie man sie erweitert

xCase ist ein hervorragendes Tool zur Modellierung von Daten. In der Praxis trifft man bald auf Grenzen, die allerdings elegant umgangen werden können. 

Neue Feldeigenschaften hinzufügen

Ein erster Schritt ist die Erweiterung der xCase Metadaten um eigene Felder.
Achtung: Bei Änderungen am xCase Data Dictionary darf kein Modell geöffnet sein.


 

Ändern des Triggercodes den xCase erzeugt

Damit die neue Möglichkeit in xCase verfügbar wird, muß auch noch ein Eintrag im Data Dictionary Manager geändert werden.

Ein Wrapper für CreateDB.app

Die mit xCase gelieferte CreateDB.app muß oft um eigene Routinen ergänzt werden. Teilweise geschieht dies um Fehler auszubessern, wenn man nicht auf den nächsten Bugfix des Herstellers warten kann, teilweise um die selbst hinzugefügten Metadaten in den DBC zu übernehmen.
Es ist möglich vom Hersteller auf Anfrage den VFP-Quellcode der CreateDB.app zu bekommen. Allerdings habe ich das inzwischen aufgegeben, da der Code vom Hersteller mit jeder neuen Version geändert wird, in feinstem prozeduralen "Spaghetticode" programmiert, und schlecht dokumentiert ist. Deshalb habe ich mich entschlossen ein Wrapper-Programm um die CreateDB.app herum zu schreiben. Das ist sozusagen meine prozedurale Variante des Subclassing. J
Die Beschreibung steht wieder direkt im anschließend abgedruckten Code. Das erscheint mir übersichtlicher als eine lange Einleitung mit anschleißendem unkommentierten Code. In der Session werde ich auf die wichtigen Teile in diesem Abschnitt besonders eingehen.

Mehrere DBC in einem xCase-Modell pflegen

Bei großen Projekten wäre es oft sinnvoll das Datenmodell in mehrere DBCs aufteilen zu können, z.B. Stammdaten und Bewegungsdaten. Damit verliert man aber die für die automatische Erstellung des Referentiellen Integritäts Codes so wichtigen Beziehungen zwischen den Tabellen. D.h., man muß selbst dafür sorgen, daß z.B. ein Kunde nicht gelöscht wird, solange es noch Statistikdaten für ihn gibt.
xCase gibt uns zwar die Möglichkeit ein Modell in viele kleine übersichtliche Diagramme aufzuteilen, aber es unterstützt nicht das Erzeugen mehrerer DBCs aus einem Modell. Der Hauptgrund dafür ist, daß der DBC-Name nur einmal pro Modell gespeichert wird (ddGlb.Model_Name). 
Wenn wir das ändern wollen, müssen wir

Das ist zwar keine triviale Aufgabe, aber mit den oben gezeigten Hilfsmitteln ist das möglich. Was im Detail angepaßt werden muß, werde ich in der Session zeigen.

Wieso funktioniert der Triggercode mit ODBC nicht vollständig?

Das ist weniger ein Problem von xCase als ein Problem des aktuellen VFP ODBC-Treibers. Der kommt offensichtlich mit Makrosubstitution ("&") nicht zurecht. Ich habe das Problem dem Hersteller mitgeteilt und er wird es in der nächsten xCase-Version beheben. Wer die aktuelle xCase Version 5.5 einsetzt und nicht auf das nächste Update warten will, kann das korrigierte TCL-Skript von mir haben (mailto: mw@bingo-ev.de).

xCase in deutsch

Der Hersteller trägt sich mit dem Gedanken xCase ins Deutsche zu übersetzen. Ich werde versuchen, zur Konferenz eine aktuelle Stellungnahme des Herstellers zu erhalten.

Neue xCase Features für VFP7

Zum Zeitpunkt der Erstellung dieses Skripts lag dazu leider noch keine Stellungnahme des Herstellers vor. 

Übrigens…

Den meisten xCase Anwendern dürfte schon mal aufgefallen sein, daß das FoxCase-Menü nach einem CLEAR ALL nicht mehr funktioniert. Ich habe 1998 einen Ersatz für das FoxCase Menü entwickelt der bis heute funktioniert und die oben genannten Probleme nicht hat. Es ist seitdem bei mir und einigen VFP-Programmierern in meinem Bekanntenkreis im Einsatz. Wer es haben will: mailto:mw@bingo-ev.de.