Durchsuchbare Dokumentation aufrufen
Zurück zur Dokumentationsübersicht
Mithilfe eines CronJobs führen Sie ein JavaScript in definierten Abständen aus.
Ziehen Sie einen CronJob einem Worker vor, da ein Worker das System laufend mit Suchanfragen belastet. Ein CronJob wird dagegen zeitlich eingetaktet. Sie können diesen etwa einmal pro Stunde laufen lassen. Der CronJob führt dann intern eine Query aus, ähnlich wie es der Worker machen würde.
Wann sollten Sie einen CronJob benutzen?
Wenn es nicht zeitkritisch ist und es in Ordnung ist, dass die Abarbeitung sequenziell passiert.
Wann sollten Sie einen Worker benutzen?
Wenn es zeitnah passieren soll oder wenn mehrere Threads parallel arbeiten sollen.
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. |