rc.apps
In diesem Javascript-Objekt werden die Möglichkeiten für eine Skriptsteuerung von Serverjobs (für KDE, JDE, krn.RunScript) bereitgestellt. Es enthält außerdem Funktionen für den Zugriff auf wichtige Eigenschaften von enaio®.
rc.apps
ist ein COM-Objekt (IV8Apps
), dessen TypInfo
bei Bedarf mit rc.com.typeInfo(rc.apps) analysiert werden kann.
rc.apps
hat folgende Propertys, die zum Teil in eigenen Artikeln beschrieben werden:
Name | Typ | get | put |
---|---|---|---|
| + |
| |
| + |
| |
| + |
| |
| + |
| |
| + |
| |
| + |
| |
| + |
| |
| + |
| |
| array of string | + | + |
| array of string | + | + |
| LONG | + | + |
| string | + | + |
Code
rc.console.log(JSON.stringify(rc.apps,null,3));
misc
Siehe IV8AppsMisc. Hier werden verschiedene Funktionen zum Arbeiten mit enaio® vorgehalten.
logger
Siehe IV8AppsLogger. Hier werden Funktionen zum Schreiben von Protokolleinträgen aus Skripten zur Verfügung gestellt.
server
Siehe IV8AppsServer. Dieser Bereich beinhaltet Funktionen zum Auslesen von zentralen Servereigenschaften.
session
Siehe IV8AppsSession. Dieser Bereich beinhaltet Funktionen zum Auslesen der Eigenschaften der aktuellen Benutzersession.
registry
Siehe IV8AppsRegistry. Hier werden Funktionen zum Lesen und Ändern der Serverregistry zur Verfügung gestellt.
jobs
Siehe IV8AppsJobs. Hier werden Funktionen für den skriptseitigen Aufruf weiterer Serverjobs vorgehalten.
inputParams
Siehe IV8AppsParameterList. Der Inhalt der Liste hängt davon ab, in welchem Kontext das Skript aufgerufen wird.
KDE-Before-Skripte: Eingabeparameter des Jobs. Nachdem das Skript ausgeführt wurde und ggf. diese Parameterliste manipuliert wurde, wird die Liste als Eingangsparameter für die Ausführung des eigentlichen Jobs verwendet.
KDE-After-Skripte: Eingabeparameter des Jobs. Diese Liste ist schreibgeschützt. Da die Jobausführung bereits beendet ist, lassen sich in diesem Skript keine Eingangsparameter wirksam manipulieren.
JDE-Skripte: In diesem Fall wird diese Liste pro JDE unterschiedlich befüllt, s. Dokumentation zu enaio® server-api.
krn.RunScript: Hier ist auch möglich, inputParams zu definieren, s. Dokumentation zu enaio® server-api (in der Beschreibung von krn.RunScript).
outputParams
Siehe IV8AppsParameterList. Der Inhalt der Liste hängt davon ab, in welchem Kontext das Skript aufgerufen wird.
KDE-Before Skripte: Da der Job zur Laufzeit des Skripts noch nicht ausgeführt wurde, ist diese Liste leer. Über eine Manipulation dieser Liste im Skript ist es möglich zusätzliche Ausgabeparamater zu erzeugen, die nach der Ausführung des Jobs an den Aufrufer übergeben werden. Werden in diesem Skript bekannte Ausgabeparamter des Jobs manipuliert, so werden diese bei der Ausführung des Jobs wieder überschrieben.
KDE-After Skripte: Hier stellt der Parameter die Ausgabeparameter des Jobs dar. Das Skript kann diese Liste manipulieren. Entweder können im Skript weitere Ausgabeparameter ergänzt oder vorhandene geändert werden. Es ist aber nicht möglich, vorhandene Ausgabeparameter zu löschen.
JDE Skripte: In diesem Fall wird diese Liste pro JDE unterschiedlich behandelt, s. Dokumentation zu enaio® server-api.
krn.RunScript: Hier stellt der Parameter eine Liste der Ausgabeparameter des Jobs dar. Das Skript kann diese Liste manipulieren. Entweder im Skript weitere Ausgabeparameter ergänzt oder vorhandene geändert werden. Es ist aber nicht möglich, vorhandene Ausgabeparameter zu löschen.
inputFiles
Der Inhalt der Liste hängt davon ab, in welchem Kontext das Skript aufgerufen wird.
KDE-Before Skripte: Hier stellt der Parameter eine Liste von Eingabedateien des Jobs dar. Sollen diese manipuliert werden, kann das Skript dies über
outputFiles
tun.KDE-After Skripte: Hier stellt der Parameter eine Liste von Ausgabedateien des Jobs dar. Sollen diese manipuliert werden, kann das Skript dies über
outputFiles
tun.JDE Skripte: In diesem Fall wird diese Liste pro JDE unterschiedlich behandelt, s. Dokumentation zu enaio® server-api.
krn.RunScript: Hier stellt der Parameter eine Liste von Eingabedateien des Jobs dar.
outputFiles
Der Inhalt der Liste hängt davon ab, in welchem Kontext das Skript aufgerufen wird.
KDE-Before Skripte: Hier stellt der Parameter eine Liste von Eingabedateien des Jobs dar. Diese Liste ist per Default leer, was bedeutet, dass die Eingabedateien des Jobs nicht durch das Skript geändert werden. Soll diese Liste geändert werden, müssen die Eingabedateien ggf. aus den
InputFiles
in dieOutputFiles
übertragen werden. Es ist weiterhin möglich, zusätzliche Dateien per Skript zu ergänzen. Soll die Liste der Eingabedateien des Jobs explizit geleert werden, dann muss im Skript in die ListeoutputFiles
ein einziges Element eintragen werden:*NO*FILES*.
KDE-After Skripte: Hier stellt der Parameter eine Liste von Ausgabedateien des Jobs dar. Diese Liste ist per Default leer, was bedeutet, dass die Ausgabedateien des Jobs nicht durch das Skript geändert werden. Soll diese Liste geändert werden, so müssen die Ausgangsdateien ggf. aus den
InputFiles
in dieOutputFiles
übertragen werden. Es ist weiterhin möglich, zusätzliche Dateien per Skript zu ergänzen. Soll die Liste der Ausgabedateien des Jobs explizit geleert werden, dann muss im Skript in die ListeoutputFiles
ein einziges Element eintragen werden:*NO*FILES*.
JDE Skripte: In diesem Fall wird diese Liste pro JDE unterschiedlich behandelt, s. Dokumentation zu enaio® server-api.
krn.RunScript: Hier stellt der Parameter eine Liste von Ausgabedateien des Jobs dar. Sollen von einem RunSkript-Aufruf Dateien an den Aufrufer zurückgegeben werden, so muss diese Liste an dieser Stelle per Skript gefüllt werden.
Wichtig:
Das Anpassen der Parameter inputFiles
und outputFiles
in JDE/KDE-Skripten verlangt umfangreiches Wissen über die internen Mechanismen von enaio® und sollte nur nach Rücksprache mit dem Developer Support von OPTIMAL SYSTEMS erfolgen. Serverjobs, die clientseitig aufgerufen werden, können in ihrer internen Abarbeitung weitere interne Jobs aufrufen. An jedem dieser externen und internen Jobs können eigene JDE/KDE-Skripte hängen. Daher ist an dieser Stelle internes Wissen über die jeweiligen Mechanismen beim Löschen von temporären Dateien in den einzelnen Serverjobs wichtig, um das Überlaufen des temporären Verzeichnisses von enaio® server (Verzeichnis ostemp
) zu verhindern.
krn.RunScript
löscht die Eingabedateien (falls sie vom Skript nicht bereits gelöscht wurden). Allerdings kann mit dem Parameter Flags=1
dieses Löschen ausgeschaltet werden.
Codebeispiel (krn.runScript mit einer Datei und Flags = 0
const FSO = new rc.com.ActiveXObject("Scripting.FileSystemObject")
const outputFiles = [];
for (const fileName of rc.apps.inputFiles) {
rc.console.log("Input file: " + fileName);
const arr = fileName.split('.')
const newFileName = arr.join('.') + '.renamed.' + arr[arr.length - 1];
FSO.MoveFile(fileName,newFileName);
outputFiles.push('?' + newFileName);
}
rc.apps.outputFiles = outputFiles;
true; // ansonsten kommt ein Fehler, weil ein Array nach job_param nicht konvertierbar ist
responseResult
KDE-Before Skripte: Wenn das Skript diesen Wert ungleich 0 setzt, wird der Job nicht weiter ausgeführt.
KDE-After Skripte: In diesem Fall steht hier der logische Rückgabewert des Jobs (ein Fehler-Code oder 0 bei erfolgreich ausgeführtem Job). Nachdem das Skript ausgeführt wurde, kopiert enaio® server diesen Wert in
dwResponseResult
des Jobs. Damit der erfolgreiche Job als fehlerhaft (für den Aufrufer) markiert wird (bzw. ein fehlerhafter Job als fehlerfrei). Der Job selbst ist an dieser Stelle aber bereits ausgeführt und seine Logik wird damit nachträglich nicht beeinflusst.JDE Skripte: In diesem Fall wird dieser Wert pro JDE unterschiedlich behandelt, s. Dokumentation zu enaio® server-api.
krn.RunScript: wertet
rc.apps.responseResult
nicht aus
errorText
KDE-Before Skripte: Üblicherweise ist dieser Wert leer. Falls das Skript dort etwas einträgt, wird der Text in die
ErrorList
des Jobs kopiert.KDE-After Skripte: Üblicherweise ist dieser Wert leer. Falls das Skript dort etwas einträgt, wird der Text in die
ErrorList
des Jobs kopiert.JDE Skripte: In diesem Fall wird dieser Wert pro JDE unterschiedlich behandelt, s. Dokumentation zu enaio® server-api.
krn.RunScript: wertet
rc.apps.errorText
nicht aus.