www.filemaker-konferenz.com
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung
DI (FH) DI Bernhard Schulz
www.filemaker-konferenz.com
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Was Sie erwartet
• Geschichte


• Implementierungsdetails


• Codebeispiele


• Praxisbeispiele
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FileMaker Schnittstellen
• Lasso (1995)


• CDML (Claris Data Markup Language), FileMaker 4.1


• Requests mit speziellen Parametern:


• FMPro?-DB=db.fp5&-Format=query.htm&-View


• Response als HTML oder XML


• Hat damals gut funktioniert, war aber sehr „speziell“
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
fx.php


FileMaker 5 bis heute?
• PHP Abstraktionslayer mit fx.php


• Kostenlos und Open Source


• Erste Schulung in Salzburg Februar 2003


• „Schwer“ in der Handhabung


• Keine „richtige“ Objektorientierung


$InstanceName = new FX($serverIP,$serverPORT);


$InstanceName=SetDBData (‚guestbook.fp5','www','10')


$InstanceName->AddDBParam('Vorname', 'Bernhard','eq');

$InstanceName-AddDBParam('Nachname', 'Schulz','eq');

$ReturnedData = $InstanceName-FMFind();


Akzeptable Abstraktion von CDML/XML
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM-and-PHP


FileMaker 5 bis 12 und heute
• PHP Abstraktionslayer mit FM-and-PHP


• Kostenlos und Open Source


• Entstand im Sommer 2003


• https://www.schubec.com/de/fm-and-php.php


• Deutlich einfacher als fx.php


• Keine „richtige“ Objektorientierung


• Gute Abstraktion von CDML/XML


• CDML Kenntnisse waren von Vorteil
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM API 4 PHP


FileMaker 12 bis 17 und heute
• FileMaker Server wurde ab Version 13 mit der FM API 4 PHP ausgeliefert


• Obfuscated PHP Code


• Nutzung von CDML/XML im Hintergrund


• aber quasi unsichtbar


• CDML Kenntnisse für Profi-Debugging


• Objektorientiert programmiert


• Alter, schlechter PHP Code


• für damalige Zeit OK


• wirft gefühlte 1.000 Fehler auf heutigen


Systemen
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM API 4 Java


FileMaker 12 bis 17 und heute
• Java Bibliothek mit ähnlichem Aufbau wie die FM API 4 PHP


• Kostenlos und Open Source


• Vorstellung auf der FMK 2012 in Salzburg


• Tausendfach täglich im Einsatz
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM API 4 PHP


FileMaker 12 bis 17 und heute
• Deprecated


• FM API 4 PHP


• XML Schnittstelle


• wird nicht mehr gepflegt


• Muss für FileMaker Server 19 auf der Kommandozeile aktiviert werden


• Für FileMaker Server 19 Linux NICHT mehr verfügbar
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API


FileMaker bis 17 heute
• JSON / REST Schnittstelle


• Endlich ein Industriestandard


• kein CDML / XML


• Claris bietet keine Client-Implementierung


• viele 3rd Party Implementierungen


• https://support.claris.com/s/article/data-api---admin-
api-packages-wrappers-for-fm-17-x?
language=en_US
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM-DataAPI-4-Java


FileMaker bis 17 heute
• Nutzt die JSON / REST Schnittstelle


• Kostenlos und Open Source


• https://github.com/schube/FileMaker-DataAPI-4-Java


• Das, was zu 90% benötigt wird, wurde umgesetzt


• Wenn mir (oder einem Sponsor) etwas fehlt, ergänze ich es
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API


€€€
• 2 GB pro lizensierten Benutzer und Monat für lesende Zugriffe


• zB FileMaker Server für 5 Benutzer


• 120 GB pro Jahr


• Schreibende Zugriffe und Medienfelder werden nicht gezählt
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API
• REST


• Stateless


• Jedoch, FileMaker Server verlangt vor jeder Abfrage ein Login


• Ausloggen nicht vergessen!


• Das macht die Schnittstelle unnötig langsam!


• oder das Sessionhandling unnötig kompliziert!
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API
• Legen Datensätze an bzw. ändern Datensatz


• gibt nur „OK“ zurück


• Daten müssen mit extra Request gelesen werden


• unnötig langsam
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API
• Je nach Abfrage wird die recordid als Zahl oder als Text zurückgeliefert.


• Kein Problem für untypisierte „Mickymaus“ Programmiersprachen :-)


