35
7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016 www.filemaker-konferenz.com Wiederverwendbar Datenbankentwicklung Sprecher: Dipl.-Ing. Arnold Kegebein Recycling

FMK2016 - Arnold Kegebein - Recycling

Embed Size (px)

Citation preview

Page 1: FMK2016 - Arnold Kegebein - Recycling

7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016

www.filemaker-konferenz.com

Wiederverwendbar Datenbankentwicklung

Sprecher: Dipl.-Ing. Arnold Kegebein

Recycling

Page 2: FMK2016 - Arnold Kegebein - Recycling

7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016

Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein

Recycling

Page 3: FMK2016 - 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“

Page 4: FMK2016 - Arnold Kegebein - Recycling

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

Page 5: FMK2016 - Arnold Kegebein - Recycling

7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016

Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein

Bild1:O

riginalvon

Kippe

lboy,viaW

ikim

edia

Page 6: FMK2016 - Arnold Kegebein - Recycling

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

Page 7: FMK2016 - Arnold Kegebein - Recycling

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

Page 8: FMK2016 - Arnold Kegebein - Recycling

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

Page 9: FMK2016 - Arnold Kegebein - Recycling

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

Page 10: FMK2016 - Arnold Kegebein - Recycling

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

Page 11: FMK2016 - Arnold Kegebein - Recycling

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

Page 12: FMK2016 - Arnold Kegebein - Recycling

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

Page 13: FMK2016 - Arnold Kegebein - Recycling

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

Page 14: FMK2016 - Arnold Kegebein - Recycling

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

Page 15: FMK2016 - Arnold Kegebein - Recycling

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

Page 16: FMK2016 - Arnold Kegebein - Recycling

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

Page 17: FMK2016 - Arnold Kegebein - Recycling

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)

Page 18: FMK2016 - Arnold Kegebein - Recycling

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 ) )

Page 19: FMK2016 - Arnold Kegebein - Recycling

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

Page 20: FMK2016 - Arnold Kegebein - Recycling

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>. ---------------------------------------------------------------------------*/

Page 21: FMK2016 - Arnold Kegebein - Recycling

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 ) )

Page 22: FMK2016 - Arnold Kegebein - Recycling

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

?

?

Page 23: FMK2016 - Arnold Kegebein - Recycling

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 ]; "" ) ) )

Page 24: FMK2016 - Arnold Kegebein - Recycling

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

Page 25: FMK2016 - Arnold Kegebein - Recycling

7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016

Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein

Script Dokumentation

Page 26: FMK2016 - Arnold Kegebein - Recycling

7. FileMaker Konferenz | Salzburg | 13.-15. Oktober 2016

Recycling | Wiederverwendbare Datenbankentwicklung • Dipl.-Ing. (FH) Arnold Kegebein

1-Ausgang-Strategie: „Single Exit“

Page 27: FMK2016 - Arnold Kegebein - Recycling

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

Page 28: FMK2016 - Arnold Kegebein - Recycling

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

Page 29: FMK2016 - Arnold Kegebein - Recycling

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

Page 30: FMK2016 - Arnold Kegebein - Recycling

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

Page 31: FMK2016 - Arnold Kegebein - Recycling

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

Page 32: FMK2016 - Arnold Kegebein - Recycling

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 ) ) )

Page 33: FMK2016 - Arnold Kegebein - Recycling

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

Page 34: FMK2016 - Arnold Kegebein - Recycling

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?

Page 35: FMK2016 - Arnold Kegebein - Recycling

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!