Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.
NocoBase verfügt über integrierte gängige Datenoperationen (Hinzufügen, Löschen, Ändern, Abfragen usw.). Wenn diese Operationen komplexe Geschäftsanforderungen nicht erfüllen können, können Sie benutzerdefinierte Aktionsereignisse in einem Workflow verwenden und dieses Ereignis an die Schaltfläche „Workflow auslösen“ eines Seitenblocks binden. Wenn ein Benutzer darauf klickt, wird ein Workflow für eine benutzerdefinierte Aktion ausgelöst.
Wählen Sie beim Erstellen eines Workflows „Benutzerdefiniertes Aktionsereignis“:

v.1.6.0+
Unterschiedliche Kontexttypen bestimmen, an welche Schaltflächen von Blöcken dieser Workflow gebunden werden kann:

Wenn der Kontexttyp „Einzelner Datensatz“ oder „Mehrere Datensätze“ ist, müssen Sie die Sammlung auswählen, an die das Datenmodell gebunden werden soll:

Wenn Sie Verknüpfungsdaten der auslösenden Datenzeile im Workflow verwenden müssen, können Sie hier tiefe Verknüpfungsfelder auswählen:

Diese Felder werden nach dem Auslösen des Ereignisses automatisch in den Kontext des Workflows vorgeladen, um sie im Workflow zu verwenden.
Je nach konfiguriertem Kontexttyp des Workflows unterscheidet sich die Konfiguration der Aktionsschaltflächen in verschiedenen Blöcken.
v1.6.0+
Im Aktionspanel und in anderen Datenblöcken kann jeweils die Schaltfläche „Workflow auslösen“ hinzugefügt werden:



Binden Sie nach dem Hinzufügen der Schaltfläche den zuvor erstellten Workflow ohne Kontext, am Beispiel einer Schaltfläche im Aktionspanel:


In jedem Datenblock kann in der Aktionsleiste für einzelne Datensätze die Schaltfläche „Workflow auslösen“ hinzugefügt werden, z. B. in Formularen, Tabellenzeilen, Details usw.:



Binden Sie nach dem Hinzufügen der Schaltfläche den zuvor erstellten Workflow:


Klicken Sie anschließend auf diese Schaltfläche, um das benutzerdefinierte Aktionsereignis auszulösen:

v1.6.0+
In der Aktionsleiste eines Tabellenblocks gibt es beim Hinzufügen der Schaltfläche „Workflow auslösen“ eine zusätzliche Option zur Auswahl des Kontexttyps „Kein Kontext“ oder „Mehrere Datensätze“:

Wenn „Kein Kontext“ gewählt wird, handelt es sich um ein globales Ereignis, das nur an Workflows vom Typ „Kein Kontext“ gebunden werden kann.
Wenn „Mehrere Datensätze“ gewählt wird, kann ein Workflow vom Typ „Mehrere Datensätze“ gebunden werden, der für Massenoperationen nach der Auswahl mehrerer Daten verwendet werden kann (derzeit nur von Tabellen unterstützt). Der Bereich der wählbaren Workflows beschränkt sich hierbei auf Workflows, die passend zur Sammlung des aktuellen Datenblocks konfiguriert wurden:

Beim Auslösen durch Klicken auf die Schaltfläche müssen bereits einige Datenzeilen in der Tabelle markiert sein, andernfalls wird der Workflow nicht ausgelöst:

Angenommen, wir haben eine Sammlung „Proben“. Für Proben mit dem Status „Gesammelt“ soll eine Aktion „Zur Prüfung einreichen“ bereitgestellt werden. Diese Aktion prüft zuerst die Basisinformationen der Probe, erstellt dann einen Datensatz „Prüfprotokoll“ und ändert den Probenstatus auf „Eingereicht“. Diese Abfolge von Prozessen kann nicht durch einfaches Klicken auf Schaltflächen für „Hinzufügen, Löschen, Ändern, Abfragen“ abgeschlossen werden. In diesem Fall können benutzerdefinierte Aktionsereignisse verwendet werden.
Erstellen Sie zuerst eine Sammlung „Proben“ und eine Sammlung „Prüfprotokolle“ und geben Sie Basis-Testdaten für die Proben-Tabelle ein:

Erstellen Sie dann einen Workflow für ein „Benutzerdefiniertes Aktionsereignis“. Wenn Sie eine zeitnahe Rückmeldung des Operationsprozesses benötigen, können Sie den synchronen Modus wählen (im synchronen Modus können keine asynchronen Knoten wie manuelle Bearbeitung verwendet werden):

Wählen Sie in der Trigger-Konfiguration als Sammlung „Proben“:

Ordnen Sie die Logik im Prozess gemäß den Geschäftsanforderungen an, z. B. ist die Einreichung zur Prüfung nur erlaubt, wenn der Indikatorparameter größer als 90 ist, andernfalls wird ein entsprechender Hinweis angezeigt:

