Ausführen von Scripts auf FileMaker Server und FileMaker Cloud
Scripts in Dateien, die von FileMaker Server und FileMaker Cloud bereitgestellt werden, werden gewöhnlich auf dem Client ausgeführt. Sie können jedoch ein Script auf dem Server (ein serverseitiges Script) ausführen, indem Sie Folgendes verwenden:
-
den Scriptschritt „Script auf Server ausführen“ in einem Script, das auf einem Client oder auf dem Host ausgeführt wird
-
den Scriptschritt „Script auf Server mit Callback ausführen“ in einem Script, das auf einem Client ausgeführt wird
-
einen Zeitplan (siehe die FileMaker Server Hilfe oder die FileMaker Cloud Hilfe)
Unterschiede bei der Ausführung von serverseitigen Scripts
Ein Script, das auf eine der obigen Methoden gestartet wird, wird von der FileMaker Script Engine (FMSE), einer Komponente von FileMaker Server und FileMaker Cloud, ausgeführt. Bei der FMSE handelt es sich um einen Client, der jedes Script in einer separaten Sitzung auf dem Server ausführt. Daher gilt für serverseitige Scripts:
-
Sie verfügen nicht über den Kontext des Clients (aktuelles Layout, Ergebnismenge, Sortierfolge, Datensatz, globale Feldvariablen oder Werte lokaler oder globaler Variablen).
Mithilfe des Scriptparameters im Scriptschritt „Script auf Server ausführen“ können Sie Informationen über den Kontext des Clients übergeben. Das serverseitige Script kann anhand der Informationen in Scriptschritten wie Scriptschritt „Gehe zu Layout“ und Scriptschritt „Ergebnismenge suchen“ das Layout und die Ergebnismenge angeben, das bzw. die beeinflusst werden soll.
-
Sie unterstützen Scriptparameter und Scriptergebnisse mit bis zu 1 Million Zeichen.
-
Sie können nur auf andere FileMaker Pro-Dateien zugreifen, wenn die beiden folgenden Situationen gegeben sind:
-
Die Dateien befinden sich auf demselben Host.
-
Die Dateien wurden bereits von dem Client geöffnet, der das serverseitige Script gestartet hat, oder wurden mit einem Kontonamen und einem Passwort im Dialogfeld „Dateioptionen“ der Datei eingerichtet.
-
Serverseitige Scripts werden auf dieselbe Weise ausgeführt, unabhängig davon, wie sie gestartet wurden. Allerdings gelten folgende Ausnahmen:
-
Ein Client, der den Scriptschritt „Script auf Server ausführen“ verwendet, hat die Option, auf die Beendigung des Scripts durch den Server zu warten und das Ergebnis mithilfe der Funktion „Hole ( ScriptErgebnis )“ zu erfassen.
-
Ein Zeitplan kann eingerichtet werden, das laufende Script zu beenden, wenn das angegebene Zeitlimit erreicht wird.
Umgang mit nicht unterstützten Scriptschritten
Viele Scriptschritte werden durch die FMSE unterstützt. Allerdings wird durch einen nicht unterstützten Scriptschritt Fehler 3 („Befehl nicht verfügbar“) zurückgegeben, der nicht unterstützte Schritt wird ausgelassen und das Script fährt mit dem nächsten Schritt fort. Um nicht unterstützte Schritte zu behandeln, kann Ihr Script den Scriptschritt „Wenn“ in folgenden Kombinationen nutzen:
-
Die Funktion „Hole ( LetzteFehlerNr )“ nach einem Schritt, um zu prüfen, ob dieser Schritt unterstützt wird, und ggf. stattdessen unterstützte Schritte auszuführen. Beispielsweise wird der Scriptschritt „Datei öffnen“ durch die FMSE nicht unterstützt, d. h. das folgende Script würde auf dem Server diesen Schritt auslassen und im Ergebnis „nicht unterstützt“ liefern.
KopierenDatei öffnen [Ausgeblendet öffnen: Aus; "Rechnungssicherung"]
Wenn [ Hole ( LetzteFehlerNr ) = 3 ]
Aktuelles Script verlassen [ Textergebnis: "nicht unterstützt" ]
Ende (wenn)
-
Die Funktion „Hole ( ProgrammVersion )“ vor weiteren Schritten, um zu prüfen, ob das Script auf FileMaker Server oder FileMaker Cloud ausgeführt wird, und dann nur unterstützte Schritte auszuführen. Beispiel:
KopierenWenn [ MusterAnzahl (
Hole ( ProgrammVersion ) ; "Server" ) > 0 ]
# Mit Scriptschritten fortfahren, die die FMSE unterstützt
Ende (wenn)
Um zu sehen, welche Scriptschritte durch die FMSE unterstützt werden, öffnen Sie im Scriptarbeitsbereich in FileMaker Pro ein Script, klicken auf und wählen dann Server. Nicht unterstützte Scriptschritte werden in einer anderen Farbe angezeigt. Sie können auch für jeden Scriptschritt in der Kompatibilitätstabelle unter Scriptschritte-Referenz nachsehen.
Gründe für das Ausführen eines Scripts auf dem Server
-
Höhere Leistung durch geringeren Netzwerkverkehr zwischen Client und Server
-
Auslagern langwieriger Aufgaben von langsameren Clients auf einen schnelleren Server
-
FileMaker Go-Clients die Nutzung von Plugins ermöglichen, die auf FileMaker Server, aber nicht in FileMaker Go unterstützt werden
-
Verwendung der Scriptschritte „Datensätze importieren“ oder „SQL ausführen“ mit einer ODBC-Datenquelle, die den DSN des Servers nutzt
Hinweise
-
Wenn Datensätze von einem Client gesperrt sind, können serverseitige Scripts nicht auf ungespeicherte Daten zugreifen oder den Inhalt dieser Datensätze ändern.
-
Beim Ausführen serverseitiger Scripts werden die Dateien, die die Scripts enthalten, geöffnet und geschlossen. Daher werden der Script-Trigger „BeiErstemFensterÖffnen“ beim Scriptstart und der Script-Trigger „BeiLetztemFensterSchließen“ am Scriptende aktiviert.
-
Serverseitige Scripts können mit dem Scriptschritt „Script ausführen“ Teilscripts ausführen, die in derselben FMSE-Client-Sitzung ablaufen, sofern sich diese Teilscripts in Dateien auf demselben Server befinden. Wenn ein Client den Scriptschritt „Script auf Server ausführen“ verwendet, um ein Script auszuführen, das Teilscripts in einer anderen Datei ausführt, muss die Datei mit den Teilscripts bereits vom Client geöffnet sein.
Serverseitige Scripts können zudem den Scriptschritt „Script auf Server ausführen“ auf ähnliche Weise verwenden, mit dem Unterschied, dass das aufgerufene Script in einer separaten FMSE-Client-Sitzung ausgeführt wird. Die Option Auf Beendigung warten funktioniert genauso wie in einem Script, das von einem FileMaker Pro-Client ausgeführt wird, und gibt ein Script-Ergebnis oder einen Fehlercode an den Aufrufer zurück, in diesem Fall an den aufrufenden FMSE-Client. Wenn diese Option jedoch deaktiviert ist, kann das aufrufende Script mit der Ausführung fortfahren und das aufgerufene Script kann in einem eigenen Thread ausgeführt werden.
-
Serverseitige Scripts können zudem den Scriptschritt „Script auf Server ausführen“ auf ähnliche Weise verwenden, mit dem Unterschied, dass das aufgerufene Script in einer separaten FMSE-Client-Sitzung ausgeführt wird.
-
Scripts, die von „Script auf Server ausführen“ ausgeführt werden, nutzen dasselbe Konto wie der Client. Scripts, die von einem Zeitplan ausgeführt werden, verwenden das im Zeitplan angegebene Konto.
-
Serverseitige Scripts können auf einem FileMaker-Client keine Warnmeldungen anzeigen, daher verhalten sie sich stets so, als wäre der Scriptschritt „Fehleraufzeichnung setzen“ auf „Ein“ gesetzt. Verwenden Sie in serverseitigen Scripts die Funktion „Hole ( LetzteFehlerNr )“, um Fehlerbedingungen zu behandeln. Zu Ihrer Unterstützung bei der Problembehebung werden Fehler auch in das Ereignisprotokoll auf FileMaker Server und FileMaker Cloud geschrieben.
-
Clients können keine serverseitigen Scripts stoppen. Jedoch lässt sich ein serverseitiges Script in folgenden Fällen anhalten:
-
Ein Server-Administrator stoppt das Script, das als separater Client erscheint, dessen Verbindung sich in Admin Console für FileMaker Server oder FileMaker Cloud trennen lässt.
-
Das laufende Script überschreitet das Zeitlimit, das im Zeitplan, durch den das Script gestartet wurde, angegeben ist.
-
Das Script trifft auf einen unbekannten Scriptschritt (siehe Scriptschritt „AnwenderAbbruchZulassen setzen“).
Siehe FileMaker Server Hilfe bzw. FileMaker Cloud Hilfe.
-
-
In serverseitigen Scripts geben Funktionen in Bezug auf Hardware wie „Hole ( SystemIPAdresse )“ Informationen von der Datenbank-Server-Komponente FileMaker Server und FileMaker Cloud zurück, nicht vom Client.
-
Für serverseitige Scripts ist der Dateizugriff auf den Ordner „Dokumente“ und den temporären Ordner beschränkt. Weitere Informationen finden Sie unter Pfade in serverseitigen Scripts.
-
In serverseitigen Scripts können Scriptschritte mit aktivierter Option Mit Dialog keine Dialogfelder anzeigen und geben unter Umständen einen Fehler zurück. Um diesen Fehler zu vermeiden, deaktivieren Sie Mit Dialog in serverseitigen Scripts.