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 splitten Sie Positionen, zum Beispiel für Rechnungen und die Kontierung.
Das gewünschte Ergebnis können Sie durch verschiedene Knoten erreichen. In diesem Workflow werden Ihnen drei Möglichkeiten gezeigt. Es verändert sich dabei nur der letzte Knoten im Workflow.
Dieser Workflow enthält ein Beispiel für die Anwendung von agorum.composite.form.element.splitList und agorum.metadata.collection.form.
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.
Hinweis: 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.
In diesem Video wird eine funktionsfähige Oberfläche zum Splitten von Positionen gezeigt, die mit diesem Workflow erstellt werden kann.
Zum korrekten Ausführen des Workflows benötigen Sie folgende Beispieldateien:
Die Beispieldateien enthalten eine metadata-collection und Angaben zum Splitten. Sie finden die Beispiele im Ordner agorum.samples.collection.form. Dieser wird automatisch beim Aktualisieren Ihrer agorum core-Version installiert. Sie finden den Ordner in der Standardeinstellung unter:
/agorum/roi/customers/agorum.samples.collection.form/
Die Beispieldateien benötigen Sie für den Knoten metadata collection form, der in diesem Workflow zweimal Anwendung findet. Die Informationen der Dateien rufen Sie über die Parameter usage und metadata collection auf.
Diese Datei bietet die Grundlage für die metadata-collection-invoice.yml. In diesem Beispiel werden die Bezeichnungen der Rechnungsdaten festgelegt.
# -- global _group: agorum.samples.collection.form.invoice _prefix: agorum_samples_collection_form_invoice_ _dataPrefix: MAIN_MODULE_MANAGEMENT/customers/agorum.samples.collection.form.invoice/Data/ _csvPrefix: /agorum/roi/customers/agorum.samples.collection.form.invoice/csv/ _encoding: UTF-8 _default: # string, long, double, date, boolean type: string # inherited, notInherited, builtIn kind: notInherited # Invoice Record Header number: displayName: 'Rechnungsnummer' date: displayName: 'Rechnungsdatum' type: date currency: displayName: 'Währung' # Invoice Supplier Information supplier_name: displayName: 'Lieferantenname' # Invoice Order Information order_number: displayName: 'Bestellnummer' order_date: displayName: 'Bestelldatum' type: date # Invoice Item List item_list: displayName: 'Positionen' list: number: displayName: 'Position' description: displayName: 'Beschreibung' quantity: displayName: 'Menge' type: double cost_center: displayName: 'Kostenstelle' net_price: displayName: 'Einzelpreis netto' type: double net_amount: displayName: 'Nettobetrag' type: double tax_amount: displayName: 'Steuerbetrag' type: double tax_rate: displayName: 'Steuersatz' type: double # Invoice Totals total_net_amount: displayName: 'Summe Nettobetrag' type: double total_gross_amount: displayName: 'Summe Bruttobetrag' type: double total_tax_amount: displayName: 'Summe Steuerbetrag' type: double total_tax_rate: displayName: 'Steuersatz' type: double
In diesem Beispiel wird die metadata-collection verwendet, um durch den Einsatz des Knotens metadata collection form ein Dialog zu erzeugen. Dabei wird der obere Abschnitt (ab #test invoice) für Schritt 3 und der untere Abschnitt (ab #test invoice with split information) für die Möglichkeit 1 benötigt.
# global _group: agorum.samples.collection.form.invoice _prefix: agorum_samples_collection_form_invoice_ # defaults _default: type: string # test invoice test: displayName: Rechnung usage: - form items: - number: - date: - currency: - supplier_name: - order_number: - order_date: - total_net_amount: - total_gross_amount: - total_tax_amount: - total_tax_rate: - item_list: form: aon: showAppend: true showRowDelete: true items: - number: - description: - quantity: - cost_center: - net_price: - net_amount: - tax_amount: - tax_rate: # test invoice with split information test_split: displayName: Rechnung mit Split usage: - form_split items: - number: form_split: aon: readOnly: true - date: form_split: aon: readOnly: true - currency: form_split: aon: readOnly: true - supplier_name: form_split: aon: readOnly: true - order_number: form_split: aon: readOnly: true - order_date: form_split: aon: readOnly: true - total_net_amount: form_split: aon: readOnly: true - total_gross_amount: form_split: aon: readOnly: true - total_tax_amount: form_split: aon: readOnly: true - total_tax_rate: form_split: aon: readOnly: true - item_list: form_split: aon: type: agorum.composite.form.element.splitList items: - number: form_split: aon: readOnly: true - description: form_split: aon: readOnly: true - quantity: form_split: aon: split: sum - cost_center: form_split: aon: split: diff - net_price: form_split: aon: readOnly: true - net_amount: form_split: aon: readOnly: true split: sum - tax_amount: form_split: aon: readOnly: true split: sum - tax_rate: form_split: aon: readOnly: true
Im 1. Schritt erstellen Sie den Knoten Aktuellen Benutzer zuordnen.
Dieser Knoten ist der Startknoten für den Workflow. Er weist den aktuellen Benutzer dem Workflow zu.
Im 2. Schritt erstellen Sie den Knoten Skript.
Im Knoten befüllen Sie folgenden Parameter:
Der einzufügende Code sieht etwa folgendermaßen aus:
/* global sc, sca, token, instance, outlets, inlet, parameters */ // add test data to token variables Object.assign(token.variables, { "agorum_samples_collection_form_invoice_total_tax_amount": 19, "agorum_samples_collection_form_invoice_number": "Re1", "agorum_samples_collection_form_invoice_currency": "EUR", "agorum_samples_collection_form_invoice_total_net_amount": 100, "agorum_samples_collection_form_invoice_total_gross_amount": 119, "agorum_samples_collection_form_invoice_order_number": "B1", "agorum_metadata_collection_outlet": "next", "agorum_samples_collection_form_invoice_date": "2021-11-01T23:00:00.000Z", "agorum_samples_collection_form_invoice_item_list": [ { "tax_amount": 1190, "number": "1", "quantity": 10, "cost_center": "K1", "description": "Pos 1", "net_price": 100, "net_amount": 1000, "tax_rate": 19 }, { "tax_amount": 1190, "number": "2", "quantity": 10, "cost_center": "K2", "description": "Pos 2", "net_price": 100, "net_amount": 1000, "tax_rate": 19 } ], "agorum_samples_collection_form_invoice_supplier_name": "agorum", "agorum_samples_collection_form_invoice_order_date": "2021-11-01T23:00:00.000Z", "agorum_samples_collection_form_invoice_total_tax_rate": 19 }); // Send the token through the default outlet token.leave('');
Dieser Knoten erstellt ein JavaScript, in dem Beispieldaten angegeben werden. Mit diesen Beispieldaten können die folgenden Knoten weitere Funktionen ausführen.
Im 3. Schritt erstellen Sie den Knoten metadata collection form.
Im Knoten befüllen Sie folgende Parameter:
Hinweis: Der Wert setzt sich aus dem displayName Rechnung, dem Präfix agorum_samples_collection_form_invoice_ und dem Parameter test zusammen (siehe metadata-collection-invoice.yml).
Dieser Knoten ermöglicht es, eine Oberfläche aufzurufen, die Rechnungsdaten erfasst. Es werden die Ausgangsdaten vom Knoten Skript verwendet. Diese können in der Oberfläche dann entsprechend angepasst werden.
Im nächsten Schritt sollen die Rechnungspositionen durch die Verwendung eines weiteren Knotens gesplittet werden. Dazu gibt es drei verschiedene Möglichkeiten:
Bei dieser Möglichkeit wird die Oberfläche zum Splitten von Positionen durch den Knoten metadata collection form erzeugt. Diese Möglichkeit können Sie am einfachsten anwenden, da Sie zum Ausführen dieser Möglichkeit nicht programmieren müssen. Allerdings können Sie kaum individuelle Anpassungen für die Funktionen vornehmen.
Dazu erstellen Sie den Knoten metadata collection form.
Parameter befüllen
Im Knoten befüllen Sie folgende Parameter:
Hinweis: Der Wert setzt sich aus dem displayName Rechnung mit Split, dem Präfix agorum_samples_collection_form_invoice_ und dem Parameter test_split zusammen (siehe metadata-collection-invoice.yml).
Funktionsweise des Knotens
Dieser Knoten ermöglicht es, eine Oberfläche aufzurufen, die Rechnungspositionen splitten kann. Hierfür verbinden Sie den angelegten Knoten metadata collection form aus Schritt 3 mit diesem Knoten.
Bei dieser Möglichkeit wird die Oberfläche zum Splitten von Positionen durch ein Oberflächenskript erzeugt, das das Element agorum.metadata.collection.form verwendet. Hier werden die aguila-form und die collection-form kombiniert. Dadurch lassen sich zusätzlich Felder ergänzen. Allerdings müssen Sie hierfür programmieren.
Dazu erstellen Sie den Knoten UI.
Parameter befüllen
Im Knoten befüllen Sie folgenden Parameter:
Der einzufügende Code sieht etwa folgendermaßen aus:
let aguila = require('common/aguila'); let repeater = aguila.create({ type: 'agorum.composite.form.repeater', labelPosition: 'top', elements: [ // form für Anweisung und Beschreibung { type: 'agorum.composite.form.basic', elements: [ { type: 'agorum.textDisplay', text: 'Bitte Positionen splitten' }, { type: 'agorum.composite.form.element.text', label: 'Beschreibung', name: 'description' } ] }, // collection form für die Rechnungs-Metadaten { type: 'agorum.metadata.collection.form', usage: 'form_split', collection: 'agorum_samples_collection_form_invoice_test_split' }, // form für Buttons { type: 'agorum.composite.form.basic', elements: [ { type: 'agorum.spacer', height: 24 }, { type: 'agorum.hbox', items: [ { type: 'agorum.spacer', flexible: true }, { type: 'agorum.composite.form.element.button', name: 'finish', text: 'Ende', icon: 'aguila-icon check' } ] } ] } ] }); // Listen for actions on the widget repeater.on('action', action => { // find out, which button has been pressed // and leave the ui node through the associated outlet switch (action.name) { case 'finish': // the form has to be valid, before the ui can be left through the "ok"-outlet if (repeater.validate()) { repeater.fire('leave', 'finish'); } break; } }); repeater;
Funktionsweise des Knotens
Dieser Knoten ermöglicht es, eine Oberfläche aufzurufen, die Rechnungspositionen splitten kann. Hierfür verbinden Sie den angelegten Knoten metadata collection form aus Schritt 3 mit diesem Knoten UI.
Bei dieser Möglichkeit wird die Oberfläche zum Splitten von Positionen durch ein Oberflächenskript erzeugt, dass das Element agorum.composite.form.element.splitList verwendet. Hier haben Sie den größten Anpassungsspielraum. Dadurch können Sie die Metadaten beliebig nach Ihren individuellen Wünschen anordnen. Allerdings haben Sie hier den höchsten Programmieraufwand.
Dazu erstellen Sie den Knoten UI.
Parameter befüllen
Im Knoten befüllen Sie folgenden Parameter:
Der einzufügende Code sieht etwa folgendermaßen aus:
let aguila = require('common/aguila'); let PREFIX = 'agorum_samples_collection_form_invoice_'; // Create form for workflow step. // This sample contains some common elements, feel free to use or remove them let form = aguila.create({ type: 'agorum.composite.form.basic', name: 'form', labelPosition: 'top', elements: [ // Einen Text oben anzeigen { type: 'agorum.textDisplay', text: 'Bitte Positionen splitten' }, { type: 'agorum.composite.form.element.text', label: 'Beschreibung', name: 'description' }, // form selbst erstellen // zum Beispiel mit 2 Spalten für die Kopfdaten { type: 'agorum.hbox', items: [ { type: 'agorum.vbox', flexible: true, items: [ { name: PREFIX + 'number', readOnly: true }, { name: PREFIX + 'date', readOnly: true }, { name: PREFIX + 'currency', readOnly: true }, { name: PREFIX + 'supplier_name', readOnly: true }, { name: PREFIX + 'order_number', readOnly: true }, { name: PREFIX + 'order_date', readOnly: true } ] }, { type: 'agorum.vbox', flexible: true, items: [ { name: PREFIX + 'total_net_amount', readOnly: true }, { name: PREFIX + 'total_gross_amount', readOnly: true }, { name: PREFIX + 'total_tax_amount', readOnly: true }, { name: PREFIX + 'total_tax_rate', readOnly: true } ] } ] }, { type: 'agorum.composite.form.element.splitList', name: PREFIX + 'item_list', template: [ { name: 'number', readOnly: true }, { name: 'description', readOnly: true }, { name: 'quantity', split: 'sum' }, { name: 'cost_center', split: 'diff' }, { name: 'net_price', readOnly: true }, { name: 'net_amount', readOnly: true, split: 'sum' }, { name: 'tax_amount', readOnly: true, split: 'sum' }, { name: 'tax_rate', readOnly: true } ] }, // buttons { type: 'agorum.spacer', height: 24 }, { type: 'agorum.hbox', items: [ { type: 'agorum.spacer', flexible: true }, // buttons on right side { type: 'agorum.composite.form.element.button', name: 'finish', text: 'Ende', icon: 'aguila-icon check' } ] } ] }); // Listen for actions on the widget form.on('action', action => { // find out, which button has been pressed // and leave the ui node through the associated outlet switch (action.name) { case 'finish': // the form has to be valid, before the ui can be left through the "ok"-outlet if (form.validate()) { form.fire('leave', 'finish'); } break; } }); form;
Funktionsweise des Knotens
Dieser Knoten ermöglicht es, eine Oberfläche aufzurufen, die Rechnungspositionen splitten kann. Hierfür verbinden Sie den angelegten Knoten metadata collection form aus Schritt 3 mit diesem Knoten UI.
Sie können Rechnungspositionen anpassen und diese anschließend über eine der drei Möglichkeiten splitten.