Der Knoten „Antwortnachricht“ kann in synchronen benutzerdefinierten Aktionsereignissen verwendet werden, um dem Client eine Hinweismeldung zurückzugeben. Im asynchronen Modus kann er nicht verwendet werden.
Nachdem der Prozess konfiguriert und aktiviert wurde, kehren Sie zur Tabellenoberfläche zurück und fügen Sie in der Aktionsspalte der Tabelle die Schaltfläche „Workflow auslösen“ hinzu:

Wählen Sie dann im Konfigurationsmenü der Schaltfläche die Bindung des Workflows aus und öffnen Sie das Konfigurations-Popup:

Fügen Sie den zuvor aktivierten Workflow hinzu:

Ändern Sie nach dem Absenden den Schaltflächentext in den Namen der Aktion, z. B. „Zur Prüfung einreichen“. Damit ist die Konfiguration abgeschlossen.
Wählen Sie bei der Verwendung einen beliebigen Datensatz in der Tabelle aus und klicken Sie auf die Schaltfläche „Zur Prüfung einreichen“, um das benutzerdefinierte Aktionsereignis auszulösen. Gemäß der zuvor erstellten Logik wird, wenn der Indikatorparameter der Probe kleiner als 90 ist, nach dem Klicken folgender Hinweis angezeigt:

Wenn der Indikatorparameter größer als 90 ist, wird der Prozess normal ausgeführt, ein Datensatz „Prüfprotokoll“ erstellt und der Probenstatus auf „Eingereicht“ geändert:

Damit ist ein einfaches benutzerdefiniertes Aktionsereignis abgeschlossen. Ebenso können komplexe Operationen wie die Auftragsbearbeitung oder das Einreichen von Berichten über benutzerdefinierte Aktionsereignisse realisiert werden.
Das Auslösen von benutzerdefinierten Aktionsereignissen ist nicht auf Operationen in der Benutzeroberfläche beschränkt, sondern kann auch über HTTP-API-Aufrufe erfolgen. Insbesondere bieten benutzerdefinierte Aktionsereignisse für alle Sammlungsoperationen einen neuen Aktionstyp zum Auslösen von Workflows: trigger, welcher über die Standard-Aktions-API von NocoBase aufgerufen werden kann.
Da externe Aufrufe ebenfalls auf der Benutzeridentität basieren, müssen bei Aufrufen über die HTTP-API dieselben Authentifizierungsinformationen wie bei Anfragen über die normale Benutzeroberfläche bereitgestellt werden. Dies umfasst den Authorization-Header oder den token-Parameter (beim Login erhaltener Token) sowie den X-Role-Header (aktueller Rollenname des Benutzers).
Workflows ohne Kontext müssen für die Ressource workflows ausgelöst werden:
Ein Workflow, der wie im Beispiel durch eine Schaltfläche ausgelöst wird, kann so aufgerufen werden:
Da diese Operation für einen einzelnen Datensatz gilt, muss beim Aufruf für vorhandene Daten die ID der Datenzeile angegeben werden, indem der Teil <:id> in der URL ersetzt wird.
Wenn der Aufruf für ein Formular erfolgt (z. B. Hinzufügen oder Aktualisieren), muss für das Formular zum Hinzufügen neuer Daten keine ID übergeben werden, aber die übermittelten Daten müssen als Kontext für die Ausführung übergeben werden:
Für ein Aktualisierungsformular müssen sowohl die ID der Datenzeile als auch die aktualisierten Daten übergeben werden:
Wenn sowohl ID als auch Daten übergeben werden, wird zuerst die der ID entsprechende Datenzeile geladen und dann mit den Attributen aus dem übergebenen Datenobjekt überschrieben, um den endgültigen Trigger-Datenkontext zu erhalten.
Wenn Verknüpfungsdaten übergeben werden, werden diese ebenfalls überschrieben. Seien Sie besonders vorsichtig beim Umgang mit übergebenen Daten, wenn das Vorladen von Verknüpfungsdaten konfiguriert ist, um zu verhindern, dass Verknüpfungsdaten unerwartet überschrieben werden.
Zusätzlich ist der URL-Parameter triggerWorkflows der Key des Workflows. Mehrere Workflows werden durch Kommas getrennt. Dieser Key kann durch Bewegen der Maus über den Workflow-Namen oben im Workflow-Canvas ermittelt werden:

Nach erfolgreichem Aufruf wird das benutzerdefinierte Aktionsereignis der entsprechenden Tabelle samples ausgelöst.
Beim Auslösen von Ereignissen nach einer Operation über die HTTP-API müssen Sie auch den Aktivierungsstatus des Workflows und die Übereinstimmung der Sammlungs-Konfiguration beachten, andernfalls ist der Aufruf möglicherweise nicht erfolgreich oder es treten Fehler auf.
Ähnlich wie beim Aufruf für einzelne Datensätze, aber die übergebenen Daten benötigen nur mehrere Primärschlüssel-Parameter (filterByTk[]), und der data-Teil ist nicht erforderlich:
Dieser Aufruf löst das benutzerdefinierte Aktionsereignis im Modus für mehrere Datensätze aus und verwendet die Daten mit den IDs 1 und 2 als Daten im Trigger-Kontext.