- Erstellt von Redakteur7 am Feb. 16, 2021
Semantik
<fetchresource> bindet eine Ressource an ein Objekt im Speicher, so dass dieses über die angegebene id im Code ansprechbar und verwendbar ist. Üblicherweise wird die Ressource vom Auftrags-System empfangen, Sie können aber Ressource von jeder beliebigen, erreichbaren Adresse anfordern (lokal oder remote). <fetchresource> stellt damit eine Schnittstelle zwischen Dateien und Objekten in RCML her. Selbstverständlich müssen Sie nicht zwingend mit einem <fetchresource> in einem <process> arbeiten, Worker können auch Prozesse völlig ohne Anbindung an externe Systeme ausführen.
Beachten Sie, dass Sie über Variablenbindungen wie .getFile() auf die Datei selbst, die durch ein <fetchresource>-Objekt repräsentiert wird, zugreifen müssen.
Attribute
Attributname | Datentyp | Beschreibung | Mögliche Werte | Standardwert | Obligatorisch? |
---|---|---|---|---|---|
id | STRING | Die ID des Elements, über die es im Code angesprochen werden kann. | beliebiger, regelkonformer Name. | — | |
resource | STRING | Die zu bindende Ressource. | — | — | |
clear-on-shutdown | BOOLEAN | Gibt an, ob das Verzeichnis nach Beendigung des Prozesses automatisch gelöscht werden soll (true) oder nicht (false) oder ob es nur gelöscht werden soll, wenn kein Fehler aufgetreten ist (keep-on-error).
Im Produktiveinsatz sollte hier true gesetzt werden. | "true" : "false" : "keep-on-error" | false |
Subelemente / Inhalt
Das <fetchresource>-Element besitzt keine Subelemente und kann keinen Inhalt enthalten.
Variablenbindungen
Das <fetchresource>-Element ist vom Typ FETCHED-RESOURCE. Dieser Typ besitzt folgende Variablenbindungen:
Bindung | Beschreibung | Rückgabetyp |
---|---|---|
getFile() | Gibt die durch <fetchresource> gebundene Datei als Dateiobjekt zurück (siehe unten FILEOBJECT). | FILEOBJECT |
getUrl() | Gibt den URL zur Ressource zurück. | STRING |
getLocator() | Gibt die genaue Adresse des Objekts zurück. | STRING |
isShared() | Gibt an, ob die Ressource shared oder merged abgelegt wird (siehe auch hier). | BOOLEAN |
Auf FILEOBJECT ( id.getFile() ) sind außerdem folgende Variablenbindungen anwendbar:
Name | Beschreibung | Rückgabetyp |
---|---|---|
getName() | Gibt den Namen der Datei zurück. | STRING |
getAbsolutePath() | Gibt den absoluten Pfad zur Datei zurück. | STRING |
Beispiel
In folgendem Beispiel wird mit <fetchresource> die vom Spooler empfangene Datei an die id = "inputFile" gebunden. Über die Variablenbindungen .getFile().getAbsolutePath() wird der Pfad zur Datei in einem <param> gespeichert und dann verwendet. Anschließend wird die Datei umbenannt und direkt wieder an den Spooler zurückgeschickt. Zuletzt wird die Ressource mit <releaseresource> manuell freigegeben. Das Beispiel verwendet das <workdir>-, <exec>-, <param>-, <commandline>-, <result>- und <releaseresource>-Element.
<rcml> <process id="ExampleProcess" name="example process"> <!-- Arbeitsverzeichnis für den Prozess setzen. --> <workdir id="workdir" home="./WORK" /> <!-- Vom Spooler Ressource empfangen und an die id "inputFile" binden. --> <fetchresource id="inputFile" resource="${process['eoms.process.input']}" /> <exec id="RenameProcess" workdir="workdir"> <!-- Parameter anlegen: Pfad zur Ressource "inputFile". Dies muss über <param> geschehen! --> <param name="infile" value="${inputFile.getFile().getAbsolutePath()}" /> <!-- Parameter anlegen: Der neue Pfad mit neuem Namen. Dies muss über <param> geschehen! --> <param name="outfile" value="${workdir.getAbsolutePath() + '/cool_new_file'}" /> <!-- Ressource umbenennen in "cool_new_file"... --> <commandline processor="velocity">cmd move $infile $outfile </commandline> <!-- Bei Fehlern abbrechen. --> <result return-code="0" /> </exec> <!-- Umbenannte Datei samt komplettem Arbeitsverzeichnis an Spooler schicken. --> <upload file="workdir" destination="${process['eoms.process.output']}" /> <!-- Ressource manuell wieder freigeben. --> <releaseresource resource="inputFile" /> </process> </rcml>
Zweck:
Ressourcenbindung
Typ:
Standalone
Elternelement:
Top-Level-Elemente
Subelemente:
Nein
Variablenbindungen:
Ja
Mit <releaseresource> kann die Ressource wieder freigegeben (zur Löschung markiert) werden.
- Keine Stichwörter