• Problematisch für statisch typisierte Programmiersprachen wie Java


• Aufruf von Scripts je nach Abfrage als URL Parameter oder als JSON
Parameter im Body


• Client Libraries versuchen diese Probleme so gut es geht zu verstecken


• Medienfelder können pro Abfrage nur einmal heruntergeladen werden
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API
• Uneinheitliches Datumsformat


• Je nach FileMaker Sprache anders


• dd/mm/yyyy


• mm/dd/yyyy


• Fehlt ein Feld am Layout, kommt die Info „Field missing“


• aber welches Feld?????


• ewige Fehlersuche
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API
• Besserer Upload von Medienfelder


• Meist schneller als die alte XML/CDML Schnittstelle
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API 4 Java
try (FMSession fmSession = FMSession.login(fmserver.schubec.com


	
	
	
	
my Database,


	
	
	
	
the User,


	
	
	
	
the Pa$$w0rd)) {


	
	
FMCommandWithData fmAdd = new FMAddCommand(my layout)


	
	
	
	
	
	
	
	
	
	
	
	
	
	
.setField(Details, 3)


	
	
	
	
	
	
	
	
	
	
	
	
	
	
.setField(Kategorie, Test);


FMResultFMRecordsResponse result = fmSession.execute(fmAdd);


	
	
} catch (FileMakerException e) {


	
	
	
fail(Should not have thrown any exception, e);


	
	
}
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API 4 Java
• Mehr Beispiele unter


https://github.com/schube/FileMaker-DataAPI-4-Java/tree/main/src/test/
java/com/schubec/libs
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
FM Data API 4 Java
• Schnittstelle ist gut und ausreichend performant nutzbar


• Es ist eher unwahrscheinlich, wenn man das jährliche Datenvolumen
erreicht


• Caching implementieren!
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel BINGOOO Shop
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel Middleware
• App Entwicklung für iOS nativ


• Profi-Entwickler (keine „Studentenbude“)


• Daten kommen aus FileMaker


• Daten landen in FileMaker


• iOS Team hatte noch nie von FileMaker gehört


• „kein Problem, machen wir schon“


• Kunde hatte schon sub-optimale Erfahrung mit anderer externer Firma und
Zugriff auf FileMaker gemacht, die auch „kein Problem“ versprochen hatten
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel Middleware
• FM Middleware auf Java Basis


• Quarkus Framework


• FM Data API 4 Java


• Sämtliche Kommunikation läuft
ausschließlich über die Middleware
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel Middleware
• Swagger / OpenUI ist Schnittstellen-
„Vertrag“ zwischen der Middleware und
der App
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel Middleware
• Testing
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel Middleware
• Logging


• Metriken


• Caching
„at.xxxxxx.app.PriceResource.getPricesTimer: {


p99: 8384.669474,


min: 2825.998712,


max: 9207.493854,


mean: 5749.117974649214,


p50: 5759.044416,


p999: 8384.669474,


stddev: 1162.417488905401,


p95: 8384.669474,


p98: 8384.669474,


p75: 6165.470642,


fiveMinRate: 1.703304674587E-54,


fifteenMinRate: 1.6343398999601892E-19,


meanRate: 0.0038593841636479008,


count: 396,


oneMinRate: 4.0942949358248924E-265,


elapsedTime: 1928587.799624


},
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Live Coding
mvn io.quarkus.platform:quarkus-maven-
plugin:2.9.2.Final:create 


-DprojectGroupId=com.schubec 


-DprojectArtifactId=fmk22demo-backend 


-Dextensions=resteasy


cd fmk22demo-backend
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel Dashboard mit
Exceldownloads
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
FileMaker Data API und Java Anbindung - Bernhard Schulz
Praxisbeispiel Dashboard mit
Exceldownloads
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Titel Vortrag - Name Sprecher
Fragen?
Vielen Dank für Ihr Interesse!
FileMaker Konferenz | Hamburg | 22.-24. Juni 2022
Titel Vortrag - Name Sprecher
Vielen Dank unseren Sponsoren

