Warenkorb
0
Wagen 0
Telefonische Beratung +49 (0) 441-30 43 76 40
Bei der Nutzung von FileMaker-Datenbanken im Netzwerk kann die Anforderung entstehen, Vorgänge auf Abruf oder automatisch zeitgesteuert von einem Client im lokalen Netzwerk ausführen zu lassen. Die Anwendungsbereiche einer Vorgangsmaschine können sehr vielfältig sein. Wenn Ihre FileMaker-Datenbank einen Zugriff von außen über WebDirect erlaubt, können Sie mit einer Vorgangsmaschine beispielsweise Dokumente erstellen und als PDF-Datei zum Download bereitstellen. Da der Vorgang auf einem Client in Ihrem lokalen Netzwerk ausgeführt wird, können erstellte Dateien problemlos auf einem Netzlaufwerk innerhalb des lokalen Netzwerks gespeichert werden. Ein anderes Anwendungsgebiet sind sogenannte Cronjobs – also Vorgänge, die zu einem vordefinierten Zeitpunkt und ggf. in bestimmten Intervallen von der Vorgangsmaschine ausgeführt werden. Wie Sie eine einfache Vorgangsmaschine mit zeitgesteuerten Cronjobs und Ausführungsprotokoll in FileMaker realisieren können, erfahren Sie in diesem Beitrag.
Inhaltsverzeichnis
Ausgangsbasis für eine Vorgangsmaschine ist ein eigener Mac oder Windows-PC mit installiertem FileMaker-Client. In FileMaker ist ausschließlich ein Layout (aut.Vorgänge) aufgerufen, das mit einem Script-Trigger versehen wurde. Sobald in der Tabelle des Layouts aut.Vorgänge ein neuer Datensatz erzeugt wird, beginnt die Vorgangsmaschine mit der Bearbeitung des im Datensatz gelieferten Vorgangs.
Um Vorgänge auszuführen und als Protokoll speichern zu können, benötigen Sie zunächst zwei neue Datentabellen:
Die Tabelle Vorgänge enthält normalerweise keine Datensätze und wird scriptgesteuert in dem Moment mit einem Datensatz befüllt, wenn die Vorgangsmaschine einen bestimmten Vorgang ausführen soll. Sobald der Vorgang ausgeführt wurde, wird ein neuer Datensatz im Protokoll erstellt und der Datensatz in der Tabelle Vorgänge wieder gelöscht.
Damit die Vorgangsmaschine in Echtzeit erfährt, daß ein neuer Vorgang auszuführen ist, benötigen wir ein entsprechendes Layout, das Datensätze aus der Tabelle Vorgänge anzeigt. In unserer Beispieldatei heißt dieses Layout aut.Vorgänge. Dieses Layout besitzt einen Layout-Script-Trigger (BeiDatensatzLaden), der das Script zur Bearbeitung des Vorgangs ausführt, sobald sich ein neuer Datensatz in der Tabelle Vorgänge befindet.
Wenn ein neuer Datensatz zur Tabelle Vorgänge hinzugefügt wird, führt die Vorgangsmaschine automatisch das Script lay.Vorgangsmaschine mit dem Script-Trigger trigger.Layout aus. Voraussetzung dafür ist, daß sich die Vorgangsmaschine über den gesamten Zeitraum auf dem Layout aut.Vorgänge befindet, da nur dieses Layout über den eingerichteten Script-Trigger verfügt.
Auf der Vorgangsmaschine können Sie übrigens automatisch dafür sorgen, daß der Client nach dem Start Ihrer FileMaker-Datenbank direkt auf das Layout aut.Vorgänge wechselt. Stellen Sie dazu in FileMaker Pro auf der Vorgangsmaschine einen eigenen Benutzer für die Vorgangsmaschine als Standardbenutzer ein (Ablage > Dateioptionen, „Anmelden mit“). Wenn Ihre Lösung über ein Startscript verfügt, können Sie nun ganz einfach den Benutzer für die Vorgangsmaschine abfangen und eine Konstruktion verwenden wie zum Beispiel:
Wenn (Hole (KontoName) = „Vorgangsmaschine“)
Gehe zu Layout [ „aut.Vorgänge“ ]
Ende (Wenn)
Bitte beachten Sie, daß das Drucken und Erstellen von PDF-Dateien seit der FileMaker-16-Plattform auch in WebDirect möglich ist. Wenn Sie also FileMaker Server 16 und FileMaker Pro 16 einsetzen und lediglich Ausdrucke oder PDF-Dateien in WebDirect erzeugen möchten, ist die hier vorgestellte Lösung für Ihre Lösung möglicherweise nicht mehr erforderlich.
Unsere FileMaker-Beispiellösung enthält drei Scripte, mit denen alle Vorgänge auf einfache Weise gesteuert werden können:
lay.Vorgangsmaschine – Dieses Script wird von der Vorgangsmaschine ausgeführt, sobald in der Tabelle Vorgänge ein neuer Datensatz erzeugt wurde. Der Aufruf erfolgt über das Layout aut.Vorgänge mit dem oben genannten Layout-Script-Trigger. Der Teil zur Ausführung von Vorgängen wurde im Script mit dem Parameter trigger.Layout versehen, so daß es möglich ist, dieses Script mit anderen Parametern auch noch für andere Aufgaben zu nutzen.
Da sich der Befehl, den die Vorgangsmaschine ausführen soll, direkt in der Datenbank Vorgänge befindet, können Sie beliebige Vorgangs-Befehle definieren und in diesem Script abarbeiten lassen. Das Grundprinzip ist dabei immer gleich:
Wenn [ Hole(ScriptParameter) = „trigger.Layout“ ]
Script wird nur ausgeführt, wenn es mit dem Script-Parameter trigger.Layout aufgerufen wird.
Wenn [ Vorgänge::Befehl = „Daten senden“ ]
Nachfolgendes Script wird nur ausgeführt, wenn der übermittelte Befehl Daten senden lautet.
Ihr Vorgang
Hier können Sie einen beliebigen Vorgang programmieren
Datensatz/Abfrage löschen [Mit Dialog: Aus]
Löscht den abgearbeiteten Datensatz aus der Tabelle Vorgänge
Script ausführen [ „ts.Vorgangsprotokoll“; Parameter: … ]
Fügt einen neuen Datensatz in das Vorgangsprotokoll ein unter Berücksichtigung aller im Script vorhandenen Variablen.
Ende (wenn)
Ende (wenn)
ts.Vorgang_eintragen – Mit diesem Script tragen Sie einen beliebigen Vorgang in die Tabelle Vorgänge ein. Dieses Script können Sie also von einer beliebigen Stelle aus Ihrer Datenbank heraus aufrufen. Alle verwendeten Befehle können auch in FileMaker Go oder in WebDirect ausgeführt werden. Das Script nimmt in unserem Beispiel vier Script-Parameter an: Befehl, E-Mail, Daten-ID und den Benutzernamen. Diese vier Parameter werden im Laufe des Scripts einfach als neuer Datensatz in die Tabelle Vorgänge eingetragen. Selbstverständlich können Sie dieses Script individuell erweitern und beispielsweise auch andere Schlüssel wie eine Angebot-ID, Rechnung-ID oder Kunden-ID übermitteln. In diesem Fall müssen Sie die Tabelle Vorgänge und das Vorgangsprotokoll ebenfalls um diese jeweiligen Felder erweitern.
Das Script ist sehr einfach aufgebaut: Im ersten Teil werden die Script-Parameter (getrennt mit Hochstrich) in Variablen geschrieben. Hierfür verwenden wir in unserer Beispieldatenbank die Custom Function „StringSpalten“. Sie können hierfür auch eine andere Technologie verwenden und die Parameter beispielsweise auch als normale Liste übertragen, die Sie im Script mit der Funktion „HoleWert ()“ auslesen können.
ts.Vorgangsprotokoll – Sobald durch das Script ts.Vorgang_eintragen ein neuer Datensatz in der Tabelle Vorgänge erzeugt wurde und sich die Vorgangsmaschine auf dem Layout aut.Vorgänge befindet, wird der Vorgang automatisch durch das Script lay.Vorgangsmaschine abgearbeitet und der Datensatz der Tabelle Vorgänge gelöscht. Daraufhin wird das Script ts.Vorgangsprotokoll mit identischen Variablen aufgerufen, um einen neuen Datensatz im Vorgangsprotokoll anzulegen. Der Aufbau des Scripts ist weitgehend identisch mit dem Script ts.Vorgang_eintragen, mit dem Unterschied, daß der Datensatz im Protokoll und nicht in der Tabelle Vorgänge erzeugt wird.
In manchen Fällen benötigen Sie weitere Stammdaten für einen Vorgang, um beispielsweise Dokumente per E-Mail versenden zu können. Sie werden dann z.B. vordefinieren wollen, welchen Betreff und Text eine entsprechende E-Mail beinhalten soll. Für diesen Zweck haben wir in unserer Beispiellösung die Datentabelle Vorgangsstamm angelegt. Jeder Datensatz in dieser Tabelle entspricht den Stammdaten für einen Vorgang. Der Wert im Feld Name_Vorgang entspricht dem Namen eines Vorgangs, wie er auch durch das Script ts.Vorgang_eintragen verwendet wird.
Bei Bedarf können Sie in den Vorlagetexten „E-Mail Betreff“ und „E-Mail Text“ Platzhalter definieren, die Sie in den Teilscripten des Scriptes „lay.Vorgangsmaschine“ durch echte Daten ersetzen können. Beide Texte werden in unserem Beispielscript per SQL-Query in die Variablen $email_betreff und $email_text geschrieben. Möchten Sie in einer Textvorlage beispielsweise einen Platzhalter {Name_Kunde} ersetzen, erweitern Sie die SQL-Query in diesen beiden Variablendefinitionen um den ‚Austauschen ( )‘-Befehl:
Variable setzen [$email_text; Wert: Austauschen ( SQL-Query; „{Name_Kunde}“; Tabelle::Name_Kunde) ]
Auf diese Weise können Sie beliebig viele Platzhalter in Ihren E-Mail-Vorlagen verwenden, die Sie in den Variablendefinitionen für die Variablen $email_betreff und $email_text ganz einfach durch echte Daten ersetzen können.
Unsere Beispieldatei für eine Vorgangsmaschine haben wir zusätzlich mit der Möglichkeit ausgestattet, zeitlich gesteuerte Cronjobs zu bearbeiten. Das Start- und Enddatum, die gewünschte Uhrzeit sowie das Intervall können im Vorgangsstamm definiert werden. Für die Nutzung dieser Funktion ist die Verwendung des MBS FileMaker Plugins erforderlich, da der Befehl ‚FM.RunScript‘ benötigt wird. Alternativ kann auch der Befehl ‚BE_ExecuteScript‘ des kostenlos erhältlichen BaseElements Plugins verwendet werden.
Alle Cronjobs werden vom Script cron.Vorgangsmaschine ausgeführt, das Sie über ein Timer-Script beispielsweise alle zehn Minuten aufrufen können. In unsere Beispiellösung haben wir ein Script cron.Timerscript integriert, das die Ausführung des Script cron.Vorgangsmaschine alle 600 Sekunden, also alle 10 Minuten, anstößt. Dieses Script können Sie beispielsweise unter Abfrage des Benutzernamens in das Startscript Ihrer Lösung integrieren, so daß der Timer automatisch gestartet wird, wenn der Benutzer der Vorgangsmaschine angemeldet ist.
Das Script cron.Vorgangsmaschine wechselt zunächst in das Layout Vorgangsstamm und ruft alle aktiven Cronjobs auf. Daraufhin beginnt eine Ausführungsschleife, in der für jeden gefundenen Cronjob überprüft wird, ob eine Ausführung fällig ist. Wenn ja, wird der entsprechende Cronjob ausgeführt.
Für Cronjobs können Sie die Ausführung beliebiger Scripte und ggf. entsprechender Script-Parameter definieren. Ein Cronjob führt also keine Teilscripte des Scripts lay.Vorgangsmaschine aus, sondern Sie können im Vorgangsstamm ein beliebiges Script samt Parameter für einen Cronjob definieren. Ein Cronjob kann also theoretisch beliebige Scripts aus Ihrer FileMaker-Lösung zeitgesteuert ausführen.
Unsere Beispieldatei enthält alle im Beitrag genannten Scripte zur Integration in eigene FileMaker-Lösungen. Die in der Beispiellösung enthaltene Tabelle „Datentabelle“ dient lediglich zu Demonstrationszwecken und soll Datentabellen aus Ihrer eigenen FileMaker-Lösung entsprechen.
Im Rahmen einer offenen Lizenz können Sie dieses Beispiel einer Vorgangsmaschine problemlos auch in das gFM-Business ERP-System integrieren. Besitzer einer Lizenz von gFM-Business Custom können die Funktionalität einer Vorgangsmaschine durch uns in ihre Lösung integrieren lassen.
Scripte lassen sich einfach über die Zwischenablage von einer FileMaker-Lösung in eine andere Lösung übertragen. Öffnen Sie einfach den Dialog Scripts verwalten, markieren Sie das gewünschte Script mit der Maus und kopieren Sie das Script in die Zwischenablage per Menü [Bearbeiten – Kopieren] oder Tastenkombination [Strg/Cmd-C]. Öffnen Sie daraufhin in der Ziel-Lösung den gleichen Dialog und fügen das zuvor kopierte Script einfach per Menübefehl [Bearbeiten – Einfügen] wieder ein.
Tabellen können auf mehrere Arten in eine bestehende Lösung eingefügt werden. Der einfachste Weg ist der Import der Tabelle über die Schaltfläche [Importieren…] im Dialog Datenbank verwalten. In einem nachfolgenden Dialog können dann alle Tabellen ausgewählt werden, die aus der Quell-Lösung importiert werden sollen. Diese Methode eignet sich also besonders, wenn mehrere Tabellen gleichzeitig importiert werden sollen. Soll nur eine Tabelle importiert werden, kann dies wie ein Script auch über die Zwischenablage erfolgen. Soll eine Tabelle samt Daten importiert werden, kann dies mit dem Befehl [Ablage/Datei > Datensätze importieren > Datei] erfolgen. Im Import-Dialog muß dann als Zieltabelle Neue Tabelle angegeben werden.
Wertelisten können einfach über die Zwischenablage von einer FileMaker-Lösung in eine andere Lösung importiert werden. Öffnen Sie einfach den Dialog unter [Ablage/Datei > Verwalten > Wertelisten], markieren Sie die gewünschte Werteliste mit der Maus und kopieren Sie die Werteliste in die Zwischenablage per Menü [Bearbeiten – Kopieren]oder Tastenkombination [Strg/Cmd-C]. Öffnen Sie daraufhin in der Ziel-Lösung den gleichen Dialog und fügen die zuvor kopierte Werteliste per Menübefehl [Bearbeiten – Einfügen] wieder ein.
Klicken Sie im Dialog [Ablage/Datei > Verwalten > Eigene Funktionen…] auf die Schaltfläche [Importieren] und wählen daraufhin die Beispieldatei aus. Wählen Sie im nachfolgenden Dialog die gewünschten eigenen Funktionen aus und bestätigen den Dialog. Bitte beachten Sie, daß diese Funktion nur in FileMaker Pro Advanced, nicht jedoch in FileMaker Pro zur Verfügung steht.
Claris hat heute die aktualisierte Version FileMaker 19.3 mit einigen neuen Funktionen veröffentlicht. Die neue Version liegt in Universal Binary vor und läuft auch nativ auf Apple Silicon (M1) Prozessoren. FileMaker unterstützt im Webviewer nun den Microsoft Edge-Browser inklusive verbesserter Ansicht von PDF-Dateien. FileMaker Server kann ab sofort auch auf…
Pressemitteilung: FileMaker stellt den Mitgliedern seines Technical Networks ein weiteres FileMaker Trainingsmodule-Starterkit kostenlos zur Verfügung. Es besteht aus drei bereits bisher gern genutzten Einheiten der FileMaker Trainingsmodule zu FileMaker 12. Das Technical Network ist eine kostenfreie Community, mit der Entwickler ihr FileMaker-Fachwissen erweitern und sich gegenseitig austauschen können. Das Trainingsmodule-Starterkit umfasst…
Da alle Betriebssysteme in den vergangenen Jahren immer häufiger zahlreichen Angriffen durch Schadsoftware ausgesetzt waren, haben die Hersteller reagiert und entsprechende Sicherheitsmaßnahmen in ihre Betriebssysteme integriert. So enthält das Apple-Betriebssystem Mac OS X (seit 10.12 "macOS") seit Mac OS X 10.7 "Lion" den Systembestandteil "Gatekeeper", der das Ausführen unsignierter Programme…
Hinzufügen von {{itemName}} zum Warenkorb
Hinzugefügt {{EinkaufsName}} zum Warenkorb