Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core workflow 3.0 > Workflows anhand von Beispielen entwickeln
Mit dem folgenden Workflow können Benutzer über eine Bedienoberfläche Attachments hinzufügen und bearbeiten.
Dieser Workflow ist ein Beispiel für die Anwendung von agorum.composite.form.element.objects.
Der Workflow besteht aus folgenden Knoten (in dieser Reihenfolge):
Diese Dokumentation beschreibt die Anlage und Parameter / Werte jedes Knotens. Anschließend folgt eine Beschreibung der Funktionsweise jedes Knotens, damit Sie verstehen, welche Aufgaben der jeweilige Knoten erfüllt und wie er im abgebildeten Workflow funktioniert.
Hinweise:
Anhänge, die durch den Workflow gewählt werden können, sollten nur von berechtigten Personen verwaltet werden dürfen.
Bei allen nachfolgend aufgeführten Bezeichnungen / Variablen / Werten handelt es sich um Beispiele. Sie müssen diese Beispiele nicht 1:1 übernehmen, sondern können eigene Bezeichnungen / Variablen / Werten verwenden.
Im 1. Schritt legen Sie den Knoten Aktuellen Benutzer zuordnen an.
Im Knoten befüllen Sie folgenden Parameter:
Vollzugriff
Dieser Knoten setzt den aktuellen Benutzer als Bearbeiter für die kommenden Workflowschritte ein.
Im 2. Schritt legen Sie den Knoten ui an.
Im Knoten befüllen Sie folgende Parameter:
Dieser Knoten erstellt eine UI, in der die Bearbeiter eine Bedienoberfläche anpassen können.
Der Anhang, der nach Ausführen des Workflows in der UI angefügt ist, ist nicht veränderbar. Der Ursprungsanhang kann aktuell weder gelöscht noch kann ein weiterer Anhang hinzugefügt werden. Nachfolgend fügen Sie das Element objects ein, das eine Auswahl des Anhangs ermöglicht.
Im 3. Schritt bauen Sie das Element objects in das Oberflächenskript aus Schritt 2 ein, damit die Anhänge bearbeitet und verändert werden können.
Hinweis: Wie die Funktion aussieht, sehen Sie im nachfolgenden Beispiel.
Der einzufügende Code sieht etwa folgendermaßen aus:
... // date input field on right side { type: 'agorum.composite.form.element.date', name: 'sampleDate', label: '_acmsg:sampleDate.label=Date', flexible: true } ] }, //attachments { type: 'agorum.spacer', height: 24 }, { type: 'agorum.vbox', title: '_acmsg:myAttachments=Anhänge', lite: true, collapsible: true, items: [ { type: 'agorum.composite.form.element.objects', name: 'myAttachments', height: 200, listConfig: 'Standard', searchConfig: { additionalBaseQuery: 'classname:fileobject', filterCollapsed: false, settingName: 'ac_all', detailsWidget: { type: 'agorum.composite.details', width: 600 }, }, folderConfig: { selectors: [ '[isFolder=false]', ], startFolder: 'home:MyFiles', baseFolder: 'home:', } } ] }, // buttons { type: 'agorum.spacer', height: 24 }, { type: 'agorum.hbox', items: [ // buttons on left side { type: 'agorum.composite.form.element.button', name: 'cancel', text: '_acmsg:cancel=Abort', icon: 'aguila-icon cancel' }, ...
In dieser Funktion wird zusätzlich zum Element objects eine vbox und ein spacer eingebaut.
Im 4. Schritt legen Sie den Knoten set an.
Im Knoten befüllen Sie folgende Parameter:
myAttachments
Hinweis: Der hier angegebenen Variablenname muss mit name: 'myAttachments' aus dem Oberflächenskript übereinstimmen (siehe Beispiel).
Vergeben Sie im Parameter Wert Folgendes als Expression:
token.variables.sys_acw_attachments
Dieser Knoten ermöglicht es, eine Variable in den Workflow einzufügen, die mit anderen Variablen korrespondieren kann.
Damit die Variable mit einer anderen Variable korrespondieren kann und der Ursprungsanhang in der Box angezeigt wird, muss eine weitere Variable und somit ein weiterer Knoten set angelegt werden.
Im 5. Schritt legen Sie erneut den Knoten set an.
Im Knoten befüllen Sie folgenden Parameter:
sys_acw_attachments
token.variables.myAttachments
Hinweis: Sie können auch einen anderen Namen verwenden, dieser muss jedoch bei den folgenden Schritten ebenfalls verwendet werden.
Dieser Knoten ermöglicht es eine weitere Variable anzulegen, die mit der ersten Variable korrespondieren kann.
Die Anhänge, die in myAttachments liegen, kommen durch die Verbindung der Knoten zurück in die sys_acw_attachments.
Im 6. Schritt passen Sie das JavaScript aus Schritt 3 so an, dass eine Schaltfläche in der Oberfläche erscheint. Damit können die angepassten Attachments auch gespeichert werden. Zudem legen Sie einen Ausgang für die Schaltfläche an.
Hinweis: Sie können eine Schaltfläche aus dem Oberflächenskript kopieren und entsprechend ändern (siehe Beispiel).
... ], startFolder: 'home:MyFiles', baseFolder: 'home:', } }, { type: 'agorum.composite.form.element.button', name: 'takeAttachments', text: '_acmsg:takeAttachments=Anhänge übernehmen', icon: 'aguila-icon redo' }, ] }, // buttons { type: 'agorum.spacer', height: 24 }, ...
Im Oberflächenskript legen Sie einen Ausgang fest, den das System nimmt, wenn die Schaltfläche gedrückt wird.
Hinweis: Sie können die Funktion aus dem Oberflächenskript kopieren und entsprechend ändern (siehe Beispiel).
... switch (action.name) { case 'ok': // the form has to be valid, before the ui can be left through the "ok"-outlet if (form.validate()) { form.fire('leave', 'ok'); } break; case 'cancel': // when cancel is pressed, leavel to "cancel"-outlet without validation form.fire('leave', 'cancel'); break; case 'takeAttachments': form.fire('leave', 'takeAttachments'); break; } }); ...
Die gewählten Anhänge können jetzt in der Oberfläche durch die Schaltfläche Anhänge übernehmen gespeichert werden. Allerdings werden die Anhänge bisher nicht in der Detailansicht angezeigt, damit der Benutzer des Workflows nachvollziehen kann, welche Anhänge er wählt und speichert.
Damit die Anhänge in der Detailansicht gezeigt werden, fügen Sie eine Selektierung in das JavaScript aus Schritt 3 ein.
Hinweis: Für ein weiteres Beispiel zu Objekte selektieren siehe Objekte selektieren und im Detailfenster anzeigen.
... let form = aguila.create({ type: 'agorum.composite.form.basic', labelPosition: 'top', properties: [ 'id' ], elements: [ ...
... { type: 'agorum.spacer', flexible: true }, // buttons on right side { type: 'agorum.composite.form.element.button', name: 'ok', text: '_acmsg:ok=Ok', icon: 'aguila-icon check' } ] } ] }); let myAttachments = form.down('myAttachments'); // Die Funktion "suppress" bewirkt, dass der selectionChanged Event unserer Liste // nicht den idChanged Event auf unserer Seite auf form-Ebene auslöst, sonst würde // unser gerade selektierter Eintrag wieder deselektiert werden. let suppressed; let suppress = callback => { if (suppressed) return; suppressed = true; try { callback(); } finally { suppressed = false; } }; // Bei Selektierungen in unserer Liste soll das selektierte Objekt // im Detailfenster des Workflows angezeigt werden. myAttachments.on('selectionChanged', selection => { suppress(() => { form.id = selection && selection[0]; }); }); // Reagieren auf Änderungen in der Liste der Anhänge: // Deselektieren der Einträge in unserer eigenen Liste form.on('idChanged', id => { suppress(() => { myAttachments.selection = [ id ]; }); }); // Listen for changed values by user /* form.on('input', data => { console.log('User has changed value of the form:', data.name, data.value); }); */ // Listen for actions on the widget form.on('action', action => { /* ...
Die Anhänge werden jetzt nach Betätigung der Schaltfläche im Detailfenster angezeigt.