FMK2022 FileMaker DataAPI und Java von Bernhard Schulz

  • 1.
    www.filemaker-konferenz.com FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung DI (FH) DI Bernhard Schulz
  • 2.
    www.filemaker-konferenz.com FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Was Sie erwartet • Geschichte • Implementierungsdetails • Codebeispiele • Praxisbeispiele
  • 3.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FileMaker Schnittstellen • Lasso (1995) • CDML (Claris Data Markup Language), FileMaker 4.1 • Requests mit speziellen Parametern: • FMPro?-DB=db.fp5&-Format=query.htm&-View • Response als HTML oder XML • Hat damals gut funktioniert, war aber sehr „speziell“
  • 4.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz fx.php FileMaker 5 bis heute? • PHP Abstraktionslayer mit fx.php • Kostenlos und Open Source • Erste Schulung in Salzburg Februar 2003 • „Schwer“ in der Handhabung • Keine „richtige“ Objektorientierung $InstanceName = new FX($serverIP,$serverPORT); $InstanceName=SetDBData (‚guestbook.fp5','www','10') $InstanceName->AddDBParam('Vorname', 'Bernhard','eq'); $InstanceName-AddDBParam('Nachname', 'Schulz','eq'); $ReturnedData = $InstanceName-FMFind(); Akzeptable Abstraktion von CDML/XML
  • 5.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM-and-PHP FileMaker 5 bis 12 und heute • PHP Abstraktionslayer mit FM-and-PHP • Kostenlos und Open Source • Entstand im Sommer 2003 • https://www.schubec.com/de/fm-and-php.php • Deutlich einfacher als fx.php • Keine „richtige“ Objektorientierung • Gute Abstraktion von CDML/XML • CDML Kenntnisse waren von Vorteil
  • 6.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM API 4 PHP FileMaker 12 bis 17 und heute • FileMaker Server wurde ab Version 13 mit der FM API 4 PHP ausgeliefert • Obfuscated PHP Code • Nutzung von CDML/XML im Hintergrund • aber quasi unsichtbar • CDML Kenntnisse für Profi-Debugging • Objektorientiert programmiert • Alter, schlechter PHP Code • für damalige Zeit OK • wirft gefühlte 1.000 Fehler auf heutigen 
 Systemen
  • 7.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM API 4 Java FileMaker 12 bis 17 und heute • Java Bibliothek mit ähnlichem Aufbau wie die FM API 4 PHP • Kostenlos und Open Source • Vorstellung auf der FMK 2012 in Salzburg • Tausendfach täglich im Einsatz
  • 8.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM API 4 PHP FileMaker 12 bis 17 und heute • Deprecated • FM API 4 PHP • XML Schnittstelle • wird nicht mehr gepflegt • Muss für FileMaker Server 19 auf der Kommandozeile aktiviert werden • Für FileMaker Server 19 Linux NICHT mehr verfügbar
  • 9.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API FileMaker bis 17 heute • JSON / REST Schnittstelle • Endlich ein Industriestandard • kein CDML / XML • Claris bietet keine Client-Implementierung • viele 3rd Party Implementierungen • https://support.claris.com/s/article/data-api---admin- api-packages-wrappers-for-fm-17-x? language=en_US
  • 10.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM-DataAPI-4-Java FileMaker bis 17 heute • Nutzt die JSON / REST Schnittstelle • Kostenlos und Open Source • https://github.com/schube/FileMaker-DataAPI-4-Java • Das, was zu 90% benötigt wird, wurde umgesetzt • Wenn mir (oder einem Sponsor) etwas fehlt, ergänze ich es
  • 11.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API €€€ • 2 GB pro lizensierten Benutzer und Monat für lesende Zugriffe • zB FileMaker Server für 5 Benutzer • 120 GB pro Jahr • Schreibende Zugriffe und Medienfelder werden nicht gezählt
  • 12.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API • REST • Stateless • Jedoch, FileMaker Server verlangt vor jeder Abfrage ein Login • Ausloggen nicht vergessen! • Das macht die Schnittstelle unnötig langsam! • oder das Sessionhandling unnötig kompliziert!
  • 13.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API • Legen Datensätze an bzw. ändern Datensatz • gibt nur „OK“ zurück • Daten müssen mit extra Request gelesen werden • unnötig langsam
  • 14.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API • Je nach Abfrage wird die recordid als Zahl oder als Text zurückgeliefert. • Kein Problem für untypisierte „Mickymaus“ Programmiersprachen :-) • Problematisch für statisch typisierte Programmiersprachen wie Java • Aufruf von Scripts je nach Abfrage als URL Parameter oder als JSON Parameter im Body • Client Libraries versuchen diese Probleme so gut es geht zu verstecken • Medienfelder können pro Abfrage nur einmal heruntergeladen werden
  • 15.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API • Uneinheitliches Datumsformat • Je nach FileMaker Sprache anders • dd/mm/yyyy • mm/dd/yyyy • Fehlt ein Feld am Layout, kommt die Info „Field missing“ • aber welches Feld????? • ewige Fehlersuche
  • 16.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API • Besserer Upload von Medienfelder • Meist schneller als die alte XML/CDML Schnittstelle
  • 17.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API 4 Java try (FMSession fmSession = FMSession.login(fmserver.schubec.com my Database, the User, the Pa$$w0rd)) { FMCommandWithData fmAdd = new FMAddCommand(my layout) .setField(Details, 3) .setField(Kategorie, Test); FMResultFMRecordsResponse result = fmSession.execute(fmAdd); } catch (FileMakerException e) { fail(Should not have thrown any exception, e); }
  • 18.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API 4 Java • Mehr Beispiele unter 
 https://github.com/schube/FileMaker-DataAPI-4-Java/tree/main/src/test/ java/com/schubec/libs
  • 19.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz FM Data API 4 Java • Schnittstelle ist gut und ausreichend performant nutzbar • Es ist eher unwahrscheinlich, wenn man das jährliche Datenvolumen erreicht • Caching implementieren!
  • 20.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel BINGOOO Shop
  • 21.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel Middleware • App Entwicklung für iOS nativ • Profi-Entwickler (keine „Studentenbude“) • Daten kommen aus FileMaker • Daten landen in FileMaker • iOS Team hatte noch nie von FileMaker gehört • „kein Problem, machen wir schon“ • Kunde hatte schon sub-optimale Erfahrung mit anderer externer Firma und Zugriff auf FileMaker gemacht, die auch „kein Problem“ versprochen hatten
  • 22.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel Middleware • FM Middleware auf Java Basis • Quarkus Framework • FM Data API 4 Java • Sämtliche Kommunikation läuft ausschließlich über die Middleware
  • 23.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel Middleware • Swagger / OpenUI ist Schnittstellen- „Vertrag“ zwischen der Middleware und der App
  • 24.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel Middleware • Testing
  • 25.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel Middleware • Logging • Metriken • Caching „at.xxxxxx.app.PriceResource.getPricesTimer: { p99: 8384.669474, min: 2825.998712, max: 9207.493854, mean: 5749.117974649214, p50: 5759.044416, p999: 8384.669474, stddev: 1162.417488905401, p95: 8384.669474, p98: 8384.669474, p75: 6165.470642, fiveMinRate: 1.703304674587E-54, fifteenMinRate: 1.6343398999601892E-19, meanRate: 0.0038593841636479008, count: 396, oneMinRate: 4.0942949358248924E-265, elapsedTime: 1928587.799624 },
  • 26.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Live Coding mvn io.quarkus.platform:quarkus-maven- plugin:2.9.2.Final:create -DprojectGroupId=com.schubec -DprojectArtifactId=fmk22demo-backend -Dextensions=resteasy cd fmk22demo-backend
  • 27.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel Dashboard mit Exceldownloads
  • 28.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 FileMaker Data API und Java Anbindung - Bernhard Schulz Praxisbeispiel Dashboard mit Exceldownloads
  • 29.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Titel Vortrag - Name Sprecher Fragen? Vielen Dank für Ihr Interesse!
  • 30.
    FileMaker Konferenz |Hamburg | 22.-24. Juni 2022 Titel Vortrag - Name Sprecher Vielen Dank unseren Sponsoren