Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core JavaScript-API
Mithilfe eines CronJobs führen Sie ein JavaScript in definierten Abständen aus.
CronJob
Ein CronJob ist eine Konfiguration für die regelmäßige Ausführung eines JavaScripts in der MetaDB. Die Log-Informationen für die Überwachung eines CronJobs finden Sie im Support Tool im Bereich Active Folder.
Task
Ein Task wird mithilfe der JavaScript-Bibliothek agorum.task entwickelt. Die Bibliothek erlaubt es, Aufgaben zu automatisieren, und einmalig, zu einem geplanten Zeitpunkt oder regelmäßig auszuführen. Zudem können Tasks parallel ausgeführt werden. Im Workspace bekommen Sie einen Überblick über alle vorhandenen Tasks und können den nächsten Ausführungszeitpunkt einsehen. Die Überwachung erfolgt über das Support Tool im Bereich Base System.
Worker
Ein Worker ist eine Einstellung im Support Tool, die häufig auf einer Suchanfrage basiert. Die Suchtreffer werden mit einem JavaScript weiterverarbeitet. Die Überwachung erfolgt über das Support Tool im Bereich Worker. Im Gegensatz zu CronJobs und Tasks werden Worker sofort ausgeführt, sobald die Situation zutrifft, die den Worker auslöst, etwa wenn ein Suchtreffer gefunden wird. Durch die Suchanfragen kann das System belastet werden. Sie sollten Worker also vor allem dann verwenden, wenn die Änderungen wirklich sofort nach Eintreten einer bestimmten Bedingung durchgeführt werden müssen und nicht auf den nächsten Zeitpunkt einer regelmäßigen Ausführung durch einen CronJob oder Task warten können.
Kriterium | Task/CronJob | Worker |
---|---|---|
Einrichtung | Script-Erstellung durch Entwickler | Oberflächengestützte Einrichtung im Support Tool |
Verwendungszweck | Einmalige oder wiederkehrende Aufgaben. | Unmittelbare Ausführung bei Eintreten der Ausgangssituation. |
Parallelität | Tasks mit verschiedenen IDs können parallel ausgeführt werden. Wiederkehrende, identische Aufgaben werden nach einander gestartet. CronJobs können nur sequenziell ausgeführt werden. | Parallele Ausführung mehrer Worker konfigurierbar. |
Zeitliche Steuerung | Konfigurierbare zeitliche Taktung, bei Nichtverfügbarkeit des Systems wird der Task zum nächstmöglichen Zeitpunkt ausgeführt. | Unmittelbare Ausführung. |
Überwachung | Fehler im agorum core support tool im Log sichtbar. | Fehler im agorum core support tool im Log sichtbar. |
Wann sollten Sie einen CronJob oder einen Task benutzen?
CronJobs sind optimal für regelmäßige, sequenzielle Aufgaben, die in festen Intervallen ausgeführt werden. Tasks eignen sich ebenfalls für wiederkehrende oder einmalige Aufgaben und können zusätzlich parallel ausgeführt werden. Sie bieten Flexibilität und eine gute Fehlerbehandlung.
Wann sollten Sie einen Worker benutzen?
Worker eignen sich für zeitnahe und parallele Aufgaben, insbesondere wenn kontinuierliche Überwachung und sofortige Reaktion erforderlich sind. Sie belasten das System jedoch durch laufende Suchanfragen.
MAIN_MODULE_MANAGEMENT/cronjob/control
[ <Ihr Konfigurationsprojekt> ]
Name | Datentyp | Wert (String) |
---|---|---|
Class | Zeichenkette (String) | agorum.roi.cron.JSCronTaskFactory |
CronTime | Zeichenkette (String) | Beispiele: Immer um 11 Uhr 0 11 * * * Minütlich * * * * * Eingabemöglichkeiten per Generator finden Sie im Web unter dem Stichwort crontime generator. Hinweis: Sollte der CronJob länger laufen als hier angegeben, startet der CronJob seinen Lauf nicht erneut. Wenn Sie etwa eine minütliche Ausführung angeben, der CronJob für die Abarbeitung der Aufgaben jedoch etwa 5 Minuten benötigt, startet der nächste Lauf erst, nachdem der vorherige Lauf beendet wurde. Der CronJob startet also nicht erneut 4 Mal während dieser Zeit. |
ParameterNames | Zeichenkette (String) | Beispiel JS |
ParameterValues | Zeichenkette (String) | Beispiel /agorum/roi/customers/agorum/js/<JavaScript-Datei.js> |
Einen CronJob können Sie so verwenden, dass er wie ein QueryScript-Worker funktioniert. Hierfür passen Sie das JavaScript an.
Im folgenden JavaScript für einen CronJob wird ein Worker nachgebildet. Der CronJob soll Objekte erkennen, aus einem Ordner herausnehmen und in einen anderen Ordner ablegen:
Hinweis: Bei der Query sollten Sie stets ein nicht vererbtes Metadatum prüfen, da bei vererbten Metadaten aufgrund einer Asynchronität ein zeitlicher Versatz existieren könnte.
/* global object */ // this is called from a cronjob let objects = require('common/objects'); let transaction = require('common/transaction'); let metadata = require('common/metadata'); // this is a sample query, put in any query, that should match the objects, that should be handled by this cronjob // after the cronjob has finished, you have to do something, that marks the object, that it is not found by the // the query, otherwise it gets handled again. // This is just an example. You can use any other query, like searching for the existance of a metadata-value or anyhting else... let query = 'inpath:${ID:/agorum/roi/Files/incoming} NOT agorum_file_processed'; // the output folder let target = objects.find('/agorum/roi/Files/done'); objects.query(query).iterate('uuid', data => { transaction(() => { let object = objects.tryFind(data.uuid); // check if object still exists if (object) { // .. do something with the object .. // move it away from incoming-folder, so that it is not found next time, the cronjob runs // remove from all parents objects.remove(object); // move to done folder objects.add(object, [ target ]); metadata({agorum_file_processed: true}).save(object); } }); });
Hinweis: Fehlermeldungen, die während der Ausführung des CronJobs auftreten, erscheinen im Serverlog und nicht im agorum core support tool.
Parameter
Parameter | Beschreibung |
---|---|
query | Definiert den Pfad, aus dem das System die Dateien herausholt. |
target | Definiert den Pfad, in den das System die Dateien verschiebt. |
object | Definiert das Objekt, das das System durch eine UUID finden soll. |