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

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

Datensätze suchen, (API-Docs. siehe hier) :

// search in layout 'yourlayout':

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

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

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.

 

     

Unterseiten