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 Informatik

Abschluss:	 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
Bild	1:	Original	von	Kippelboy,	via	Wikimedia
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
	Original	von	xavax,	via	de.wikipedia	Commons
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016
Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein
Braun Lectron Elektronikbaukasten
• Beschränkter Arbeitsraum

• Problematische Wiederverwendbarkeit

erstellter Schaltungen

• Lösung: Zukauf oder Selbstbau 

von Bausteine mit komplexem

Innenleben
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
B
C
X
Y
Akummilierte	
Resonanz-
Fillibrations-
Methodik
Integrale	
Stimulations-
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
Themes
Custom 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
* locally scoped $variables.
*
* RETURNS
* True(1) when parameters is a valid set of name-value pai
* includes the empty string); False(0) otherwise.
* If False(0), the error code will be saved to: $#Assign.e
*
* PARAMETERS
* _parameters: A Let format dictionary, such as produced b
* #( name; value ) function.
*
* HISTORY
* 2015-10-27 by Matt Petrowsky to support weak formatted r
* delimited input.
* 2013-03-15 by Daniel Smith <http://scr.im/dansmith> to u
* documentation to match functions actual return value.
* 2012-11-28 by Jeremy Bante <http://scr.im/jbante> to sup
* "$" 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 Reference
CF 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:

• Idempotenz

Wiederholt hintereinander aufgerufen führt das Scripts zum gleichen Ergebnis

• Kontext-unabhängigkeit

Das Script kann jederzeit und aus jedem Kontext heraus aufgerufen werden

• Script Functions

Scripts, 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!

FMK2016 - Arnold Kegebein - Recycling

  • 1.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 www.filemaker-konferenz.com Wiederverwendbar Datenbankentwicklung Sprecher: Dipl.-Ing. Arnold Kegebein Recycling
  • 2.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Recycling
  • 3.
    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 Informatik
 Abschluss: 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“
  • 4.
    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
  • 5.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Bild 1: Original von Kippelboy, via Wikimedia
  • 6.
    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 Original von xavax, via de.wikipedia Commons
  • 7.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Braun Lectron Elektronikbaukasten • Beschränkter Arbeitsraum • Problematische Wiederverwendbarkeit
 erstellter Schaltungen • Lösung: Zukauf oder Selbstbau 
 von Bausteine mit komplexem
 Innenleben
  • 8.
    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
  • 9.
    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
  • 10.
    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
  • 11.
    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
  • 12.
    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
  • 13.
    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 B C X Y Akummilierte Resonanz- Fillibrations- Methodik Integrale Stimulations- Konvergenz- Transformation
  • 14.
    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
  • 15.
    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
  • 16.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein FileMaker „Recycling“ Datenmodell Web Viewer Layout Objects Themes Custom Functions Parametrisierte Scripts Modular FileMaker Idiomatic FileMaker
  • 17.
    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)
  • 18.
    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 ) )
  • 19.
    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
  • 20.
    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 * locally scoped $variables. * * RETURNS * True(1) when parameters is a valid set of name-value pai * includes the empty string); False(0) otherwise. * If False(0), the error code will be saved to: $#Assign.e * * PARAMETERS * _parameters: A Let format dictionary, such as produced b * #( name; value ) function. * * HISTORY * 2015-10-27 by Matt Petrowsky to support weak formatted r * delimited input. * 2013-03-15 by Daniel Smith <http://scr.im/dansmith> to u * documentation to match functions actual return value. * 2012-11-28 by Jeremy Bante <http://scr.im/jbante> to sup * "$" prefix values as default. * 2012-11-11 by Jeremy Bante <http://scr.im/jbante>. ------------------------------------------------------------
  • 21.
    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 ) )
  • 22.
    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 ? ?
  • 23.
    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 ]; "" ) ) )
  • 24.
    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
  • 25.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Script Dokumentation
  • 26.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein 1-Ausgang-Strategie: „Single Exit“
  • 27.
    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
  • 28.
    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
  • 29.
    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
  • 30.
    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
  • 31.
    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
  • 32.
    7. FileMaker Konferenz| Salzburg | 13.-15. Oktober 2016 Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein Parameter by Reference CF Test( param ) Liste( "Wert: " & Zitat( param ); "Feld: " & HoleFeldname( param ); "Felddatentyp: " & FeldTyp( ""; HoleFeldname( param ) ); "Kommentar: " & FeldKommentar( ""; HoleFeldname( param ) ) )
  • 33.
    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: • Idempotenz
 Wiederholt hintereinander aufgerufen führt das Scripts zum gleichen Ergebnis • Kontext-unabhängigkeit
 Das Script kann jederzeit und aus jedem Kontext heraus aufgerufen werden • Script Functions
 Scripts, die wie eine Funktion verwendet werden können • Parametrisierte Scripts • Server Scripts
  • 34.
    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?
  • 35.
    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!