Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum core workflow 3.0 > Übersicht vorhandener Knoten


commit

Interne ID: agorum.flow.commit

Dieser Knoten beendet die Verarbeitung des aktuellen Tokens und setzt sie im Hintergrund fort. Dadurch kann der Benutzer direkt mit der Bearbeitung des nächsten Tokens fortfahren, ohne auf die nachfolgenden Schritte warten zu müssen.

Für die Hintergrundausführung werden von agorum.task bereitgestellte Thread-Pools verwendet. Hierdurch ist zum einen Multi-Threading und Verteilung auf verschiedene Prioritäten möglich und zum anderen wird die Ausführung nach commit-Knoten sofort im Hintergrund fortgesetzt, sofern Kapazität verfügbar ist.

Wenn bei der Hintergrundverarbeitung ein Fehler auftritt, hat der Workflow die Möglichkeit, darauf zu reagieren. Dazu protokolliert der commit-Knoten den Fehler.

 

Aussehen des Knotens

Verhaltensweise

Bei der Hintergrundverarbeitung verlässt der Workflow den Knoten zunächst durch das Outlet try. Stößt die Verarbeitung dabei auf einen Fehler, startet der Workflow einen weiteren Versuch, dieses Mal über das Outlet catch. Tritt hierbei ebenfalls ein Fehler auf, bricht der Verarbeitungsversuch ab, der Fehler wird protokolliert und die Variable sys_acw_error gesetzt.

Die Variable sys_acw_error enthält zwei Abschnitte: den Stacktrace im Abschnitt stack und die Fehlermeldung im Abschnitt message. Sie können die Fehlermeldung nutzen, etwa um eine Information für Benutzer über den UI-Knoten auszugeben.

Endpoints

Standard Veränderbar? Weitere Endpoints möglich?
Default (Inlet) Nein, kann nur ausgeblendet werden. ja, beliebig viele
try (Outlet) Nein, kann nur ausgeblendet werden. nicht nötig
catch (Outlet) Nein, kann nur ausgeblendet werden. nicht nötig

Parameter

Parameter Beschreibung Beispiel
Zu verwendender Thread-Pool Sie können gezielt den Thread-Pool angeben, der für die Verarbeitung verwendet werden soll. Für Informationen zum Einrichten von Thread-Pools siehe Thread-Pools konfigurieren. -

Beispiel für die Verwendung der Variable sys_acw_error im UI-Knoten

Sie können den Protokoll-Inhalt der Variable sys_acw_error etwas wie folgt im UI-Knoten verwenden, um Benutzer in der Oberfläche über den Fehler zu informieren:

 

Beispiel: Workflow mit Anzeige der Commit-Meldung über den UI-Knoten

 

Die Ausgabe für den Benutzer sieht wie folgt aus, wenn Sie sie einfach durchreichen.

 

Beispiel: Ausgabe der Commit-Meldung für Benutzer in der UI

In diesem Beispiel wird die Fehlermeldung aus der Variable sys_acw_error mit dem Label Meldung und der Stacktrace mit dem Label Stack dem Benutzer angezeigt:

let aguila = require('common/aguila');

let widget = aguila.create({
  type: 'agorum.composite.wrapper',
  wrap: {
    type: 'agorum.composite.form.basic',
    name: 'form',
    labelPosition: 'top',
    elements: [
      {
        type: 'agorum.composite.form.element.text',
        name: 'errorMessage',
        label: 'Meldung',
        readOnly: true,
      },
      {
        type: 'agorum.composite.form.element.text',
        name: 'errorStack',
        label: 'Stack',
        textArea: true,
        readOnly: true,
        monospace: true,
      },

      // buttons
      {
        type: 'agorum.spacer',
        height: 24,
      },
      {
        type: 'agorum.hbox',
        items: [
          {
            type: 'agorum.spacer',
            flexible: true,
          },
          {
            type: 'agorum.composite.form.element.button',
            name: 'ok',
            text: 'OK',
            icon: 'aguila-icon check',
          },
        ],
      },
    ],
  },
});

let form = widget.down('form');

widget
  .incoming('value', value => {
    let error = value.sys_acw_error || {};

    form.value = {
      errorMessage: error.message || '',
      errorStack: error.stack || '',
    };
  })
  .outgoing('value', () => {});

form.on('action', action => {
  switch (action.name) {
    case 'ok':
      widget.fire('leave', 'ok');
      break;
  }
});

widget;