12.07.2015 Aufrufe

Trennung von Struktur und Daten - Team Busch

Trennung von Struktur und Daten - Team Busch

Trennung von Struktur und Daten - Team Busch

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

FileMaker Magazin 2005/00???<strong>Trennung</strong> <strong>von</strong> <strong>Struktur</strong> <strong>und</strong> <strong>Daten</strong>Ein ErfahrungsberichtDr. Christopher <strong>Busch</strong>, HamburgMara <strong>Busch</strong>, Hamburg##@internet.deIm ersten Teil dieses Artikelshatten JW <strong>und</strong> CB theoretischeÜberlegungen zu diesemThema angestellt. Hierberichten wir (mit Mara,ohne Jörn!) über die praktischeInbetriebnahme unseresersten grösseren FM7-Projektes unter Bezugnahmeauf die Aspekte der<strong>Trennung</strong> <strong>von</strong> <strong>Struktur</strong> <strong>und</strong><strong>Daten</strong>.Worum geht es?Kurze Rekapitulation desProblems für die Leser, die denersten Artikel nicht parat haben:Seit FileMaker 7 kann man beliebigviele <strong>Daten</strong>banktabellenin einer Datei definieren, währendbis FileMaker 6 eine Dateiimmer nur eine Tabelle enthaltenkonnte.Ferner kann ein Layout ineiner Datei die <strong>Daten</strong> aus einerTabelle einer anderen Datei zeigen.Gr<strong>und</strong>baustein dieses <strong>Daten</strong>transfersist der so genannte„Dateiverweis“ (siehe MenüAblage ➝ Definieren… ➝Dateiverweise)Somit bietet sich prinzipielldie Option, die <strong>Daten</strong> (also dievom Anwender in Tabellen erstellten<strong>Daten</strong>sätze) <strong>von</strong> der<strong>Struktur</strong> (also den vom Entwicklerdefinierten Layouts,Scripts, Beziehungen etc) zutrennen.Die Artikelserie beleuchtetdas Ausmass, in dem diese <strong>Trennung</strong>möglich <strong>und</strong> sinnvoll ist<strong>und</strong> stellt Vor- <strong>und</strong> Nachteiledieser <strong>Trennung</strong> <strong>von</strong> <strong>Struktur</strong><strong>und</strong> <strong>Daten</strong> gegenüber.Die „SansiBase“ inder „Sansibar“Vor kurzem haben wir (dieteam|busch GmbH) unser erstesgrößeres Netzwerkprojekt unterFileMaker 7 installiert: Die Lösung„SansiBase“ in der Sansibarauf Sylt. Dieser Kultschuppen istgleichzeitig ein Restaurant derSpitzenklasse, ein Weinhändlermit exquisitem Sortiment sowieeine Strandkorbvermietung.Zur technischenSituationDie <strong>von</strong> uns installierte File-Maker 7-<strong>Daten</strong>bank ist einemandanten-fähige Gesamtlösungfür die drei Firmen. Sieläuft in einem gemischten Netzwerk(Windows XP-Server,sechs Apple- <strong>und</strong> vier Windows-Clients) auf einem 1.000 MBit-Netzwerk. Die drei Computerkassensind eingeb<strong>und</strong>en: Sieexportieren jede Nacht die imRestaurant verkauften Weinflaschen;ein auf dem Troi File-Plugin basierendes Script subtrahiertderen Anzahl pro Artikelnummervom Bestand desArtikels ab, der das automatischeBestellwesen steuert, <strong>und</strong> erstellteine Rechnung, die das Restaurantan den Weinhandel zu zahlenhat (Stichwort „Interne Abrechnung“).Das „<strong>Busch</strong>Feuer“Zum Design: Meine erschütterndhäßlichen <strong>Daten</strong>bankenwaren meiner Frau schon immerein Balken im Auge. Nunhat sie die komplette Gestaltungdes neuen Programmes übernommen,<strong>und</strong> ich erkenne meineArbeit selbst kaum wieder.((Bild K<strong>und</strong>enmaske.png))Und die Anwender sagen mirnun auf einmal ehrlich, wie siedie Oberfläche des Altsystemsempfanden; die Aussagen kannman nicht wirklich als Lob interpretieren.Wir entschieden uns, diesesSystem (Arbeitstitel „<strong>Busch</strong>Feuer“,im Folgenden kurz „BF“)so zu entwerfen, dass es als Ausgangspunktnahezu aller künftigenProjekte unter FileMaker 7bzw. FileMaker 8 fungierenkann. Daher wurden alle <strong>Struktur</strong>elementeso abstrakt <strong>und</strong> allgemeinangelegt, wie wir selbstgerade noch verstehen konnten.Einstein: „Man soll alles so einfachwie möglich machen, abernicht einfacher.“C. <strong>Busch</strong>: „Warum einfach, wennes auch kompliziertgeht?“Inzwischen laufen vier weitereProjekte auf der BF-Basis<strong>und</strong> es zeigte sich dabei immerwieder, dass durch Abstraktionmöglichst vieler <strong>Struktur</strong>en dieWiederverwendbarkeit sehr gesteigertwerden kann; mehr dazuunten.Der aus der großen Abstraktionresultierende Beziehungsgraphzwang uns inzwischen zurAnschaffung eines 30“ Apple-Cinema-Displays; jedem Entwicklerunter FileMaker 7/8 seigeraten, sich den größten Monitorzuzulegen, den Möblierung<strong>und</strong> Geldbeutel zulassen.Aufbau des Systems<strong>Busch</strong>Feuer besteht aus denfolgenden Dateien:BF_<strong>Daten</strong>.fp7 enthält alldiejenigen Tabellen, in denendie Anwender <strong>Daten</strong>sätze anlegen<strong>und</strong> bearbeiten können:- Mitarbeiter(Programmbenutzer)- Adressen- Artikel- Aufträge- Korrespondenz usw.Nur diese Datei wird mit derZeit groß werden.BF_<strong>Struktur</strong>.fp7 enthält fastalle Scripts sowie fast alle Layouts,die der Anwender jemalszu sehen bekommt. Die einzigenAusnahmen sind die Drucklayoutssowie die durch Bugs inFileMaker 7/8 erzwungenenAuswertelayouts inBF_<strong>Daten</strong>.fp7 (siehe unten)In BF_<strong>Struktur</strong>.fp7 „lebt“auch der komplexe Beziehungsgraph,der die diversen Tabellenaller Dateien miteinander verknüpft.Die meines Erachtensnoch nicht ganz durchdachte<strong>Struktur</strong> in FileMaker 7 zwingtuns aber dazu, auch in BF_<strong>Daten</strong>.fp7ca. die Hälfte aller Beziehungenin einem zweitenGraphen zu pflegen. Dies istsehr fehlerträchtig <strong>und</strong> erfordertgenaueste Kontrolle der eigenenArbeit.BF_Print.fp7: Dies ist einschöner Tipp <strong>von</strong> Carsten Bellinggewesen: Eine Extradateienthält alle Drucklayouts; nurfür diese Datei erhalten die Anwenderein Passwort mit Layoutrechten<strong>und</strong> können daher dieLayouts an ihre Drucker anpassen,sich selbst Etikettenlayoutserstellen usw.Auch kann, wenn die EntwicklerAnpassungen vornehmenkönnen, diese klein bleibendeDatei, in der es keine <strong>Daten</strong>sätzegibt, schnell per E-Mailausgetauscht werden.BF_Print.fp7 enthält auchzum Beispiel Scripts, mit denenaus dem aktuellen Layout mitdem schubec PDF-Plugin [1]ein PDF erstellt wird; BernhardSchulz sei gedankt für seineEntwicklung einer Mac OS X-Version des Plugins <strong>und</strong> seineUnterstützung. FilleMaker 8© 1994 - 2005 K&K Verlag GmbH, Hamburg2


