7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
www.filemaker-konferenz.com
Wiederverwendbar Datenbankentwicklung
Sprecher: Dipl.-Ing. Arnold Kegebein
Recycling
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Recycling
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
User Interface : Panel Window • Dipl.-Ing. (FH) Arnold Kegebein
Über den Sprecher• Name: Arnold Kegebein
• Ausbildung: Studium der technischen InformatikAbschluss: Diplom-Ingenieur (FH)
• Tätigkeiten: Inhouse Entwickler, Hamburg IT Leiter, Chicago, USA IT Consultant, Hamburg
über 30 Jahre Erfahrungen mit Datenbanken
• Sonstiges: 10 Jahre FileMaker Entwickler Autor für das FileMaker Magazin Fan von TV-Show „The Big Bang Theory“
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Einleitung• Wir haben in unseren Projekten hunderte Datenbanken entwickelt
• Mehrere Dutzend Kontakt- und Adressdatenbanken
• Viele von Grund auf neu entwickelt
• Warum?
• Viele Kunden, jeder will seine eigene Datenbank
• Neue Anforderungen
• Neuentwicklung ist oft effektiver als ein Umbau
• Neue Systeme / Programmiersprachen / Programmversionen
• Fortgeschrittenes Wissen und Erfahrungen
• Neue Datenmodelle, Programmiertechniken und -konzepte
• Anforderungen externer Systeme, Schnittstellen
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Bild1:O
riginalvon
Kippe
lboy,viaW
ikim
edia
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Braun Lectron Elektronikbaukasten• Bausteine stellen elektronische Elemente dar
• Sie lassen sich zu Schaltkreisen zusammenstellen
• Sie sind wiederverwendbar
Orig
inalvon
xavax,viade.wikiped
iaCom
mon
s
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Braun Lectron Elektronikbaukasten• Beschränkter Arbeitsraum
• Problematische Wiederverwendbarkeiterstellter Schaltungen
• Lösung: Zukauf oder Selbstbau von Bausteine mit komplexemInnenleben
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
FileMaker als Baukasten• FileMaker hat auch viele Bausteine
• Besonders das Script System ist keine Programmiersprache, sondern ein Makro-Befehlsbaukasten
• Der Datenzugriff ist eng gekoppelt mit Layouts
• Seit Einführung der Funktion ExecuteSQL/ SqlAusführen weniger eng
• Aber nur lesende Zugriffe erlaubt, Schreiben nicht möglich
• Nur Zugriff auf Daten, nicht auf Struktur
• Kein oder kaum Zugriff auf FileMaker interne Parameter
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Eigene FileMaker Bausteine• Gesucht ist ein Ansatz, eigene FileMaker Bausteine zu entwickeln,
• die sich direkt wiederverwenden lassen
• oder zumindest nur wenige Anpassungen erfordern
• Stichwort: Modulare Entwicklung
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Warum modulare Entwicklung?
• Das Rad wird nicht jedesmal neu erfunden
• Bewerte Module stehen immer zur Verfügung
• Module vereinfachen die Entwicklung (Arbeitsteilung)
• Module können individuell getestet werden
• Module sorgen für mehr Stabilität
Pro
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Warum modulare Entwicklung?Contra• Das Rad wird nicht jedesmal neu erfunden
• Neuentwicklung ermöglicht es, alte System zu verbessern
• Entwicklung einfach verwendbarer Module erfordert erheblich Mehraufwand
• FileMaker ist kein offenes System
• Modulare Programmierung widerspricht der Grundstruktur von FileMaker
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Recycling / Wiederverwendbarkeit• FileMaker Entwickler suchen und finden verschiedene Wege
• MagicValueList (Andries Heylen)
• Custom List Function (Agnès Barouh)
• Modular FileMaker (Todd Geist)
• Fremdumgebungen nutzen
• Plugins
• WebViewer
• Java oder JavaScript Libraries u. a.
• WebServices
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
• Bekannt ist, was in die Black Box eingegeben wird bzw. wieder heraus kommt
• Das Innere der Black Box ist irrelevant und austauschbar
Black Box Prinzip
A
BC
X
Y
AkummilierteResonanz-Fillibrations-Methodik
IntegraleStimulations-Konvergenz-Transformation
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Black Box Entwicklung• Das Problem von Außen betrachten
• Erst Ein- und Ausgabewerte definieren
• Dann Lösung für Black Box entwickeln
• Das Problem von Innen betrachten
• Zuerst eine spezielle Lösung entwickeln
• Dann die Lösung von seiner Umgebung entkoppelen
• Und dabei die Ein- und Ausgabeparameter festlegen
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Black Box mit FileMaker• Eine Black Box muss kein Script oder CF sein
• Eine Black Box muss nicht ein einzelnes Objekt sein
• Eine Black Box muss keine eigenständige Datei sein, kann es aber
• Vorteil:
• Update / Austausch der Black Box vereinfacht sich
• Import und Anpassung von Scripts entfällt
• Nachteil:
• Öffentliche CFs müssen importiert werden
• Eine ideale Black Box wird sich in FileMaker nicht immer umsetzen lassen
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
FileMaker „Recycling“
Datenmodell
Web Viewer
Layout Objects
ThemesCustom Functions
Parametrisierte Scripts
Modular FileMaker
Idiomatic FileMaker
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
The Basics – Grundlagen• FileMaker Pro Advanced ist ein MUSS
• Fortgeschrittene Kenntnisse von CFs
• (Eigene) Konventionen verwenden
• Namenskonventionen
• Entwicklungskonventionen
• Dokumentationskonventionen
• Kenntnisse moderner Datenmodelle
• Externe Systeme kennen und nutzen
(imho)
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Basic Recycling• Die Zwischenablage ist das einfachste Prinzip von Recycling
• Standardfelder kopieren
• Standardscripts (Header Dokumentation, …)
• Formelsammlung
• Templates (Felder, Scripts. …)
• Layoutelemente
Let( [ ~sql = " SELECT {__id}, {field} FROM {{table}} WHERE {field} = ? ORDER BY {field} OFFSET n ROWS FETCH FIRST n ROWS ONLY|WITH TIES ";
~qry = Substitute( ~sql; [ “{{table}}”; sqlTable( Table::__id ) ]; [ “{__id}"; sqlField( Table::__id ) ]; [ "{field}"; sqlField( Table::field ) ] );
~res = ExecuteSQL( ~qry; ""; ""; $variable ) ]; If( ~res ≠ "?"; ~res ) )
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Recycling mit CFs• Formelsammlung mit häufig verwendeten Funktionen
• Spezielle Funktionen für Module
• Script Parameter: #, #Assign, #Get, …
• SQL Query: sqlField, sqlTable, sqlInSet
• Entkoppeln bzw. Kapseln von Plugin-Funktionen
• Erleichtert das Wechseln von Plugins
• Ersatz für Konstanten: bom, null
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
CF Konventionen• Namenskonvention
• Prefix / Suffix / camelCase
• Fallstrick „Sprachversionen“
• Kennzeichnung „hard-coded“ CFs
• Dokumentationskonvention
• Im Kopf des Funktionscodes
• Aufgabe der CF
• Rückgabewert
• Eingabeparameter
• Änderungshistorie
• …
/*--------------------------------------------------------------------------- * #Assign( _parameters ) * * PURPOSE * Parses a Let dictionary of name-value parameters into a series of * locally scoped $variables. * * RETURNS * True(1) when parameters is a valid set of name-value pairs(which * includes the empty string); False(0) otherwise. * If False(0), the error code will be saved to: $#Assign.error * * PARAMETERS * _parameters: A Let format dictionary, such as produced by the * #( name; value ) function. * * HISTORY * 2015-10-27 by Matt Petrowsky to support weak formatted return * delimited input. * 2013-03-15 by Daniel Smith <http://scr.im/dansmith> to update * documentation to match functions actual return value. * 2012-11-28 by Jeremy Bante <http://scr.im/jbante> to support * "$" prefix values as default. * 2012-11-11 by Jeremy Bante <http://scr.im/jbante>. ---------------------------------------------------------------------------*/
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Beispiel: SQL Abfragen• Kein „hard coding“
• Tabellen und Felder entkoppeln
• Sonderfälle einplanen
• Fehlerbehandlung
Let( [ ~sql = " SELECT {__id}, {field} FROM {{table}} WHERE {field} = ? ORDER BY {field} OFFSET n ROWS FETCH FIRST n ROWS ONLY|WITH TIES "; ~qry = Substitute( ~sql; [ “{{table}}”; sqlTable( Table::__id ) ]; [ “{__id}"; sqlField( Table::__id ) ]; [ “{field}"; sqlField( Table::field ) ] ); ~res = ExecuteSQL( ~qry; ""; ""; $variable ) ]; If( ~res ≠ "?"; ~res ) )
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Fehlerbehandlung• FileMaker hat nur eine sehr einfache Fehlerverwaltung
• Hole( LetzteFehlerNr )
• BerechnungsFehler( … )
• Rückgabewert in Fehlerfällen: „?“
• Gewünscht ist ein erweitertes Black Box Konzept
A
B
C
X
Y
#
Fehlerinformation
?
?
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Let( [ ~sql = " SELECT {__id}, {field} FROM {{table}} WHERE {field} = ? ORDER BY {field} OFFSET n ROWS FETCH FIRST n ROWS ONLY|WITH TIES "; ~qry = Substitute( ~sql; [ “{{table}}”; sqlTable( Table::__id ) ]; [ “{__id}"; sqlField( Table::__id ) ]; [ “{field}"; sqlField( Table::field ) ] ); ~res = ExecuteSQL( ~qry; ""; ""; $variable ) ]; If( ~res ≠ "?"; ~res ) )
• Fehlerwert „?“ wird abgefangen
• Fehlerstatus speichern
• Fehlerhaft SQL-Abfrage speichern
• Im Erfolgsfall Variablen leeren
Beispiel Fehlerbehandlung
]; If( ~res ≠ “?"; ~res; // Else Let( $$ERROR_SQL = true; “" ) ) )
]; If( ~res ≠ “?"; ~res; // Else Let( [ $$ERROR_SQL = true; $$ERROR_SQL.qry = ~qry ]; “” ) ) )
]; If( ~res ≠ "?"; Let( [ $$ERROR_SQL = ""; $$ERROR_SQL.qry = "" ]; ~res ) // Else Let( [ $$ERROR_SQL = true; $$ERROR_SQL.qry = ~qry ]; "" ) ) )
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Recycling mit Scripts• Standardscripts
• Standardbefehle (Header, Setup, Abschluss)
• Dokumentationszeilen im Header
• Script Parameter
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Script Dokumentation
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
1-Ausgang-Strategie: „Single Exit“
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Enge ↔ lose Kopplung• Enge Kopplung
• Erwarte bestimmte Voraussetzungen
• Layout (Tabelle/TO)
• FoundSet, aktueller Datensatz
• Fenstermodus (Blättern)
• Lose Kopplung
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Systeme entkoppeln• Keine bestimmten Umgebungseinstellungen erwarten
• bestimmte Layouts oder Layouttabellen
• aktuell ausgewählte Datensätze
• Fenstermodus
• globalen Variablen, außer die Black Box erstellt sie selbst
• Keine bestimmten Tabellen bzw. Felder verwenden
• Ausnahme: Die Tabelle kann vollständig in der Black Box existieren
• Keine bestimmten Layouts verwenden
• Siehe auch: Script auf Server ausführen
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Systeme entkoppeln• Enge Kopplung vermeiden
• „Feste verdrahtete“ Programmierung vermeiden
• Nicht 0,19 bzw. 19% als Mehrwertsteuersatz in Formeln eintragen, sondern ein entsprechendes Feld verwenden
• Mögliche Schwachstellen erkennen
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Scripts• Script Parameter verwenden
• Layout Id statt Layout Name oder Layout Nummer
• Ein Eingang, ein Ausgang („Single Loop“)
• Script Ergebnis zurückgeben
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
CFs vz. Scripts• Fast alles, was eine CF kann, lässt sich mit einem Script nachbilden
• Ausnahme: Anzahl der Parameter;
• CF kann mehrere haben, Script nur einen
• Übergabe mehrerer Parameter muss bei Scripts mit eigenen Methoden ermöglicht werden
• Ausnahme: Parameterübergabe „by reference“
• CF kann Herkunft der Parameter erfragen
• Script Parameter ist immer „by value“, da als Text übergeben
• CFs werden im lokalen Speicher berechnet
• Scripts können auch auf dem Server ausgeführt werden
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Parameter by ReferenceCF Test( param )
Liste( "Wert: " & Zitat( param ); "Feld: " & HoleFeldname( param ); "Felddatentyp: " & FeldTyp( ""; HoleFeldname( param ) ); "Kommentar: " & FeldKommentar( ""; HoleFeldname( param ) ) )
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Benennen von Scripts• Spezielle Markierungen können bestimmte Scriptarten kennzeichnen:
• IdempotenzWiederholt hintereinander aufgerufen führt das Scripts zum gleichen Ergebnis
• Kontext-unabhängigkeitDas Script kann jederzeit und aus jedem Kontext heraus aufgerufen werden
• Script FunctionsScripts, die wie eine Funktion verwendet werden können
• Parametrisierte Scripts
• Server Scripts
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Fragen & Antworten• Was haben Sie nicht verstanden?
• Was wollen Sie noch wissen?
• Wollen Sie noch etwas beitragen?
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
FileMaker Konferenz 2016 Salzburg
Vielen Dank unseren Sponsoren
Ohne Sponsoring wäre diese Konferenz so nicht möglich!