Zugriff auf die Filemaker Data API
todo4teams verfügt über eine eigene Client-Implementierung, um mit Filemaker-Datenbanken über die Filemaker Data API Daten auszutauschen.
Beispiel, Client erzeugen:
// register client class:
var FmDataAPIClient = Java.type('com.proxemo.xutl.filemaker.FmDataAPIClient');
// create and initialize client:
var fmClient = new FmDataAPIClient('https://your.filemakerserver.com', 'yourusername', 'yourpassword', 'yourdatabasename');
// retrieve record with id 109 from layout 'yourlayout':
var jo = fmClient.get('yourlayout','109');
// get attribute with name 'lastname':
var lastname = jo.getString('lastname');
var FmDataAPIClient = Java.type('com.proxemo.xutl.filemaker.FmDataAPIClient');
// create and initialize client:
var fmClient = new FmDataAPIClient('https://your.filemakerserver.com', 'yourusername', 'yourpassword', 'yourdatabasename');
// retrieve record with id 109 from layout 'yourlayout':
var jo = fmClient.get('yourlayout','109');
// get attribute with name 'lastname':
var lastname = jo.getString('lastname');
Die get-Methode liefert ein Ergebnis vom Typ net.sf.json.JSONObject, siehe hier.
Neuen Datensatz in filemaker speichern:
// register type for row object:
var JSONObject = Java.type('net.sf.json.JSONObject');
// create object to store:
var row = new JSONObject();
row.setString('firstname', 'John');
row.setString('lastname', 'Smith');
// send to Filemaker:
var recordId = fmClient.create('yourlayout', row);
println('Created row with id ' + recordId);
var JSONObject = Java.type('net.sf.json.JSONObject');
// create object to store:
var row = new JSONObject();
row.setString('firstname', 'John');
row.setString('lastname', 'Smith');
// send to Filemaker:
var recordId = fmClient.create('yourlayout', row);
println('Created row with id ' + recordId);
Datensätze suchen, (API-Docs. siehe hier) :
// search in layout 'yourlayout':
var jsonArray = fmClient.find('yourlayout', '{"query":[{"lastname": "=Smith", "firstname" : "=Max"}]}');
var jsonArray = fmClient.find('yourlayout', '{"query":[{"lastname": "=Smith", "firstname" : "=Max"}]}');
Das Ergebnis ist vom Typ JSONArray.
Datensatz ändern: (Parameter: layout, Entity-Id und JSONObject mit zu ändernden Attributen:
// register type for row object:
var JSONObject = Java.type('net.sf.json.JSONObject');
// object/attributes to update:
var row = new JSONObject();
row.setString('firstname', 'Johnathan');
// send to Filemaker:
fmClient.update('yourlayout', '109', row);
println('Created row with id ' + recordId);
var JSONObject = Java.type('net.sf.json.JSONObject');
// object/attributes to update:
var row = new JSONObject();
row.setString('firstname', 'Johnathan');
// send to Filemaker:
fmClient.update('yourlayout', '109', row);
println('Created row with id ' + recordId);
Einzelnen Datensatz abrufen:
...wurde im ersten Beispielcode bereits gezeigt: Parameter: Layout-Name und Entity-Id:
// retrieve record with id 109 from layout 'yourlayout':
var jo = fmClient.get('yourlayout','109');
// get attribute with name 'lastname':
var lastname = jo.getString('lastname');
var jo = fmClient.get('yourlayout','109');
// get attribute with name 'lastname':
var lastname = jo.getString('lastname');
Der Upload von Binärdateien erflgt so:
var status = fmClient.uploadFile('yourlayout', entityId, uploadFieldName, uploadFileData, fileName);
uploadFileData ist dabei ein Byte-Array mit dem Dateiinhalt.