Aus der Präsentation der JavaScript Custom Functions entspann sich eine rege Diskussion unter den Teilnehmern des Stammtisches. Jemand meinte: “Könnten wir das nicht auch statt JavaScript als normale FileMaker Custom Function haben?”.

Gesagt getan: Ein Vorschlag folgte auf den nächsten. Innerhalb weniger Minuten wurde eine Spezifikation über mögliche Features und Implementierungswege für einen universellen Ansatz zu virtuellen Custom Functions konkretisiert und als Notiz in einer Textdatei festgehalten.

Während der nächsten Themenblöcke des Abends sah man Christian konzentriert vor seinem Bildschirm werkeln. Einige Runden später kam unvermutet eine Wortmeldung aus dem MBS-Labor: “Also ich hätte da vielleicht noch was zu zeigen…”. Die Überraschung war gelungen und das Ergebnis konnte sich sehen lassen: Es war die Geburtsstunde der neuen Funktion MBS (“FM.CF”).

Mit Hilfe der neuen Funktion lassen sich FileMaker Custom Functions dateiübergreifend an einer zentralen Stelle virtualisieren.

Zunächst werden die Funktionen als Text erfasst. Diese können z.B. als Datensätze in einer Tabelle stehen. Oder auch aus einem Textfeld oder einer Textdatei geladen werden. Der Phantasie sind hier quasi keine Grenzen gesetzt. Die Auswahl der benötigten Funktionen ließe sich z.B. auch Kontext-abhängig anhand bestimmer Benutzerrechte oder anderer dynamischer Vorgaben steuern.

Nun wird ein MBS Dictionary mit der Liste aller benötigten Custom Functions befüllt. Durch die Verwendung unterschiedlicher Namen für das Dictionary können unterschiedliche Namespaces von einander abgetrennt werden. Wenn z.B. mehrere Lösungen oder mehrere Versionen einer Lösung parallel geöffnet werden sollen.

Der eigentliche Nutzen besteht darin, das die Custom Functions nicht mehr in jeder Datei einzeln definiert werden müssen, sondern persistent ins RAM geladen werden und dann bis zum Beenden von FileMaker direkt aufrufbar sind, auch wenn zwischendurch neue Dateien geöffnet oder Dateien geschlossen werden. Die virtuellen CFs haben also einen wirklich globalen Scope. Außerdem vereinfacht sich die Wartung und Weiterentwicklung der CFs, weil nur noch genau eine Version an zentraler Stelle vorliegt.

Die Aufgabe der neuen Funktion MBS(“FM.CF”) ist es, den Zugriff auf das Dictionary in einer eleganten Weise zu ermöglichen. Und zwar so, dass die Parameter-Übergabe an die Custom Functions sauber aufgetrennt und korrekt übersetzt werden. Im Hintergrund wird der in Textform vorliegende Code per “Evaluate”-Funktion übersetzt. Dazu gibt es eine Notation in Kommentarzeilen, welche beliebig viele Funktionsparameter in die Variablen des Funktions-Ausdrucks überträgt.

Es wird sicher spannend sein, welche neuen Wege für die Implementierung von Funktionen sich mit diesem nützlichen Werkzeug noch verwirklichen lassen. Die Euphorie der anwesenden Entwickler war jedenfalls geweckt!

Infos zur Funktion MBS(“FM.CF”)
https://www.mbsplugins.eu/FMCF.shtml