Wenn manuell gestartet
Verwende den Trigger Wenn manuell gestartet für einen Flow, der nur bei Bedarf läuft. Er lauscht weder auf Business-Central-Ereignisse noch auf einen Zeitplan – der Flow läuft, wenn ihn jemand startet.
Ein manueller Flow kann für sich allein laufen oder auf einem Datensatz einer Tabelle, die du auswählst, zum Beispiel auf einem Verkaufsauftrag oder einem Debitor.
Typische Szenarien:
- Einem Benutzer einen Ein-Klick-Start für eine Routine geben (Resync, Tagesreport versenden, Daten neu aufbauen), ohne sie zu planen.
- Datensätze verarbeiten, die ein Benutzer auswählt: „Mahnmail für diese Debitoren senden“, „diese Aufträge neu berechnen“.
- Einen Flow während der Entwicklung testen, ohne das eigentliche Ereignis auszulösen.
Trigger konfigurieren
Läuft auf Tabelle – optional. Lass das Feld leer für einen Flow, der nicht auf einem Datensatz läuft. Wählst du eine Tabelle, läuft der Flow auf einem Datensatz dieser Tabelle: Der Datensatz steht allen Schritten als SmartField Rec zur Verfügung.
Ausführungskarte öffnen – was passiert, wenn ein Lauf beendet ist, den du gestartet hast und auf den du wartest: Nie zeigt bei Erfolg nichts an und bietet bei einem fehlgeschlagenen Lauf an, ihn zu öffnen, Bei Fehler öffnet einen fehlgeschlagenen Lauf sofort, Immer öffnet den Lauf, ob erfolgreich oder nicht. Mehrere Läufe öffnen sich als Ausführungsliste. Läufe, auf die niemand wartet – von einem anderen Flow gestartet, aus einer Erweiterung ohne Dialog oder im Hintergrund –, öffnen nie etwas.
Wie jeder Flow braucht auch ein manueller Flow auf der Flow-Karte einen Code, bevor er veröffentlicht werden kann (siehe Flow-Code und Versionen). Andere Flows und Erweiterungen starten einen manuellen Flow über seinen Code.
Flow starten
Klicke auf der Flow-Karte oder im Flow-Workspace auf Diesen Flow ausführen.
- Ein Flow, der nicht auf einem Datensatz läuft, startet einmal.
- Ein Flow, der auf einem Datensatz läuft, öffnet zuerst eine Filterseite für seine Tabelle. Setze Filter, um die Datensätze auszuwählen, bestätige die Frage, für wie viele Datensätze der Flow gestartet wird, und AutoFlow startet eine Ausführung pro Datensatz.
Anschließend zeigt ein Dialog, wie weit die Ausführungen sind, und die neueste Meldung aus ihrem Ausführungsprotokoll. Er schließt sich, wenn alle Ausführungen beendet sind. Ist eine davon mit einem Fehler beendet worden, bietet AutoFlow an, sie zu öffnen.
Der Flow läuft im Hintergrund (Aufgabenwarteschlange), nicht in deiner Sitzung. Schritte, die dem Benutzer einen Dialog anzeigen, stehen in manuellen Flows deshalb nicht zur Verfügung. Dauert ein Lauf länger als fünf Minuten, schließt sich der Dialog und der Flow läuft weiter – du kannst ihn in der Ausführungsliste verfolgen.
Ist in der AutoFlow-Einrichtung eingestellt, dass Flows manuell gestartet werden, werden die Läufe nur eingeplant, und der Dialog weist darauf hin.
Flow von einer Seite aus starten
Von Seiten starten – optional. Liste die Business-Central-Seiten auf, deren Aktion Flow starten diesen Flow anbieten soll. Unterstützt werden jeweils Karte und Liste von:
- Verkaufsangeboten, -aufträgen, -rechnungen, -gutschriften, -reklamationen und Rahmenaufträgen,
- gebuchten Verkaufsrechnungen, -gutschriften und -lieferungen,
- Einkaufsangeboten, -bestellungen, -rechnungen, -gutschriften, -reklamationen und Rahmenbestellungen,
- gebuchten Einkaufsrechnungen, -gutschriften und Wareneingängen,
- Mahnungen und registrierten Mahnungen,
- Debitoren, Kreditoren, Artikeln und Kontakten.
Ein Flow, der auf einem Datensatz läuft, lässt sich nur Seiten zuordnen, die Datensätze seiner Tabelle zeigen – ein Flow auf der Tabelle Verkaufskopf passt zu Karte und Liste der Verkaufsaufträge, aber nicht zur Debitorenkarte. Die Statuszeile zeigt dir, wenn eine Seite nicht passt. Ein Flow, der nicht auf einem Datensatz läuft, passt zu jeder unterstützten Seite.
Nachdem du den Flow veröffentlicht hast, zeigt die Seite die Aktion Flow starten. Sie erscheint nur, wenn der Seite mindestens ein aktiver Flow zugeordnet ist. Die Aktion listet die zugeordneten Flows auf; wähle einen aus, um ihn zu starten:
- Auf einer Karte startet ein Flow, der auf einem Datensatz läuft, für den angezeigten Datensatz.
- In einer Liste startet er einmal pro markiertem Datensatz. Hast du mehr als einen markiert, fragt AutoFlow vorher nach, wie viele Ausführungen gestartet werden.
- Ein Flow, der nicht auf einem Datensatz läuft, startet einmal.
Derselbe Dialog wie oben verfolgt die Läufe, und die Seite wird aktualisiert, wenn sie beendet sind.
Flow aus einem anderen Flow starten
Verwende den Schritt Flow starten: Jeder aktive manuelle Flow erscheint in der Schrittauswahl deiner anderen Flows.
Flow aus einer Erweiterung starten
Entwickler können einen manuellen Flow aus eigenem Code über seinen Code starten, optional auf einem Datensatz, mit der öffentlichen Codeunit mse365 AF Manual Flow API. Dabei können sie mit demselben Dialog warten, still warten und das Ergebnis auslesen oder den Flow starten, ohne zu warten.
Eine Erweiterung, die nicht von AutoFlow abhängen darf – weil sie auch ohne AutoFlow verkauft wird –, startet den Flow stattdessen über die Codeunit 5564812 mse365 AF External Start. Sie übergibt einen temporären Name/Value Buffer (eine Standardtabelle von Business Central) mit einer Zeile pro Wert und erhält das Ergebnis im selben Puffer zurück. Wie bei jedem manuellen Start bekommt der Flow nur den Datensatz; alles Weitere lesen seine Schritte von dort.
| Name | Wert |
|---|---|
FlowCode | Der Code des Flows. |
TableNo, SystemId | Der Datensatz, auf dem der Flow läuft: seine Tabellennummer und seine SystemId. Nur für einen Flow, der auf einem Datensatz läuft. |
Mode | FireAndForget (Standard) startet den Flow und kehrt sofort zurück, Silent wartet auf das Ergebnis, WaitDialog wartet mit dem Fortschrittsdialog, Inline führt den Flow in der Sitzung des Aufrufers bis zum Ende aus – ohne Aufgabenwarteschlange, ohne Zeitlimit – und liefert immer Success oder Error. Ein Flow mit einem Sleep-Schritt kann nicht Inline laufen. |
Nach dem Aufruf enthält der Puffer ExecutionEntryNo, Status (Pending, Running, Success oder Error) und bei einem fehlgeschlagenen Lauf Message mit seinem Fehler (der ganze Text in Value Long). Kann der Flow nicht gestartet werden – unbekannter Code, ein Datensatz der falschen Tabelle, ein hier nicht aufgeführter Name –, löst der Aufruf einen Fehler aus.
TempBuffer.AddNewEntry('FlowCode', 'NOTIFY_SALES');
TempBuffer.AddNewEntry('TableNo', Format(Database::"Sales Invoice Header"));
TempBuffer.AddNewEntry('SystemId', Format(SalesInvoiceHeader.SystemId));
Codeunit.Run(5564812, TempBuffer);
Mit Action = ListFlows kommt der Puffer stattdessen mit einer Zeile pro aktivem manuellem Flow zurück: Code, Beschreibung und in Value Long die Nummer der Tabelle, auf der der Flow läuft (0 für keine). Prüfe vor dem Aufruf, ob die Codeunit existiert (AutoFlow installiert ist).
Best Practices
- Für Flows, die niemals automatisch starten sollen. Alles, bei dem ein versehentlicher Lauf teuer wäre (Massen-E-Mail, Bulk-Update), passt hierher – es gibt kein Ereignis, das ihn versehentlich starten könnte.
- Prüfe die Anzahl der Datensätze, bevor du bestätigst. Ohne Filter werden alle Datensätze der Tabelle ausgewählt.
- Nicht für geplante Aufgaben verwenden. Soll der Flow regelmäßig laufen, wähle stattdessen den Trigger Nach Zeitplan.