Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum core workflow 3.0
Diese Dokumentation enthält Bibliotheken, die zu Automation | Workflow (agorum core workflow 3.0) gehören und hauptsächlich zum Entwickeln von Subworkflows und Knoten genutzt werden.
Sie erfahren, wie Sie die Workflow-Anhänge sowie Variablen validieren, laden und speichern können.
// Übergabe des eindeutigen Namens eines Knotens
let NODE_NAME = 'agorum_office_fill';
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, NODE_NAME);
// Beispiel mit explizitem Setzen des sessionControllers
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, NODE_NAME, sc);
// Siehe unten: Laden mit bereits vorhandenen Parametern
/* global sc, sca, token, instance, outlets, inlet, parameters */
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, parameters);
Über das Einbinden der Bibliothek workflow können Sie diverse Bibliotheken und Funktionen verwenden, in dem folgenden Beispiel die Funktion validate.
In folgendem Beispiel wird geprüft, ob der Parameter path vom Datentyp string ist und zwingend vorhanden ist. Falls nein, erscheint eine Fehlermeldung.
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, parameters);
workflow.validate.string('path', false);
Wenn Sie nur einzelne Funktionen verwenden möchten, können Sie diese als separate Bibliothek laden. Sie müssen dann nicht die Bibliothek workflow laden.
let wfValidate = require('/agorum/roi/customers/acworkflow/js/workflow/validate')(parameters);
wfValidate.string('path', false);
// Entweder alle gesammelt laden ...
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, parameters);
// ... oder die Bibliotheken einzeln laden
let wfValidate = require('/agorum/roi/customers/acworkflow/js/workflow/validate')(nodeParameters);
let wfParameters = require('/agorum/roi/customers/acworkflow/js/workflow/parameters')(nodeParameters);
let wfVariables = require('/agorum/roi/customers/acworkflow/js/workflow/variables')(token, nodeParameters);
let wfObjects = require('/agorum/roi/customers/acworkflow/js/workflow/objects')(token, nodeParameters);
Die Workflow 3.0-Bibliothek verwendet intern die Parameter des Subworkflows. Diese müssen Sie beim Laden der Bibliothek angeben.
Wird in dem erstellten Subworkflow der Knoten, der diese Bibliothek verwendet, nicht an erster Stelle verwendet, speichern Sie die Parameter in einem internen Bereich für den Knoten zwischen. Diese Funktion übernimmt der Knoten agorum.basic.initialize, der dann an erster Stelle steht.
Im Knoten initzialize geben Sie einen internen Namen an, dieser wird hier in dem Beispiel als NODE_NAME verwendet. Dort speichern und übergeben Sie den internen Namen des Subworkflows.
Die Workflow-Bibliothek arbeitet stark mit diesem Knoten zusammen. Wenn die Bibliothek einen Namen erhält, versucht sie, genau deren Parameter aus dem internen Bereich auszulesen.
let NODE_NAME = 'agorum_office_fill';
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, NODE_NAME);
// Zugriff auf interne Daten des Knotens
let nodeScope = workflow.nodeScope;
let nodeParameters = nodeScope.parameters;
Dieses Beispiel orientiert sich am Knoten agorum.office.fill. Als erster Knoten wird der Knoten initialize verwendet und erhält den technischen Namen agorum_office_fill.
Beim Laden der Workflow-Bibliothek übergeben Sie diesen Namen, damit die Parameter dort ausgelesen werden. Das Arbeiten über diesen Weg mit dem Parameter NODE_NAME stellt den empfohlenen Weg dar und wird daher in allen zukünftigen Beispielen verwendet.
Neben dem Laden der Parameter können Sie diese direkt übergeben.
Hinweis: Das Übergeben der Parameter funktioniert nur, wenn der Knoten auch als Startknoten im Subworkflow eingetragen ist und wird nur empfohlen, wenn die Parameter im Subworkflow nicht erneut verwendet werden müssen.
Bei Subworkflows bekommt nur der Startknoten (der erste Knoten, der ausgeführt wird) die Parameter übergeben. Diese sind im Header des Skripts zu finden:
/* global sc, sca, token, instance, outlets, inlet, parameters */
Ohne „agorum.basic.initialize“ laden
/* global sc, sca, token, instance, outlets, inlet, parameters */
// Übergabe der Parameter
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, parameters);
// Beispiel mit explizitem setzen des sessionControllers
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, parameters, sc);
ist optional. Wird dieser nicht angegeben, wird für Berechtigungen der Standardparameter Privileges geladen.Hinweis: Wenn Sie die Bibliotheken einzeln verwenden, müssen Sie den NODE_NAME manuell auflösen.
Beim Laden über den NODE_NAME legt die Bibliothek den internen Bereich des Knotens an, falls er noch nicht existiert. Wurde der Knoten agorum.basic.initialize nicht ausgeführt, sind die Parameter daher leer, ohne dass die Bibliothek einen Fehler meldet. Erst eine Prüfung wie validate meldet dann fehlende Parameter. Existiert in den Token-Variablen der Bereich sys_acw_internal überhaupt nicht, bricht das Laden mit einem Fehler ab.
Diese Bibliothek enthält keine eigenen Funktionen.
Folgende Parameter können übergeben werden:
| Parameter | Beschreibung | Pflicht |
|---|---|---|
| token | das Token des Subworkflows | ja |
| parameters | die parameters des Subworkflows
Hinweis: Hier können Sie auch den Namen der parameter angeben, etwa über die Variable NODE_NAME. |
ja |
| sc | Definiert den session controller. | nein |
| Eigenschaft | Beschreibung | Beispiel |
|---|---|---|
| sc | Liefert den übergebenen oder aufgelösten session controller zurück.
|
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, NODE_NAME);
let objects = require('common/objects')(workflow.sc); |
| nodeScope | Liefert die internen Daten der Knoten zurück.
|
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, NODE_NAME);
let internalData = workflow.nodeScope;
// Zugriff auf interne Daten des Knotens
let test = internalData.outputTarget;
// Zugriff auf die parameter des Knotens
let param = internalData.parameters;
|
Validiert Parameter nach deren Typ. Sie können unterscheiden, ob Parameter optional sind oder nicht und folgende Datentypen angeben:
Die Funktionen von validate prüfen Parameter nach folgenden Regeln:
optional nicht gesetzt oder false, muss der Parameter vorhanden sein. Fehlt er, wirft die Funktion den Fehler Parameter "name" not found.false oder 0 bestehen daher jede Typprüfung.Parameter name has to be of type typ: wert.| Funktion | Gültig ist |
|---|---|
| array | ein Array |
| boolean | ein Wert vom Typ boolean |
| date | ein Objekt mit der Funktion getTime, etwa ein Date |
| float | eine Zahl, auch als Text (etwa '1.5') |
| long | eine ganze Zahl, auch als Text (etwa '5') |
| object | eine ID oder ein Pfad, den der session controller findet. Findet er das Objekt nicht, lautet der Fehler object not found with ID. Ohne angegebenen session controller verwendet die Funktion sca. |
| string, variable | ein Text. variable prüft wie string, nennt im Fehlertext aber den Typ variable. |
Direktes Laden über die Bibliothek „workflow“
workflow.validate.string('path', false);
Eigenständiges Laden der Bibliothek
Das Folgende muss nur mitgegeben werden, wenn die Bibliothek manuell, d. h. nicht über workflow.validate geladen wird:
let wfValidate = require('/agorum/roi/customers/acworkflow/js/workflow/validate')(parameters, sc);
wfValidate.string('path', false);
Für jeden Typ muss nur der Name und der Hinweis optional / nicht optional angegeben werden. Parameter und sc werden am Anfang beim Laden der Bibliothek mitgegeben.
| Funktion | Beschreibung | Beispiel |
|---|---|---|
| object | Prüft auf den Datentyp object. Kann auch einen session controller entgegennehmen. |
workflow.validate.object('content', false, sc); |
| boolean | Prüft auf den Datentyp boolean. | workflow.validate.boolean('content', false); |
| array | Prüft auf den Datentyp array. | workflow.validate.array('content', false); |
| string | Prüft auf den Datentyp string. | workflow.validate.string('content', false); |
| variable | Prüft auf den Datentyp variable. | workflow.validate.variable('content', false); |
| date | Prüft auf den Datentyp date. | workflow.validate.date('content', false); |
| long | Prüft auf den Datentyp long. | workflow.validate.long('content', false); |
| float | Prüft auf den Datentyp float. | workflow.validate.float('content', false); |
Folgende Eigenschaften können angegeben werden:
| Eigenschaft | Beschreibung | Pflicht |
|---|---|---|
| parameter name | Definiert den Namen des zu prüfenden Parameters. | ja |
| optional | Definiert, ob der Parameter optional ist oder nicht. | nein |
| session controller | Definiert den session controller. | nur nötig für die Funktion object |
Beispiel
In diesem Beispiel existiert der Parameter perObject, der vom Typ boolean sein soll, sofern der Parameter angegeben ist. Der Parameter ist hier jedoch optional, d. h. es kommt zu keiner Fehlermeldung, wenn er nicht angegeben ist.
Der Parameter abc ist eine Pflichtangabe.
let wfValidate = require('/agorum/roi/customers/acworkflow/js/workflow/validate')(parameters);
// Optionaler Parameter
wfValidate.boolean('perObject', true);
// Pflicht Parameter
wfValidate.object('abc', false);
// Übergabe eines session controllers
wfValidate.object('abc', false, sca);
Unterstützt Knoten im Umgang mit Parameter.
Direktes Laden über die Bibliothek „workflow“
workflow.parameters.privileged();
Eigenständiges Laden der Bibliothek
Das Folgende muss nur mitgegeben werden, wenn die Bibliothek manuell, d. h. nicht über workflow.parameters geladen wird:
let wfParameters = require('/agorum/roi/customers/acworkflow/js/workflow/parameters')(parameters, sc);
wfParameters.privileged();
| Funktion | Beschreibung | Beispiel |
|---|---|---|
| get | Holt Parameter aus einem bestimmten Namen (oder Pfad). key optional
|
workflow.parameters.get('ac_status', false); |
| find | Holt ein oder mehrere Objekte aus dem Parameter.
|
workflow.parameters.find('ac_object'); |
| privileged | Holt den sessionController (sc) aufgrund des angegebenen Parameters. Im Hintergrund wird dafür der Standardparameter privileges aufgelöst. Der Parameter privileges kann folgende Werte haben:
|
workflow.parameters.privileged(); |
Beispiel für die Funktion „find“
Es wird angenommen, dass der Benutzer in den Parametern /agorum/roi/Files/Demo als Pfadname eingetragen hat. Der Name des Parameters heißt im Subworkflow baseFolder. Um die ID des Ordners zu ermitteln, kann workflow.parameters.find() verwendet werden.
workflow.parameters.find('baseFolder');
In dem Beispiel würde die ID des Ordners Demo zurückgeliefert werden.
Beispiele für die Funktion „privileged“
sc wird automatisch durch den übergebenen Parameter erkannt, wenn dort der Parameter privileges vorhanden ist:
let parameters = require('/agorum/roi/customers/acworkflow/js/workflow/parameters')(parameters);
sc wird übergeben und explizit angegeben. Der Knoten hat somit keinen Parameter privileges oder verwendet ihn nicht:
let workflowParameters = require('/agorum/roi/customers/acworkflow/js/workflow/parameters')(parameters, sc);
Erleichtert das Holen und Setzen von Variablen. Sie können auch tiefere Strukturen laden.
Die Funktionen get, set und merge unterstützen Dot-Notation, um auf verschachtelte Strukturen zuzugreifen.
Beispiel: workflow.variables.get('config.timeout', true) greift auf token.variables.config.timeout zu.
Nicht vorhandene Zwischensegmente werden bei set und merge automatisch als leere Objekte angelegt.
Beim Lesen mit get gilt: Fehlt der Wert (nicht vorhanden oder null) und ist optional nicht gesetzt, wirft die Funktion den Fehler Variable "key" not found. Mit optional = true liefert sie stattdessen undefined. Das gilt auch, wenn eine Zwischenebene fehlt. Ein leerer Schlüssel liefert alle Variablen des Tokens.
Direktes Laden über die Bibliothek „workflow“
let sys_acw_processName = workflow.variables.get('sys_acw_processName', false);
Eigenständiges Laden der Bibliothek
Das Folgende muss nur mitgegeben werden, wenn die Bibliothek manuell, d. h. nicht über workflow.variables geladen wird:
let wfVariables = require('/agorum/roi/customers/acworkflow/js/workflow/variables')(token, parameters);
let sys_acw_processName = wfVariables.get('sys_acw_processName', true);
| Funktion | Beschreibung | Beispiel |
|---|---|---|
| get | Holt Daten aus den Workflow-Variablen. key Definiert den Namen der zu holenden Variable. optional Definiert, ob die Variable zwingend einen Wert haben muss.
|
// Holen des optionalen parameters path
let path = workflow.variables.get('path', true); |
| set | Setzt Daten in die Workflow-Variablen. key Definiert den Namen der zu setzenden Variable. value Definiert den zu setzenden Wert. |
// Setzen eines Status ag_status auf den Wert "in Bearbeitung"
workflow.variables.set('ag_status', 'in Bearbeitung'); |
| merge | Führt ein flaches Merge (Object.assign) eines Werts in eine bestehende Variable durch, anstatt sie komplett zu überschreiben. Existiert der Zielwert bereits, werden die Eigenschaften des übergebenen Objekts in das bestehende Objekt zusammengeführt. Existiert der Zielwert noch nicht, wird er mit dem übergebenen Wert angelegt. Verschachtelte Objekte führt die Funktion dabei nicht zusammen, sondern ersetzt sie durch das übergebene Objekt. Mit einem leeren Schlüssel mischt sie in die obersten Variablen des Tokens.key Definiert den Namen (oder Pfad per Dot-Notation) der zu mergenden Variable. value Definiert das Objekt, dessen Eigenschaften zusammengeführt werden sollen. |
// Bestehende Konfiguration erweitern, ohne andere Eigenschaften zu verlieren
workflow.variables.merge('config', {
timeout: 5000,
retries: 3
});
// Vorher: config = { host: 'server1', timeout: 3000 }
// Nachher: config = { host: 'server1', timeout: 5000, retries: 3 } |
Beispiel für die Funktion „get“
Es wird angenommen, dass der Workflow einen Parameter mit dem Namen resultVariable besitzt. Dieser Parameter wird bei Nutzung des Workflows mit einem Variablennamen befüllt. Um diesen Variablennamen zu erhalten, benötigen Sie workflow.parameters.get, wobei Sie anschließend den Inhalt mit workflow.variables.get aus der eingegebenen Variable holen können.
workflow.variables.get(workflow.parameters.get('resultVariable', false), false);
Behandelt das Arbeiten mit Anhängen (attachments) oder anderen Objekten im Workflow.
Die Bibliothek wertet folgende Parameter aus. Alle sind optional. Fehlen inputVariable oder outputVariable, trägt die Bibliothek sys_acw_attachments in das übergebene Parameter-Objekt ein.
| Parameter | Typ | Beschreibung |
|---|---|---|
| inputVariable | Text | Name der Variable, aus der get die Objekte liest. Standard: sys_acw_attachments |
| outputVariable | Text | Name der Variable, in die set und fork die Objekte schreiben. Standard: sys_acw_attachments |
| perObject | boolean | Legt fest, ob load, save, getScope und setScope die Daten je Objekt (unter dessen UUID) verwalten. |
| scopeVariable | Text | Name der Variable, in der die Daten liegen. Fehlt sie, sind die Token-Variablen selbst der Scope. |
| selectors | Array | Selektoren für select |
Direktes Laden über die Bibliothek „workflow“
let attachments = workflow.objects.get();
Eigenständiges Laden der Bibliothek
Das Folgende muss nur mitgegeben werden, wenn die Bibliothek manuell, d. h. nicht über workflow.objects geladen wird:
sca. Beim Laden über die Bibliothek workflow gilt der session controller, der sich aus privileges ergibt.let wfObjects = require('/agorum/roi/customers/acworkflow/js/workflow/objects')(token, parameters, sc);
let attachments = wfObjects.get();
| Funktion | Beschreibung | Beispiel |
|---|---|---|
| get | Holt die Objekte aus dem Namen des Parameters inputVariable. Wird der Parameter nicht übergeben, wird stattdessen die interne Variable sys_acw_attachments verwendet. Das Ergebnis ist ein Array mit agorum core Objekten (die gespeicherten IDs löst die Funktion auf). Fehlt die Variable, wirft die Funktion einen Fehler. Mit optional = true liefert sie ein leeres Array.optional true/false |
Die Bibliothek lädt die Objekte mit dem sc der Bibliothek. Die Funktion // Laden der aktuellen Anhänge let attachments = workflow.objects.get(); // update attachments let newAttachments = []; // ... // Überschreiben der Anhänge und setzen der neuen workflow.objects.set(newAttachments); |
| set | Setzt die übergebenen Objekte in diejenige Variable, die über die outputVariable angegeben wurde. Ist der Parameter leer, wird stattdessen die interne Variable sys_acw_attachments verwendet. attachments Array mit agorum core Objekten oder deren IDs. Die Funktion speichert die UUIDs. |
|
| select | Löst den übergebenen Parameter selectors auf, um alle Objekte nach dem Selektor zu sortieren. Zurückgegeben wird im Ergebnis:
optional true/false Hinweis: Dieser Parameter verhält sich wie bei get |
|
| fork | Klont das Workflow-Token.
name objects |
Werden in dem Beispiel die Parameter inputVariable und outputVariable nicht gesetzt, werden jeweils die sys_acw_attachments geladen und gesetzt. workflow.objects.fork([
{
name: 'left',
objects: attachments.slice(0, parameters.index)
},
{
name: 'right',
objects: attachments.slice(parameters.index)
}
]); |
| load | Lädt Dateien mit dem Parameter perObject und speichert das Ergebnis in die Variable, die unter scopeVariable angegeben wurde. Beachtet das load-Interface:
|
// Iteriere über die perObject Anhänge und führe für jedes Objekt die Funktion aus
workflow.objects.load(obj => {
// Liefere Daten für dieses Objekt zurück
return {
ag_status: 'Test',
name: obj.name
};
}); |
| save | Speichert Dateien mit dem Parameter perObject und das Ergebnis in die Variable, die unter scopeVariable angegeben wurde. Beachtet das save-Interface:
|
// Hole den ag_status der Objekte. Hier wird nur der letzte Wert gespeichert.
let fileStatus;
// Iteriere über die perObject Anhänge und führe für jeden die Funktion saveResult aus
workflow.objects.save((obj, dataToSave) => {
fileStatus = dataToSave.ag_status;
}); |
| getScope | Liest die Scope-Daten für die übergebenen Objekte aus der scopeVariable und ruft für jedes Objekt eine Callback-Funktion auf. Ist perObject aktiviert, werden die Scope-Daten pro Objekt (anhand der UUID) geladen. Ist perObject nicht aktiviert, erhalten alle Objekte dieselben Scope-Daten. Ist perObject aktiviert und fehlt die scopeVariable in den Token-Variablen, bricht die Funktion mit einem Fehler ab. Ohne scopeVariable sind die Token-Variablen selbst der Scope. objs Array von agorum core Objekten. fn(object, scope) Callback-Funktion, die für jedes Objekt mit dem Objekt und den zugehörigen Scope-Daten aufgerufen wird. |
// Scope-Daten für Objekte auslesen
let attachments = workflow.objects.get();
workflow.objects.getScope(attachments, (obj, scope) => {
console.log(obj.name, scope);
}); |
| setScope | Setzt Scope-Daten für die übergebenen Objekte in die scopeVariable. Für jedes Objekt wird eine Callback-Funktion aufgerufen, deren Rückgabewert als Scope-Daten gespeichert wird. Ist perObject aktiviert, werden die Daten pro Objekt (anhand der UUID) gespeichert. Intern wird variables.merge verwendet, sodass bestehende Daten nicht überschrieben, sondern flach zusammengeführt werden (siehe variables.merge). Die Callback-Funktion sollte ein Objekt zurückgeben. Ohne scopeVariable schreibt die Funktion die Daten in die obersten Token-Variablen.objs Array von agorum core Objekten. fn(object) Callback-Funktion, die für jedes Objekt aufgerufen wird und die zu speichernden Scope-Daten zurückgibt. |
// Scope-Daten für Objekte setzen
let attachments = workflow.objects.get();
workflow.objects.setScope(attachments, obj => {
return {
ag_status: 'verarbeitet',
name: obj.name
};
}); |
Für Automation | Workflow stehen zusätzlich zur Bibliothek workflow die Bibliotheken filter und definition bereit. Sie laden Sie einzeln.
Die Bibliothek filter bereitet einen Filter-Parameter auf, damit Sie ihn immer als Array verwenden können. Die Knoten zum Laden und Speichern von Metadaten nutzen sie, siehe die Beispiele am Ende der Seite.
let filterLib = require('/agorum/roi/customers/acworkflow/js/common/filter');
| Funktion | Beschreibung | Beispiel |
|---|---|---|
| convert | Liefert den Filter als Array zurück. filter Ein einzelner Wert oder ein Array. Die Funktion verpackt einen einzelnen Wert in ein Array mit einem Element. Ein Array bleibt unverändert. Einen leeren Wert ( undefined, null, leerer Text) gibt die Funktion unverändert zurück, daraus entsteht also kein Array. Prüfen Sie den Filter daher auf einen Wert, bevor Sie ihn weiterverwenden.Rückgabe: das Array oder der unveränderte leere Wert |
filterLib.convert('name');
// ['name']
filterLib.convert(['name', 'size']);
// ['name', 'size']
filterLib.convert(undefined);
// undefined |
Die Bibliothek definition findet die Definition eines Workflows. Sie arbeitet mit den Workflows, die im Workflow-Repository (/agorum/roi/workspace/acworkflow/repository) bereitgestellt sind. Ein Workflow liegt dort in einem Ordner je Version, der Ordnername ist die Versionsnummer. Die Definition ist die Datei definition.acwd in diesem Ordner.
let definitionLib = require('/agorum/roi/customers/acworkflow/js/common/definition');
| Funktion | Beschreibung | Beispiel |
|---|---|---|
| getWorkflowDefinition | Lädt die Definition eines Workflows und liefert die Datei definition.acwd als agorum core Objekt.workflow Eine der folgenden Angaben:
|
// latest version by name
let latest = definitionLib.getWorkflowDefinition('projekt.workflow.name');
// specific version by path
let version = definitionLib.getWorkflowDefinition(
'/agorum/roi/workspace/acworkflow/repository/projekt/workflow/name/3/definition.acwd'
); |
| getRegisteredWorkflows | Liefert die Definitionen aller bereitgestellten Workflows, jeweils in der höchsten Version. Rückgabe: ein Array mit den UUIDs der Dateien definition.acwd. Gibt es das Workflow-Repository nicht, ist das Array leer. Ordner, deren Name keine Zahl ist, zählen nicht als Version. |
let uuids = definitionLib.getRegisteredWorkflows();
let objects = require('common/objects');
// log the name of each workflow folder
uuids.forEach(uuid => console.log(objects.find(uuid).firstParent.firstParent.name)); |
Das folgende Beispiel orientiert sich am Knoten agorum.object.metadata.load:
/* global sc, sca, token, instance, outlets, inlet, parameters */
// Laden der Bibliothek mit direkten parametern
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, parameters);
// Laden weiterer Bibliotheken
let metadata = require('common/metadata');
let filterLib = require('/agorum/roi/customers/acworkflow/js/common/filter');
// Validierung des Filter Parameters, dieser ist optional und vom Typ ein array
workflow.validate.array('filter', true);
// Funktion, um die Daten zu Laden
let loadData = obj => {
let m = metadata();
if (parameters.filter) {
// load filtered metadata
m.load.apply(m, [ obj ].concat(filterLib.convert(parameters.filter)));
}
else {
// load all metadata
m.load(obj);
}
return m.data();
};
// Iteriere über die perObject Anhänge und führe für jeden die Funktion loadData aus
workflow.objects.load(loadData);
Das folgende Beispiel orientiert sich am Knoten agorum.object.metadata.save:
/* global sc, sca, token, instance, outlets, inlet, parameters */
// Laden der Bibliothek mit direkten parametern
let workflow = require('/agorum/roi/customers/acworkflow/js/workflow')(token, parameters);
// Laden weiterer Bibliotheken
let metadata = require('common/metadata');
let filterLib = require('/agorum/roi/customers/acworkflow/js/common/filter');
// Validierung des Filter Parameters, dieser ist optional und vom Typ ein array
workflow.validate.array('filter', true);
let filter = parameters.filter;
// Funktion, um die Daten zu Speichern
let saveResult = (obj, dataToSave) => {
if (dataToSave) {
let m = metadata(dataToSave);
if (filter) {
// load filtered metadata
m.save.apply(m, [ obj ].concat(filterLib.convert(filter)));
}
else {
// load all metadata
m.save(obj);
}
}
};
// Iteriere über die perObject Anhänge und führe für jeden die Funktion saveResult aus
workflow.objects.save(saveResult);