FileMaker Magazin 2005/00© 1994 - 2005 K&K Verlag GmbH, Hamburgbietet die Option der PDF-Erstellungauch ohne Plugin; jedochkann unverständlicherweisedieses PDF nicht per Scriptflexibel benannt werden, so dasssich die PDFs immer gegenseitigüberschreiben würden. Erstdann, wenn der Speicherort desgenerierten PDFs im Script errechnetwerden kann, halte ichdie PDF-Option für nützlich.Ferner kann man inBF_Print.fp7 <strong>Daten</strong>sätze faxen,mailen usw.BF_ToolBox.fp7 enthält lauternützliche Scripts, <strong>von</strong> denenwir annehmen, dass sie projektunabhängigimmer vorhandensein sollten: Etwa eine auf demTroi File-Plugin basierendeOrdnerauswahloption; das Verschiebeneiner Datei an einenanderen Speicherort; das Anwähleneiner Telefonnummervia CAPI- oder TAPI-Kommandos;den Import einer Textdatei,deren Speicherort samtDateinamen in einer Globalenübergeben wird, in eine Hilfstabelle;diverse parametrisierteTroi Dialog-Scriptaufrufe usw.Ein weiteres Bonbon ist einselbst programmierter Kalender,mit dem scriptgesteuert ein Datumgewählt werden kann. Datumswerte,die nicht gewähltwerden dürfen, sind rot durchgestrichen.((Bild Kalender.png))BF_xmCharter.fp7 basiertauf dem ganz <strong>und</strong> gar genialenPlugin xmChart [2] <strong>von</strong>x2max <strong>und</strong> erstellt aus <strong>Daten</strong>,die in Globalen übergeben werden,automatisch Grafiken. Hättenschon die alten Griechendieses Plugin gekannt, so wäremanche Tragödie nicht geschriebenworden, <strong>und</strong> es gäbemehr Komödien.BF_Importer.fp7 enthältScripts zur Übernahme einesBestandes aus einem alten, abzulösendenSystem, an denender geduldige <strong>und</strong> gründlicheKlaus-Dieter Brügmann sich dieFinger w<strong>und</strong> programmiert hat<strong>und</strong> mir trotz des radikal anderen<strong>Daten</strong>modells die problemloseÜbernahme der <strong>Daten</strong>massenaus der alten FileMaker 5-Software der Sansibar erlaubte.So, das sind die Dateien desSystems! Gearbeitet werden sollaber i.d.R. nur inBF_<strong>Struktur</strong>.fp7, <strong>und</strong> dafürmüssen wir in dieser Datei Dateiverweiseauf alle anderen Dateienerstellen.Bei jedem Layout inBF_<strong>Struktur</strong>.fp7 kann nun eineTabelle aus einer beliebigen Dateials <strong>Daten</strong>basis gewählt werden;hierzu muß im Beziehungsgraphen<strong>von</strong> BF_<strong>Struktur</strong>.fp7eine „Tabellen-Erscheinung“(engl. „table occurence“,im weiteren Verlauf kurz „TO“genannt) erstellt werden.((Bild TO_Definieren.png))Dann erstellt man ein Layout<strong>und</strong> wählt diese TO als Basisaus:((Bild Layout_Definition.png))Warum haben die Layoutnamenkryptische Namensteilewie „[Art1]“? Weil wir die Layoutsin diversen Prozeduren wie<strong>Daten</strong>sätze behandeln; die Wertein den „[ ]“ werden <strong>von</strong> uns„LayoutCode“ genannt, <strong>und</strong>sind quasi die eindeutigen IDsdieser Pseudo-<strong>Daten</strong>sätze (s.u.).Ein Layout kann auch später beliebigumbenannt werden, solangesein LayoutCode unverändertbleibt. Die Ansteuerung einesLayouts etwa geht niemalsüber den BefehlGehe zu Layout(Layoutname)sondern stets so:Suche den eindeutigen LayoutCodeinGet (LayoutName)er wird garantiert genau einmalgef<strong>und</strong>en.Prüfe anhand dieses Layout-Codes, welche Einstellungennun durchzuführen sind (s.u.).(Wegen der grauenhaften Übersetzungdes FM7 ins Deutsche arbeiteich mit englischen Funktionsnamen<strong>und</strong> Scriptbefehlen.)Das <strong>Busch</strong>Feuer-Gesetzbuch (BGB)Wer darf was in der <strong>Daten</strong>bank?Tasten, Layouts <strong>und</strong> Rechtesind <strong>Struktur</strong>elemente <strong>von</strong> File-Maker selbst <strong>und</strong> etwas ganz anderesals <strong>Daten</strong>sätze.Dachten Sie bis jetzt – abernun kommt’s!Tasten, Layouts, Rechte sindim <strong>Busch</strong>Feuer <strong>Daten</strong>sätze inspeziellen Tabellen, ebenso wiedie Dateien,Tabellen <strong>und</strong> Wertelisten.Die Tabelle ButtonThemenetwa enthält als <strong>Daten</strong>sätze sozusagen„Themenkreise“ derTätigkeiten des Anwenders, z.B.„Buchhaltung“ oder„Import/Export“. Konkrete, anmehr oder weniger normalenScripts hängende Buttons sind<strong>Daten</strong>sätze der Tabelle Button-Optionen, die N:1 mit den ButtonThemenverknüpft ist. DieseButtonOption „Offene Rechnungen“etwa ist ein Kind desThemas „Buchhaltung“.Ein Portal im Hauptmenüzeigt nun die ButtonThemen;rechts daneben ist ein weiteresPortals, das die ButtonOptionendes zuletzt geklickten ButtonThemaszeigt.((Bild BtThemen_BtOptionen.png))Da die Anwender in den beidenTabellen keine <strong>Daten</strong>sätzeanlegen dürfen <strong>und</strong> aufgr<strong>und</strong>ihrer Verwendung sind diese Tabellenbewusst in BF_<strong>Struktur</strong>definiert, nicht in BF_<strong>Daten</strong>.Auf dem ButtonThemen-Portal liegt dafür ein recht simplesScript, das die ID desgeklickten ButtonThemas in eineGlobale überträgt, die dasSchlüsselfeld für das rechte Portalist.Das im rechten Portal gezeigteFeld ist als Taste definiert<strong>und</strong> startet ein Script, das die IDder geklickten ButtonOption alsScript-Parameter (deren Einführungist ein Riesenfortschritt!)übergibt <strong>und</strong> in Abhängigkeit<strong>von</strong> dieser ID dasjenigeScript startet, in dessen Namendie richtige ID steht – ja, auchdie Script behandeln wir hier als<strong>Daten</strong>sätze mit einer ID...)Das Bild zeigt einen Ausschnittaus diesem Script.((Bild BtOp_MasterScript.png))Damit sie das Heft nicht zerreißen,habe ich die Konstruktionoben stark vereinfacht; inWahrheit ist es nämlich so: Eserschien mir schon immer unprofessionell,dass man in File-Maker-Anwendungen alle Tastensehen kann <strong>und</strong> dem geneigten,aber unerwünschtenAnwender per „Wenn ( )“ imScript mitteilt, dass er hier nichthätte klicken sollen.Also entschiedich mich, die einem Anwenderan einer Stelle nicht zugedachtenButtons gar nicht erstzu zeigen. Und das geht so:Den Anwenderdatensätzen inder Tabelle Mitarbeiter sind ineinem Textfeld die IDs aller ihmerlaubten ButtonThemen zugeordnet:((Bild Rechte_BtThemen.png))Der Strafgefangene, der einenkurzen Rehabilitationsurlaubmit therapeutischer Arbeitim Unternehmen verbringt,sollte eventuell nicht das Rechthaben, die Außenstände zu betrachten.Das ButtonThemen-Portal zeigt nun nicht alle ButtonThemen,sondern nur diedem eingeloggten Anwendergestatteten! Wer die Taste„Buchhaltung“ aber nicht sieht,kann nicht draufklicken, <strong>und</strong> hatsomit keine Chance, die untergeordneteTaste „Außenstände“jemals zu sehen. Klappe zu,Affetot.Es geht noch weiter,sorry...Aber selbst dann, wenn einAnwender eine bestimmte Tastesehen <strong>und</strong> betätigen darf, machtderen Präsenz nicht überallSinn. Etwa soll neben einer3


