Russell Watson gave a presentation at the 8th FileMaker Conference in Salzburg from October 12-14, 2017 about modularity in FileMaker 16. He discussed how FileMaker 16 offers new possibilities for modularity through features like card windows and dynamic data sources. He demonstrated how to build modular widgets using callback scripts, which allow a module to call scripts in another file to handle events. While callback scripts provide a better solution than timer scripts, he noted that using Perform Script by Name to call scripts across files is currently a proof of concept and not guaranteed in production systems if script IDs get too high.
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
FileMaker Modularity in fm16
1. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
www.filemaker-konferenz.com
New Possibilities Neue Möglichkeiten
and more und mehr.....
Russell Watson
"MrWatson"
Modularity Modularität in fm16
2. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Russell Watson
“MrWatson”
* The FileMaker Certified Developer logo is a trademark of FileMaker, Inc. in the United States and other countries.
* Thanks to Klemens Kegebein of the K&K Verlag for permission to use his poster image
BA Hons
Media Studies & German
Sussex University, UK
BSc Informatik
Freie Universität, Berlin
mrwatson-gbs
3. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Menu
1.Modularity Modularität
2.Card Windows Kartenfenster
3.How to make modular widgets
Wie man modulare Baukasten baut
4.Isn't there a better way to do this?
Gibt's keine bessere Methode?
5.One more thing… One more thing…
6.Question time Fragen / Antworten / Diskussion
4. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Modularity Modularität
5. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Modularity Modularität
• What is a module? Was ist ein Modul?
• Building block Baustein
• Component Komponent
• Function Funktion
Function
Component
Black Box
• Single Simple Unit eigenständige einfache Einheit
• Separate separat
• Independent unabhängig
• Interfaces Schnittstellen
pp
6. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
What possibilities does fm16 offer?
Welche Möglichkeiten bietet fm16 an?
Modularity Modularität
7. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Add a module in FileMaker 15
FileDataCFScriptsLayouts
File B
(Module)
File A
(Your App)
f1 f2 f3
A 1 ?
B 2 !
C 3 @
ScriptAPI
f( X ) f( X )
Script calls
Traditional ⟺ parameters
Layout
ext. File Ref.
/ Static Data
Source
BUILD
IN
Scripts
8. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Add a module in FileMaker 16
FileDataCFScriptsLayouts
File B
(Module)
Dynamic Data SourceFile A
(Your App)
f1 f2 f3
A 1 ?
B 2 !
C 3 @
ScriptAPI
f( X ) f( X )
Script calls
JSON Params
Card
windows
Trend: Avoid CFs → sharability ↑
If possible data via JSON params
just
call
9. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
fm16 = Powerful modular functionality!
FileDataCFScriptsLayouts
File B
(Module)
Dynamic Data SourceFile A
(Your App)
Script
API
Script calls
Card
windows
10. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Card Windows Kartenfenster
Layout
* Cal-Picker from John Renfrew
11. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Some great card window examples
Coole Kartenfenster Beispiele
• LOgiCATOR / Mark Scott / Beezwax
• https://blog.beezwax.net/2017/05/09/introducing-logicator-a-modular-
search-interface-for-filemaker-16/
• https://blog.beezwax.net/2017/06/06/introducing-logicator-part-2-
filemaker-16-card-windows-and-modular-design/
• https://blog.beezwax.net/2017/10/12/logicator-part-3-ready-set-integrate-
into-your-filemaker-apps/
• Date picker / John Renfrew
• https://community.filemaker.com/docs/DOC-8288
• https://community.filemaker.com/docs/DOC-8751
• Widgets / Todd Geist / geistinteractive.com
• Video: https://www.youtube.com/watch?v=mXpcD9Yf6Ko
12. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Card Windows
• Pioneering work by John Renfrew
• Function-Separation Model
• Posts on LinkedIn:
13. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Very Quick Demo
14. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Troubled Relationship
Parent-Child Window
• Child has NO knowledge of parent, no
• Get( ParentWindowFile )
• Get( ParentWindowWidth )
• Positioning of card window
• Only FIRST layout centres correctly
• Modal
• Master Window is frozen
• Communication Child → Parent
window problematic…
15. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
How to make modular widgets
Wie man modulare Baukasten baut
Widget
16. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Simplest Widget → ScriptResult
File A
your
app
Simple
Widget
ScriptAPI
Return ScriptResult
Script Pause
Call Script
• Simplest solution…
• …IFF the process can occur in a one script round-trip
• (Script Pause OK, but no Script HALT)
17. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
LOgiCATOR
• Simple solution for a single file App
• but not scalable for multi-fie solutions…
File A
your
app
LOgiCATOR
ScriptAPI
ScriptAPI
File B
File C
File D
File E
File F
File G
File H
File I
File J
File K
18. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
File A
your
app
File A
your
app
CalDatePicker
ScriptAPI
Open Date Picker
Timer
script
polls
result
Return Date to Original
CalDatePicker
• This is more like functional programming: CalDatePicker is a black box.
• Polling with timer scripts, however, is unpleasant ...
• …and the dynamic data source can run the wrong script, if the target file changes…
Dynamic Data Source
19. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Isn't there a better way to do this?
Gibt's keine bessere Methode?
20. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
File A
your
app
Widget
ScriptAPI
Start script
What we need is CALLBACK SCRIPTS…
• …just like other programming languages have…
"On Event X, call File: "A", Script: "Handle X", Param: 1
"On Event Y, call File: "A", Scrip:t "Handle Y", Param: 2
(JSON DATA)
Callback
ScriptAPI
Handle X
Handle Y
Event X
Event Y
JSON
21. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Demo CALLBACK SCRIPTS
22. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
How does it do that?
23. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
PSBN - Perform Script [ By Name
24. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatsonFileDataScriptsLayouts
File A
your
app
File W .
Card-Window
Widgets .
Callback
ScriptAPI
JSON Callback
Script info
ScriptAPI
JSON
Layout
Callback
Script info
JSON
File B
ScriptAPI
Module
D, E, F
File C File 50
Script
ID?
25. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Achtung!
PSBN is a Proof of Concept
and is not guaranteed
on production systems*!
* If the internal ID of the script is too high, PSBN cannot perform the script
26. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Finally, because THIS will be MOST
IMPORTANT in coming years…
Scripts
Script
API
Script calls
one more thing…
27. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
FileMakerDoc
is coming
28. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Modularität in fm16 von MrWatson
Thank You
“MrWatson”
mrwatson-gbs
Questions?
29. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017
Vortrag und Sprecher
Vielen Dank unseren Sponsoren