FileMaker Magazin 2005/00Rechnung (falls der AnwenderStorno-Recht hat!) die Taste„Storno/Gutschrift“ stehen,nicht aber neben einer Adresse.Ein Scriptsystem erstellt automatischjeder Datei des Systems,jeder darin definierten Tabelle<strong>und</strong> jedem Layout einen<strong>Daten</strong>satz in den Tabellen (!)Dateien, Tabellen <strong>und</strong> Layouts.Es gibt dann also insbesondereeinem <strong>Daten</strong>satz zu jedem Layout,dessen ID der eindeutige,oben erwähnte „Layoutcode“ist. Und jedem Layout als <strong>Daten</strong>satzist zugeordnet, welcheTasten, sprich ButtonOptionen,dort Sinn ergeben. Das Layout„[AAu1] AUFTRAG Eingabe“hat die Option „Storno/Gutschrift“zugeordnet, Layout„[Ktk2] KONTAKT Details“hingegen nicht.Und wenn ein Anwender aufein Layout wechselt – was ernur durch einen Klick auf eineButtonOption kann – so wirdihm dort im dem Portal links,dem „Navigator“, die Schnittmengedessen gezeigt, was aufdiesem Layout Sinn macht <strong>und</strong>dem, was er persönlich darf.(Das Portal ist hierzu getriggert<strong>von</strong> einem Mehrzeilenschlüssel;er erhält diverse ButtonOptionen-IDs.Die Schnittmengenbilde ich mit der„ANDText“-Funktion des TroiText-Plugins).Uff... Nach vielen Jahren desProbierens mit diversen Lösungenzur Rechteverwaltung inFileMaker erscheint mir dieseKonstruktion in ihrer Flexibilität<strong>und</strong> Macht das „non plusultra“ zu sein. Ein Mausklickauf der Maske des Anwenders Xreicht aus, um diesem an allenrelevanten Stelle des Programmeseine neue Funktion sichtbar<strong>und</strong> benutzbar zu machen,bzw. diese zu verbergen.Vorteile der <strong>Trennung</strong><strong>von</strong> <strong>Struktur</strong> <strong>und</strong><strong>Daten</strong>Eine äußerst angenehme Folgebetrifft die Dateigrößen:Auch nach dem <strong>Daten</strong>importbleiben die Dateien BF_<strong>Struktur</strong>.fp7,BF_ToolBox.fp7 <strong>und</strong>BF_Print.fp7 handlich klein.Sie können, etwa wenn Fehlerkorrigiert wurden, jederzeit einfachausgetauscht werden, ohnedass man <strong>Daten</strong> importierenmüßte.Dies bedeutet auch: Ihre Anwenderkönnen die Datei, in derSie als Entwickler den Großteilder Arbeit gesteckt haben – alsodie <strong>Struktur</strong>datei – schicken,ohne ihre eventuell sensiblen<strong>Daten</strong> mit zu geben.Arbeitetman etwa im Bereich der Medizin,so ist es natürlich aus <strong>Daten</strong>schutzgründen<strong>und</strong>enkbar,eine <strong>Daten</strong>bank mit echten Patientendatenzu mailen.Aber die<strong>Struktur</strong>daten enthält keine Patientendaten!Aber es kommt noch besser:FileMaker 7 erlaubt den Zugriffauf die <strong>Daten</strong>bankdefinition,insbesondere die Felder,während Anwender im Netzwerk<strong>Daten</strong> eingeben. KeineAhnung, wie die Jungs <strong>von</strong> File-Maker das hinbekommen haben.Daher kann man als Entwicklernun per Fernwartungtagsüber in das System der Anwender;die nächtlichen, ehezerrütenden„Ausritte“ mitpcAnywhere entfallen also. Dasschont die Familien <strong>und</strong> sorgt sodafür, dass genügend kleine Programmierernachwachsen.Hochkomplexe Prozeduren,die über diverse Dateien laufen,können nun in einem einzigenübersichtlichen Script strukturiertwerden. Diese Scripts sindsehr viel besser lesbar, als dieverschachtelten KonstruktionenmitScript ausführenOption: Extern: ....Scripts wie Druckformateinstellen, Fenstervergrößerung,Statusleiste ausblenden usw.muss man nur einmal erstellen,nicht für jede Tabelle einzeln.Nachteile der <strong>Trennung</strong><strong>von</strong> <strong>Struktur</strong><strong>und</strong> <strong>Daten</strong>Accounts (Konten) mit ihrenPassworten zur Zugriffsbeschränkungmüssen pro Dateidefiniert werden.Also erfordernÄnderungen den Eingriff in die„<strong>Daten</strong>datei“ BF_<strong>Daten</strong>.fp7.Dies ist einer der Gründe dafür,dass wir eine sehr flexible eigenenBerechtigungsmethode entwickelthaben – eben im Wesentlichenden Trick, einfachnur die Tasten zu zeigen, diedem Anwender erlaubt sind.Anmerkung:Schon immer konnte man das Passwortper Script ändern, bislang allerdingsnur durch explizite Eingabein jeder Datei. FileMaker 7/8 erlaubtdie Änderung formel-gesteuertin allen Dateien sowie die Erstellungneuer Konten per Script, ebensodie Deaktivierung bestehenderKonto.Viele Auswertungen funktionierennicht korrekt, wenn manversucht, sie in einer anderenDatei zu programmieren. Hierpassieren schlimmste,VooDooartigeFehler.Bitte diese Regel stets beachten:Auswertelayoutsmit Teilauswertungendürfen als Basistabelleniemals eine Tabelle einer anderenDatei haben, sonst laufenSie in diese Bugs: Felder, die inder Sortierfolge vorkommenbleiben leer, während identischdefinierte Duplikate dieser FelderWerte enthalten. Sortierungennach Auswertefeldern werdenim Sortierdialog angeboten,im Scriptablauf aber ignoriert.Auch FileMaker 8 machtdiese Auswertungen nicht besser;hier scheint wirklich etwasam Konzept falsch zu sein.Diese traurigen Tatsachen erzwingendie Erstellung der Auswertelayouts<strong>und</strong> –Scripts in derDatei BF-<strong>Daten</strong>.fp7, die ansonstenscript-frei hätte bleibenkönnen.Es müssen dann natürlichauch alle Beziehungen, derer dieAuswertung bedarf, in BF-<strong>Daten</strong>.fp7definiert werden. Schade;aber nur ein kleiner Wermutstropfenverglichen mit demgroßen Fortschritt, den die neueProgrammphilosophie mit sichbringt.Noch ein Fehler, der vor allemdeshalb ärgerlich ist, weil erseit der Betaphase <strong>von</strong> FileMaker7 bekannt ist <strong>und</strong> sich dennochselbst in FileMaker 8 nochfindet:Beim Befehl „Go to relatedrecord“ können Sie in FileMaker7 angeben – was ein grosserFortschritt ist – zu welchemLayout das Programm wechselnsoll:((Bild GeheZuBezugsDS_Definition.png))Wenn Sie Glück haben, erscheintnach Schließen des Dialogs„Layout unbekannt“:((Bild GeheZuBezugsDS_Danach.png))Wenn Sie Pech haben, stehthier irgendein falscher Layoutnameaus der Datei, in welcherdie Bezugstabelle lebt, <strong>und</strong> dasist sehr verwirrend!Lassen Sie sich aber durchfalsche Layoutnamen im Scriptbefehlnicht verwirren, FileMaker7 benimmt sich beim Ablaufdes Scripts korrekt.Zusammenfassung<strong>und</strong> EmpfehlungenSoll man nun die <strong>Struktur</strong><strong>von</strong> den <strong>Daten</strong> trennen, so weites möglich ist, oder nicht? Hierläßt sich keine allgemeingültigeRegel angeben. Meine Empfehlung:Wer für sich selbst oder einekleine Firma programmiert, solltedies nicht tun.Wer ein Programm an diverseAnwender verkaufen möchte,sollte es unbedingt tun.[1] (www.schubec.com)[2] (www.x2max.com)© 1994 - 2005 K&K Verlag GmbH, Hamburg4


FileMaker Magazin 2005/00© 1994 - 2005 K&K Verlag GmbH, Hamburg5

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!