Allgemeine Richtlinien für Workflow-Studio Flows, Subflows und Aktionen
Erstellen, ausführen, beheben und überwachen Sie Ihren Workflow-Studio Komponenten effektiver. Verwenden Sie diese Richtlinien, um die Leistung von zu optimieren Workflow-Studio Komponenten.
Übersicht über Workflow-Studio
Integrieren Sie die Workflow-Erstellung, -Konfiguration und -Überwachung in einer einzigen Seiten-Experience. Konsolidieren Sie Playbooks, Flows, Aktionen, Entscheidungstabellen und Integrationen in einer Designumgebung.
App-Entwicklung
Verwenden Sie beim Entwerfen einer Aktion oder eines Flows diese allgemeinen Richtlinien.
- Erstellen Sie eine benutzerdefinierte Anwendung zum Speichern von Flows und Aktionen.
- Legen Sie Anwendungsberechtigungen fest, um den Zugriff auf Anwendungsdaten freizugeben oder einzuschränken.
- Gewähren Sie Anwendungsentwicklern Zugriff auf Workflow-Studio .
- Veröffentlichen Sie benutzerdefinierte Anwendungen im Anwendungs-Repository, um Flows und Aktionen für andere Instanzen bereitzustellen.
Flows
Flows sollten kurze, modulare, wiederverwendbare Arbeitssammlungen sein. Wenn die Ausführung länger als eine Stunde dauert, ist sie wahrscheinlich zu lang und kann effizienter sein.
Alle allgemeinen Richtlinien, die für Flows gelten, gelten auch für Subflows .
- Verhindern Sie Konflikte oder doppelte Geschäftslogik
-
Automatisierungen können mit Flow Designer, Business-Regeln, Workflows und Integration Hub erstellt werden. Bevor Sie verwenden Workflow-Studio , Stellen Sie sicher, dass Sie verstehen, wie vorhanden ServiceNow AI Platform Automatisierungen funktionieren. Deaktivieren Sie Automatisierungen, bevor Sie sie durch ersetzen Workflow-Studio Flows und Aktionen. Siehe Über die Architektur Um zu erfahren, wie es geht Workflow-Studio Funktioniert in ServiceNow AI Platform.
Überprüfen Flows , Subflows , Und Aktionen Dokumentation, falls erforderlich.
- Bestimmen Sie, ob Ihr Flow einen Auslöser oder eine Variableneingabe benötigt
- Flows werden immer ausgeführt, wenn ihre Auslöserbedingungen erfüllt sind, und Auslöser stellen immer dieselben Daten bereit wie Eingaben für Flows. Wenn Sie stattdessen Variableneingaben benötigen, um einen Flow zu initiieren, erstellen Sie einen subflow .
- Geschäftslogik wiederverwenden
- Erstellen Sie einen Satz wiederverwendbarer Vorgänge als Subflow, der dann in mehreren Flows verwendet werden kann.
- Gewähren Sie Flow-Rollen, um auf rollengeschützte Daten zuzugreifen und Anwenderinformationen zu erhalten
- Flow-Rollen helfen, Berechtigungen für Ihre Flows einfach zu halten. Verwenden Sie Flow-Rollen, um Anwenderinformationen zu erhalten und Zugriff auf Daten zu gewähren, anstatt einen Flow als Systemanwender auszuführen. Durch das Hinzufügen von Flow-Rollen erhalten Sie auch Zugriff auf zusätzliche Daten, die ein anwenderinitiierter Flow normalerweise nicht hat. Die gewährten Rollen gelten nur für den Flow. Sie gelten nicht für den Anwender, der den Flow initiiert hat.
- Verwenden Sie Flow-Logik oder einen zeitplanbasierten Auslöser, um das Flow-Timing zu steuern
- Flow-Logik- oder zeitplanbasierte Auslöser helfen, die Leistung Ihrer Flows zu optimieren. Verwenden Sie nicht gs.Sleep() Methode zum Warten innerhalb eines Flows. Die gs.Sleep() Die Methode verhindert, dass der Thread andere Arbeiten ausführt. Um einen Flow zu einem bestimmten Zeitpunkt auszuführen, verwenden Sie einen zeitplanbasierten Auslöser. Um einen Flow für eine bestimmte Dauer anzuhalten, verwenden Sie Warten Sie eine Dauer Oder Warten Sie auf Bedingung Flow-Logik.
- Vermeiden Sie Abhängigkeiten
- Parallele Verzweigungen, die voneinander abhängig sind, halten einen Flow an, wenn eine Verzweigung auf Ausgabe von einer anderen Verzweigung warten muss. Anstatt parallele Verzweigungen in einem Flow zu erstellen, rufen Sie einen Subflow auf, und geben Sie die Ergebnisse an den Haupt-Flow zurück.
- Umfangsschleifenzähler
-
Skriptschleifen haben keine maximale Anzahl von Iterationen, daher werden Schleifen unendlich ausgeführt, wenn keine gültige Exit-Bedingung vorhanden ist.
Um sicherzustellen, dass eine gültige Exit-Bedingung vorhanden ist, führen Sie Umfangsschleifenzähler in Inline-Skripts oder in Skriptschritten innerhalb einer Aktion durch.Hinzufügen
VARBisFür (i=0; i< Länge; i++):Für (VAR i=0; i< Länge; i++) - Begrenzen Sie für jede und do-bis-Schleife auf 1000 Iterationen
- Iterationen mit 1000 oder mehr Schleifen können zu Arbeitsspeicher führen Probleme Von der Speicherung von Ausführungsdetails und Kontextdatensätzen.
- Legen Sie die maximale Anzahl von Datensätzen für „Datensätze suchen“ fest.
- Vermeiden Sie das Ändern der Eigenschaft sn_Flow_Designer.max_Iterations, die standardmäßig auf 1000 festgelegt ist.
- Bei geschachtelten Schleifen hat jede Schleife eine eigene maximale Anzahl von Iterationen.
- Bei großen Datenverarbeitungsmengen sollten Sie die Batches in kleinere Batches in Betracht ziehen.
- Berücksichtigen Sie für Massenimporte Gleichzeitige Importe .
- QuickAPI für schnellere Ausführungen verwenden (Business-Regel-Alternative)
-
- QuickAPI Ausführungen sind viel schneller, es gibt jedoch weniger Debugging-Fähigkeit.
- Foreground-QuickAPI-Ausführungen werden in der Anwendersitzung als Anwender ausgeführt, der den Flow aufgerufen hat.
- QuickAPI-Ausführungen im Hintergrund werden in einem Hintergrund-Thread ausgeführt und in der Anwendersitzung „System“ ausgeführt.
- Verwenden Sie „Do bis Schleifen“, anstatt Flows von sich selbst aufzurufen
- Direkte Rekursion, bei der ein Flow sich selbst aufruft, nicht zulässig ist und Fehler auftreten. Indirekte Rekursion, bei der Flow A Flow B aufruft, der Flow A bis zu dreimal aufruft. Anstatt einen Flow rekursiv aufzurufen, verwenden Sie die Flow-Logik „bis ausführen“, um die Arbeit an Datensätzen fortzusetzen, bis eine bestimmte Bedingung erfüllt ist.
- Führen Sie Flows im Hintergrund aus
- Das Ausführen von Flows im Hintergrund ermöglicht es UI-Threads Soll freigegeben werden, anstatt die Anwendersitzung anzuhalten, bis die Flow-Ausführung abgeschlossen ist. Standardmäßig werden Flows asynchron im Hintergrund ausgeführt. Durch das Ausführen von Flows im Hintergrund können Anwender weiterhin in der Anwenderoberfläche arbeiten, während der Flow ausgeführt wird.
- Vermeiden Sie Flow-Logik, die nach dem Sammeln einer großen Ausgabe wartet
- Die Verwendung einer großen Nutzlast unmittelbar nach dem Abrufen kann dazu beitragen, Speicherprobleme zu vermeiden. Anstatt eine große Nutzlast im Arbeitsspeicher zu speichern, fügen Sie Aktionen hinzu, um die Nutzlast zu verarbeiten. Je früher Sie eine abgerufene Nutzlast verarbeiten, desto schneller kann das System Arbeitsspeicher freigeben, um andere Aktionen zu verarbeiten.
- Minimieren Sie Hexen Zwischen Umgebungen
- Ständig hin- und herwechseln zwischen Instanz und MID Serverschritte in einem Flow können zu Verzögerungen bei der Verarbeitung führen . Um das Risiko von Verzögerungen zu minimieren, beschränken Sie den Wechsel zwischen Instanz und MID auf nur ein Mal.
- Schließen Sie vom Flow generierte sys_Complex_object-Datensätze in Update-Sätze ein
- Fehlt Komplexe Daten Schemas können zu Ausführungsproblemen führen. Stellen Sie sicher, dass Sie vom Flow generierte sys_Complex_object-Datensätze in Update-Sätze einschließen. Anstatt Update-Sätze manuell zu erstellen, sollten Sie die Übertragung von Flows von einer Instanz in eine andere mit dem Anwendungs-Repository erwägen.
- Aufruf-Flows aus einem Skript, wenn Sie einen anwenderdefinierten Auslöser benötigen
- Wenn keiner der vorhandenen Auslöser Ihre Geschäftsanforderungen erfüllt, können Sie ein Skript erstellen, um einen Flow zu starten, wenn die anwenderdefinierten Auslöserbedingungen erfüllt sind. Anstatt einen Flow mit einem nicht benötigten Auslöser zu erstellen, sollten Sie stattdessen einen Subflow erstellen, der keinen Auslöser hat. Verwenden Sie Ihr Skript, um die erforderlichen Subflow-Eingaben nur bereitzustellen, wenn Ihre Skriptbedingungen erfüllt sind. Durch das Aufrufen eines Subflows anstelle eines Flows wird vermieden, dass die Flow-Auslöserbedingungen erfüllt werden und der Flow unerwartet ausgeführt wird.
- Vermeiden Sie die Bereitstellung neuerer Release-Flows für Instanzen in älteren Releases
- Workflow-Studio Unterstützt keine Bereitstellung neuerer Release-Flows für Instanzen, die in früheren Releases ausgeführt werden. Gefahr:Das Flow-Datenmodell kann zwischen Releases geändert werden, was verhindern kann, dass neuere Flows ausgeführt werden, oder zu unerwarteten Ergebnissen führen, wenn sie auf früheren Releaseinstanzen ausgeführt werden. Führen Sie ein Upgrade Ihrer Instanzen auf die gleichen Release-Versionen durch, bevor Sie sie bereitstellen.
- Deaktivieren Sie Flow-Reporting in der Produktion
- Minimieren Sie die zum Ausführen von Flows erforderliche Arbeitsspeichermenge, indem Sie sie deaktivieren Flow-Reporting . Flow-Reporting speichert Konfigurations- und Laufzeitinformationen für die Seite „Ausführungsdetails“. Diese Berichte sind gut für die Problembehandlung, erfordern jedoch, dass eine große Menge von Daten sowohl im Arbeitsspeicher als auch in der Datenbank aufbewahrt wird. Standardmäßig ist Flow-Reporting deaktiviert, und das System generiert nur Ausführungsdetails, wenn Sie einen Flow oder eine Aktion manuell testen. Stattdessen können Sie Protokolldateien verwenden, die weiterhin verfügbar sind, wenn die Berichterstellung deaktiviert ist.
- Reduzieren Sie den Arbeitsspeicher, der in Flows mit geschachtelter Schleife verbraucht wird
- Wenn das Reporting aktiviert ist, legen Sie com.snc.process_flow.reporting.iteration.lastn auf den Wert „1“ fest, um die Menge des Arbeitsspeichers zu reduzieren, die vorherige Schleifeniterationen verbrauchen. Je mehr Iterationen Sie melden, desto mehr Arbeitsspeicher ist erforderlich.
Subflows
Allgemeine Richtlinien, die für gelten Flows Auch auf Subflows anwenden.
Gründe für die Verwendung eines Subflows anstelle eines Flows sind:
- Bestimmen Sie, ob Ihr Flow einen Auslöser oder eine Variableneingabe benötigt
- Flows werden immer ausgeführt, wenn ihre Auslöserbedingungen erfüllt sind. Auslöser stellen immer dieselben Daten wie Eingaben für Flows bereit. Wenn Sie stattdessen Variableneingaben benötigen, um einen Flow zu initiieren, erstellen Sie einen subflow .
- Geschäftslogik wiederverwenden
- Erstellen Sie einen Satz wiederverwendbarer Vorgänge als Subflow, der dann in mehreren Flows verwendet werden kann.
- Konfigurieren Sie verschiedene Eingabewerte für jeden Anruf
- Konfigurieren Sie die Eingabewerte eines Subflows bei jedem Aufruf unterschiedlich. Entwerfen Sie beispielsweise einen Subflow, um verschiedene Datensatztypen als Eingabeausführung zu akzeptieren. Verwenden Sie diesen generischen Datensatz-Subflow erneut, anstatt einen bestimmten Flow für jeden Datensatztyp zu schreiben.
- Verbessern Sie die Leistung und Lesbarkeit großer Flows
-
Verwenden Sie Subflows, wenn ein Flow 25 Aktionen überschreitet. 50 ist die maximale Anzahl von Aktionen, die von der Systemeigenschaft sn_Flow_Designer.max_actions angegeben wird. Begrenzen Sie jedoch einen Flow auf 25 Aktionen, um die beste Leistung zu erzielen.
- Übergeben Sie Eingaben und Ausgaben mit Subflows
- Rufen Sie Subflows auf, wenn Sie Eingaben und Ausgaben übergeben möchten. Verwenden Sie Subflows, wenn Sie die Eingaben angeben möchten, die für einen Subflow verfügbar sind, wenn er startet, oder wenn Sie die Ausgaben angeben möchten, die für den übergeordneten Flow nach dem Ende eines Subflows verfügbar sind.
- Lösen Sie mehrere Flows für ein einzelnes Ereignis im Vergleich zu parallelen Subflows aus
-
- Verwenden Sie parallele Subflows, wenn miteinander verknüpfte Ausgaben vorhanden sind oder wenn alle verfügbar sind. Wenn nicht, ist es einfacher, mehrere Flows auszulösen.
- Um parallele Subflows zu konfigurieren, starten Sie jeden Subflow ohne Warten, und verwenden Sie dann die Wartebedingung, um zu warten, bis jeder Subflow Terminal ist (abgeschlossen, Fehler, abgebrochen).
- Verwenden Sie dynamische Flows, wenn Sie mehrere Subflows mit ähnlichen Funktionen haben
- Mit dynamischen Flows können Sie Ihre Prozesse unterteilen, indem Sie eine Vorlage anwenden, um die Eingaben mehrerer ähnlicher Subflows zu verarbeiten. Mit der Kompartitionalisierung können Sie zwischen Subflows unterscheiden, die ähnliche Funktionen ausführen, z. B. Subflows für IntegrationHub Spokes.
- Vermeiden Sie das Limit von 10 Elementen im Fehlerbehandlungsprozess
- Anstatt zu erzwingen, dass Ihr Fehlerbehandlungsprozess innerhalb eines Grenzwerts von 10 Elementen passt, rufen Sie Subflows auf, die viele weitere Elemente enthalten können. Sie können die Subflow-Ausgaben auch verwenden, um die Automatisierung in anderen Flows auszulösen.
- Ergreifen Sie Korrekturmaßnahmen
- Anstatt dieselbe Aktionssequenz in mehreren Flows neu zu erstellen, erstellen Sie wiederverwendbare Subflows, um Fehler in Ihren Datensatzdaten zu beheben. Wenn ein Flow-Fehler Ihre Datensatzdaten in einem unerwünschten Status lässt, verwenden Sie Subflows, um diese Datensätze zu korrigieren. Sie können den Fehler-Handler verwenden, um solche Datensatzdaten als Subflow-Ausgabe zu identifizieren.
Wiederholungen
Befolgen Sie diese allgemeinen Richtlinien beim Erstellen von Datensatzauslösern.
- Bestimmen Sie, ob Ihr Flow einen Auslöser oder eine Variableneingabe benötigt
- Flows werden immer ausgeführt, wenn ihre Auslöserbedingungen erfüllt sind. Auslöser stellen immer dieselben Daten wie Eingaben für Flows bereit. Wenn Sie stattdessen Variableneingaben benötigen, um einen Flow zu initiieren, erstellen Sie einen subflow .
- Fügen Sie Bedingungen hinzu, um anzugeben, welche Datensatzwerte Ihren Flow starten
- Das Starten eines Flows nur bei Bedarf verbraucht weniger Systemressourcen als das Starten eines Flows, das Anhalten und das Warten auf Fortsetzen des Flows, bis eine bestimmte Datensatzbedingung gilt. Anstatt einen Flow zu erstellen, der mit einer Aktion „auf Bedingung warten“ beginnt, entwerfen Sie den Flow neu, um die Wartebedingung als Teil des Datensatzauslösers einzubeziehen.
- Erstellen Sie eindeutige Bedingungen für Datensatzauslöser in derselben Tabelle
- Um zu verhindern, dass Flows sich gegenseitig überschreiben, erstellen Sie eindeutige Bedingungen für jeden Flow, der in derselben Tabelle ausgeführt wird. Wenn mehrere Flows in derselben Tabelle denselben Filter haben, kann die Reihenfolge, in der die Flows ausgeführt werden, nicht ermittelt werden. Die Verwendung von Bedingungen hilft auch, die Flow-Leistung zu optimieren, indem ein präziserer, kleinerer Satz von Datensätzen zurückgegeben wird.
- Durch Import- und Update-Sätze hinzugefügte oder aktualisierte Datensätze ignorieren
- Datensatzauslöser ignorieren Datensätze, die durch Anwenden eines Update-Satzes oder Importieren einer XML-Datei hinzugefügt oder aktualisiert wurden. Diese Vorgänge gelten für die gesamte Anwendung oder Tabelle und nicht für einen einzelnen Datensatz.
- Ersetzen Sie Datensatzauslöser in Servicekatalog-Tabellen durch Anwendungsauslöser für Servicekatalog
- Flow Designer zeigt Servicekatalog-Tabellen nicht mehr als Optionen für Datensatzauslöser an. Erstellen Sie stattdessen Flows, die den Auslösertyp der Servicekatalog-Anwendung verwenden.
Wartebedingungen
Befolgen Sie diese allgemeinen Richtlinien, wenn Sie Flows erstellen, die auf eine Bedingung warten.
- Verwenden Sie Datensatzauslöser anstelle von Wartebedingungen, um Flows zu starten
- Wenn ein Flow nur ausgeführt werden soll, wenn bestimmte Datensatzbedingungen erfüllt sind, erstellen Sie einen Flow mit einem Datensatzauslöser, anstatt einen Flow zu starten und anzuhalten. Ein wartender Flow verbraucht mehr Systemressourcen als ein Flow-Auslöser.
- Brechen Sie Flows ab, deren Fortsetzungsbedingungen niemals auftreten können
- Verhindern Sie, dass Ihre Flows unbegrenzt warten, indem Sie Flow-Stoppbedingungen mit angeben Flow-Logik beenden. Um Systemressourcen freizugeben, können Sie auch jeden Flow abbrechen, dessen Fortsetzungsbedingungen nie erfüllt werden können. Brechen Sie beispielsweise Flows ab, die auf Aktualisierungen von Incident-Datensätzen warten, wenn der zugehörige Incident geschlossen wird.
- Beschränken Sie die Wartebedingungen auf Felder in der aktuellen Tabelle
- Die Aktion „auf Bedingung warten“ kann nur Änderungen an den Feldern der Tabelle überwachen, zu der der Datensatz gehört. Die Aktion kann keine Änderungen an Feldern in zugehörigen Datensätzen oder Katalogvariablen erkennen. Wenn eine Aktion beispielsweise auf Änderungen an einem Incident-Datensatz wartet, kann sie keine Änderungen an einem zugehörigen Datensatz wie einem Katalogelement oder einem Change-Aufgabendatensatz erkennen. Vermeiden Sie das Erstellen von Wartebedingungen, die DOT-Walk zu einem anderen Datensatz führen, da diese Felder tatsächlich zum zugehörigen Datensatz gehören. Vermeiden Sie das Erstellen von Wartebedingungen, die auf Katalogvariablen basieren.
Flows oder Subflows mit Phasen
- Vermeiden Sie es, Phasen zu definieren, die von einer für jede Flow-Logik abhängen
- Flow Designer verhindert, dass Sie Phasen in hinzufügen Für Jeden Blockieren. Sie können Phasen nur vor oder nach hinzufügen Für Jeden Blockieren.
- Vermeiden Sie das Erstellen von Phasen für dieselben Datensätze in verschiedenen Flows oder Subflows
- Ein Phasenfeld zeigt immer die Phaseninformationen an, die vom letzten Flow oder Subflow bereitgestellt wurden, der für den Datensatz einer Tabelle ausgeführt werden soll. Wenn mehrere Flows oder Subflows für dieselben Datensätze ausgeführt werden, können die in einem Flow oder Subflow definierten Phasen die Phasen theoretisch aus einem anderen Flow oder Subflow überschreiben. Um zu vermeiden, dass mehrere Flows oder Subflows die Phasen der anderen überschreiben, definieren Sie für jeden Flow oder Subflow eindeutige Auslöser- oder Startbedingungen.
- Vermeiden Sie das Aktualisieren von Phasenfeldern außerhalb eines Flows oder Subflows
- Wenn Sie Phasen mit einem Flow oder Subflow verwalten, vermeiden Sie es, Datensatzphasenfelder außerhalb des Flows oder Subflows direkt zu aktualisieren. Das manuelle Aktualisieren des Werts eines Phasenfelds kann zu unerwarteten oder unerwünschten Ergebnissen führen.
- Stellen Sie sicher, dass jeder Flow in einer Tabelle über eindeutige Auslöserbedingungen verfügt
- Das Hinzufügen eindeutiger Auslöserbedingungen zu jedem Flow stellt sicher, dass die Flows nur unter diesen Bedingungen ausgeführt werden, und verhindert, dass die Phasen von einem Flow die Phasen eines anderen Flows überschreiben. Die Angabe eindeutiger Auslöserbedingungen erleichtert die Problembehandlung von Flows, indem die Anzahl der Flow-Ausführungen begrenzt wird, die zu Datensatzänderungen führen können.
- Verwenden Sie Fehlerphasen, um mit dem Anwender zu kommunizieren
- Der Flow-Fehlerstatus wirkt sich nicht auf die Flow-Ausführung aus. Ein Flow wird auch dann ausgeführt, wenn er eine Fehlerphase erreicht. Verwenden Sie einen bedingten Flow-Logikblock, um die Fehlerphase festzulegen und dem Anwender mitzuteilen, dass der Status der aktuellen Phase Fehler ist. Wenn beispielsweise eine Genehmigung nicht innerhalb des erforderlichen Grenzwerts genehmigt wird, können Sie dem Anwender einen Fehler mitteilen.
- Verwenden Sie die Fehlerphase, um die Verarbeitung eines Flows anzuhalten
- Verwenden Sie einen bedingten Flow-Logikblock, um zu identifizieren, wann ein Flow in die Fehlerphase eintritt. Verwenden Sie die Flow-Logik, um die Verarbeitung des Flows anzuhalten oder eine Art von Korrekturaktion durchzuführen. Sie können beispielsweise den Datensatzstatus oder die Zuweisung ändern, wenn ein Flow einen Fehlerstatus erreicht.
Führen Sie Folgendes in paralleler Flow-Logik aus
- Vermeiden Sie das Erstellen von Datenabhängigkeiten zwischen Pfaden
- Da ein Flow Pfade in beliebiger Reihenfolge ausführen kann, sollten Sie vermeiden, Datenabhängigkeiten zwischen separaten Pfaden zu erstellen. Beispielsweise haben Sie keinen Pfad, der einen Datensatz erstellt, und keinen anderen Pfad, der denselben Datensatz aktualisiert. Der Update-Datensatzpfad kann vor dem Erstellungsdatensatz-Pfad ausgeführt werden.
- Geben Sie keine Daten zwischen Pfaden frei
- Workflow-Studio Verhindert, dass Sie Datenpillen zwischen Pfaden ziehen, da das System nicht bestimmen kann, welcher Pfad zuerst abgeschlossen wird, um den Ausgabewert bereitzustellen.
Flow-Logik für dynamische Flows
- Verwenden Sie dynamische Flows, wenn Sie mehrere Subflows mit ähnlichen Funktionen haben
- Mit dynamischen Flows können Sie Ihre Prozesse unterteilen, indem Sie eine Vorlage anwenden, um die Eingaben mehrerer ähnlicher Subflows zu verarbeiten. Mit der Kompartitionalisierung können Sie zwischen Subflows unterscheiden, die ähnliche Funktionen ausführen, z. B. Subflows für IntegrationHub Spokes.
- Stellen Sie sicher, dass dynamisch genannte Subflow-Eingaben mit Vorlagen-Flow-Eingaben übereinstimmen
- Das System löst einen Fehler aus, und der Haupt-Flow kann nicht ordnungsgemäß ausgeführt werden, wenn die Eingaben eines dynamischen Flows und einer Flow-Vorlage nicht übereinstimmen.
- Verwenden Sie beim Abrufen von Flow-Ausgaben den richtigen Kontext
- Ein Kontextdatensatz identifiziert die Flow-Ausführung eindeutig. Wenn Sie einen dynamischen Flow mehrmals ausführen, stehen mehrere Kontextdatensätze zur Auswahl. Wenn Sie verwenden einen dynamischen Flow mehrmals innerhalb eines Flows. Stellen Sie sicher, dass Sie jedes Mal, wenn Sie Flow-Ausgaben erhalten, den richtigen Kontextdatensatz aus der richtigen Ausführung auswählen.
Passwort2-Datenpillen
- Weisen Sie Werte mithilfe vorhandener Passwortdatenpillen (zweifach verschlüsselt) zu.
- Sie können einer Passwort2-Variable nur einen Wert zuweisen, indem Sie eine vorhandene Passwort2-Datenpille auswählen. Die Auswahl von Werten aus anderen Feldtypen wird nicht unterstützt. Workflow-Studio Zeigt eine Warnmeldung an, wenn ungültige Datenpillentypen ausgewählt werden.Hinweis:Sie können Passwortwerte (zweifach verschlüsselt) nicht manuell eingeben.
- Verwenden Sie Passwortvariablen (zweifach verschlüsselt) nur für gültige Feldtypen
- Workflow-Studio Verhindert die Auswahl von Passwort2-Datenpillen als Wert für ungültige Feldtypen. Das System zeigt eine Warnmeldung an, wenn das Feld ein inkompatibler Typ ist.Workflow-Studio Erlaubt nur das Ziehen von Passwort2-Datenpillen in die folgenden Feldtypen:
- E-Mail-Textfelder
- HTML-Felder
- Felder „Passwort 2“
- PowerShell-Eingabevariablen
- REST-Felder
- Variablen
- REST-Nutzlasttext
- Abfrageparameter
- Header
- REST-mehrteilige Formularwerte
- Formular-URL-codierte Werte
- SOAP-Felder
- Header
- Umschlag
Hinweis:Sie können Passwortvariablen (zweifach verschlüsselt) nicht als Bedingungen verwendenFlow Designer führt eine Validierungsprüfung durch, wenn ein Anwender Aktionen und Flows speichert, veröffentlicht oder testet. Diese Prüfung zeigt, dass eine Warnung für Datenpillen, die in eingeschränkten Feldtypen abgelegt wurden, und verhindert die Ausführung der Aktion oder des Flows. Aktualisieren Sie die Aktion oder den Flow, um die ungültige Datenpille zu entfernen, und wiederholen Sie die Aktion.
- Richten Sie Verschlüsselungsmodule für die Entschlüsselung ein
- Nur Anwender mit einem gültigen Zugriff auf das Verschlüsselungsmodul können den Inhalt von Passwort2-Variablen entschlüsseln und anzeigen. Informationen zum Festlegen des Verschlüsselungsalgorithmus und der Rollen, die auf verschlüsselte Daten zugreifen können, finden Sie unter Passwort2-Verschlüsselung mit KMF .
SLA-Prozentsatz-Timer-Aktionen
Befolgen Sie diese allgemeinen Richtlinien, wenn Sie Flows erstellen, die Aktionen für den Prozentsatz des Service Level Agreement (SLA)-Timers enthalten.
- Fügen Sie SLA-Prozentsatz-Timer-Aktionen nur Flows mit einem SLA-Aufgabenauslöser hinzu
- Eine SLA-Prozentsatz-Timer-Aktion kann nur ausgeführt werden, wenn der Flow mit einem SLA-Aufgabenauslöser startet. Sie können keinen Subflow aktivieren, der eine SLA-Prozentsatz-Timer-Aktion enthält.
- Erstellen Sie eine bedingte Flow-Logik für erwartete Statuswerte
- Verwenden Sie den Wert von Status Feld als Bedingung für Flow-Logik. Flow-Logik für erwartet erstellen Status Werte wie Abgeschlossen , Reparieren , Und Übersprungen . Fügen Sie beispielsweise einen hinzu Wenn Flow-Logikblock zum Senden einer Benachrichtigung, wenn der SLA-Prozentsatz-Timer den Status hat Abgeschlossen .
- Weisen Sie jeder SLA-Prozentsatz-Timer-Aktion einen eindeutigen kumulativen Prozentwert für Wartezeit zu
- Jede SLA-Prozentsatz-Timer-Aktion berechnet ihr eigenes geplantes Enddatum/-Uhrzeit anhand des Prozentwerts „Warten auf“. Wenn Sie mehrere SLA-Prozentsatz-Timer-Aktionen erstellen, geben Sie jeder Aktion einen eigenen eindeutigen kumulativen Prozentwert für Wartezeit. Erstellen Sie beispielsweise drei separate Aktionen mit verschiedenen Prozentsatzwerten, z. B. 25 %, 50 % und 75 % abgeschlossen. Wenn Sie alle drei Aktionen auf denselben Prozentsatz für den Abschluss festlegen, z. B. 25 %, werden die Timer gleichzeitig abgeschlossen.
- Kopieren Sie vorhandene Flows, um Anpassungen vorzunehmen
- Reduzieren Sie die Entwicklungszeit, indem Sie die Standard-SLA-Flows kopieren und die Kopien mit Ihrer eigenen Logik anpassen. Wählen Sie einen anwenderdefinierten Flow aus, der aus der SLA-Definition ausgeführt werden soll. Siehe Erstellen Sie eine SLA-Definition .
Dynamische Eingaben
- Berücksichtigen Sie dynamische Eingaben für Integrationen von Drittparteien
- Mit dynamischen Eingaben können Sie Flows erstellen, die dynamisch Daten aus externen Quellen abrufen. In Drittpartei-Integrationen können dynamische Eingaben Datenwerte bereitstellen, die sich auf einen bestimmten Endpunkt beziehen. Weitere Informationen zum Einrichten von Drittpartei-Integrationen mit finden Sie Workflow-Studio, Siehe IntegrationHub .
- Beachten Sie die Zeit, die zum Abrufen großer Datenmengen erforderlich ist
- Standardmäßig haben dynamische Eingaben bis zu 300 Sekunden Zeit, um Daten zu erfassen, bevor sie eine Zeitüberschreitung aufweisen. Wenn Ihre Datenerfassungsaktion mehr Zeit zum Sammeln von Daten benötigt, legen Sie fest sn_flow_designer.sync_action_execution_timeout_in_secondsSystemeigenschaft auf einen höheren Wert. Verwenden Sie jedoch keine langen Zeitüberschreitungswerte für interaktive Flows, bei denen ein Endanwender einen Wert eingeben oder auswählen muss.
- Achten Sie auf Skriptfehler
- Da alle Datenerfassungsaktionen einen Skriptschritt verwenden, können beim Skripting potenzielle Fehler auftreten. Wenn Sie Skripts zur Ausgabe von JSON-Variablen für Ihre dynamischen Eingaben verwenden, können Fehler auftreten, die verhindern, dass Eingaben die benötigten JSON-Werte erhalten. Wenn ein dynamischer Eingabeskripting-Fehler auftritt, wird möglicherweise die folgende Warnmeldung angezeigt.
Abbildung : 1. Meldung, die für Skriptfehler angezeigt wird - Beschränken Sie Eingaben vom Typ „dynamische Eingaben“ auf 40 Eingabewerte
- Eine Eingabe vom Typ „dynamische Eingaben“ kann nur eine bestimmte Anzahl von Eingaben rendern, bevor das JSON-Objekt zu groß wird, um es im Arbeitsspeicher zu speichern. Wenn Sie Ihre dynamischen Eingaben auf 40 Eingabewerte beschränken, wird die Wahrscheinlichkeit minimiert, dass der Arbeitsspeicher ausgeht und unerwartetes Verhalten wie Renderingfehler oder Datenkürzung auftritt.
- Beschränken Sie die JSON-Ausgabe auf 5000 Array-Elemente für dynamische Vorlagen und dynamische Auswahlmöglichkeiten
- Dynamische Auswahl und dynamische Vorlageneingaben können nur bis zu 5000 Array-Elemente anzeigen. Eine dynamische Auswahl kann nur bis zu 5000 Auswahllistenoptionen anzeigen, und eine dynamische Vorlage kann nur bis zu 5000 Feldvorlagenwerte anzeigen. Wenn Ihre Datenerfassungsaktion Daten für eine dynamische Vorlage oder eine dynamische Auswahl erfasst, beschränken Sie die maximale Anzahl von Array-Elementen, die zurückgegeben werden, auf 5000. Der Grenzwert für 5000 Array-Elemente verhindert, dass die Instanz beim Rendern der Auswahlmöglichkeiten oder Feldwerte Leistungsprobleme aufweist.
Dynamische Ausgaben
- Verwenden Sie dynamische Ausgaben für Integrationen von Drittparteien
- Verwenden Sie dynamische Ausgaben für Introspektion Und ruft während des Flow-Designs Daten aus externen Systemen ab. Sie können beispielsweise Serviceendpunkte oder Aufrufaktionen angeben, die mit bestimmten Endpunkt-APIs interagieren. Weitere Informationen zum Einrichten von Drittpartei-Integrationen mit finden Sie Workflow-Studio, Siehe IntegrationHub .
- Beachten Sie die Zeit, die zum Abrufen großer Datenmengen erforderlich ist
- Standardmäßig haben dynamische Ausgaben bis zu 300 Sekunden Zeit, um Daten zu erfassen, bevor das System sie stoppt. Wenn Ihre Datenerfassungsaktion mehr Zeit zum Sammeln von Daten benötigt, legen Sie fest sn_flow_designer.sync_action_execution_timeout_in_secondsSystemeigenschaft auf einen größeren Wert. Vermeiden Sie lange Zeitüberschreitungswerte für interaktive Flows, bei denen ein Endanwender erwartet, einen Wert einzugeben oder auszuwählen.
- Achten Sie auf Skriptfehler
- Da alle Datenerfassungsaktionen einen Skriptschritt verwenden, können beim Skripting potenzielle Fehler auftreten. Überprüfen Sie alle Skripts, die zur Ausgabe von JSON-Variablen verwendet werden, da Skriptfehler verhindern können, dass die Ausgaben die benötigten JSON-Werte erhalten. Wenn ein dynamischer Ausgabeskripting-Fehler auftritt, wird möglicherweise die folgende Warnmeldung angezeigt.
Abbildung : 2. Meldung, die für Skriptfehler angezeigt wird
Liste.[Tabelle] Daten
- Fügen Sie einen Referenzqualifizierer hinzu, um Listendatensätze zu filtern
- Filtern Sie die Datensätze, die die Listenvariable als gültige Optionen anzeigt, indem Sie einen Referenzqualifizierer hinzufügen. Der Referenzqualifizierer fungiert als erforderlicher Listenfilter und bewirkt, dass die Listenvariable nur Datensätze anzeigt, die den Bedingungen des Referenzqualifizierers entsprechen. Um beispielsweise nur aktive Incident-Datensätze anzuzeigen, fügen Sie die Referenzqualifizierererbedingung hinzu [Aktiv][ist][wahr] .
- Vermeiden Sie die Auswahl von Standarddatensätzen für Aktionen, die für den ServiceNow Store vorgesehen sind
- Vermeiden Sie die Auswahl von Standarddatensätzen für eine Liste, es sei denn, Sie wissen, dass alle Instanzen Zugriff auf die ausgewählten Datensätze haben. Spoke-Entwickler haben normalerweise keinen Zugriff auf die Daten der Kunden, die ihre anwenderdefinierte Aktion installieren. Wenn Sie eine anwenderdefinierte Aktion im ServiceNow Store veröffentlichen möchten, müssen Sie möglicherweise Standarddatensätze als Demodaten angeben.
- Verwenden Sie Listenvariablen in für jede Flow-Logik
- Sie können eine Listenvariable verwenden, um die Datensätze anzugeben, in denen für jede Flow-Logik verarbeitet werden soll. Die für jede Flow-Logik ignoriert beliebige Kein Datensatz sys_ID In den Daten vorhanden. Wenn die Variable Liste beispielsweise eine E-Mail-Adresse enthält, ignoriert die Flow-Logik sie.
Genehmigungsregeln
- Einen Standardwert angeben
- Erstellen oder wählen Sie eine Genehmigungsregel als Standardwert aus.
Transformationsfunktionen
- Wenden Sie Transformationsfunktionen auf gültige Arten von Datenpillen für die Eingabe an
- Überprüfen Sie den Typ der Datenpille für die Eingabe, bevor Sie eine Transformationsfunktion anwenden. Das Anwenden einer Transformationsfunktion auf einen ungültigen Datenpillentyp führt dazu, dass das System die Transformation überspringt. Ein Fehler tritt auch auf, wenn Transformationsfunktionen Ergebnisse liefern, die das System nicht analysieren kann. Wenn Sie beispielsweise eine Zeichenfolge in ein Datum umwandeln, löst das System einen Fehler aus, wenn die Transformation kein gültiges Datum erzeugt.
- Bestätigen Sie die angewendeten Transformationsfunktionen für mehrere Eingaben mit derselben Datenpille
- Eine Transformationsfunktion erstellt zur Laufzeit einen neuen Wert für eine bestimmte Eingabe und ändert die ursprüngliche Datenpille nicht. Wenn Sie dieselbe Datenpille für mehrere Aktionen oder Schritte verwenden, Transformationsfunktionen müssen daher auf jeden einzelnen Inpu angewendet werden t.
- Zeigen Sie die endgültigen transformierten Werte in den Flow-Ausführungsdetails an
- Nur der endgültige transformierte Wert und nicht der Wert für jede angewendete Transformation wird in angezeigt Flow-Ausführungsdetails .
- Testen Sie Transformationsfunktionen, um sicherzustellen, dass sie die erwarteten Ergebnisse liefern
- Stellen Sie sicher, dass Ihre Transformationsfunktionen die erwarteten Laufzeitwerte für die Datenpillen erzeugen. Weitere Informationen finden Sie unter Testen Sie einen Flow Und Testen Sie eine Aktion .
Inline-Skripts
Befolgen Sie diese allgemeinen Richtlinien, um wiederverwendbare und wartbare Elemente zu erstellen Inline-Skripts .
- Inline-Skript für kleine, nicht wiederverwendbare Logik schreiben
- Verwenden Sie das Inline-Skriptformat, oder ändern Sie die Daten für bestimmte Eingaben und Anwendungsfälle. Erstellen Sie für wiederverwendbare Logik stattdessen eine Aktion oder einen Subflow.
- Überprüfen Sie die verfügbaren Transformationsfunktionen
- Workflow-Studio Stellt eine Liste der standardmäßigen Transformationsfunktionen für Datenkonvertierungen und Formatierungsvorgänge bereit. Anstatt eine anwenderdefinierte Skriptlösung zu schreiben und zu verwalten, wählen Sie eine vorhandene Transformationsfunktion aus, falls eine verfügbar ist.
- Skripteinbindungen aus Inline-Skript aufrufen
- Rufen Sie eine Skripteinbindung aus Ihrem Inline-Skript auf, um die Menge des von Ihnen geschriebenen Codes zu reduzieren und allgemeinen Code an einem einzigen Ort zu erhalten. Verwenden Sie den Klassenkonstruktor, um Ihre Skripteinbindung aufzurufen. Weitere Informationen zum Erstellen einer Skripteinbindung finden Sie unter Script includes.
var si = new MyScriptInclude(); si.functionOne(); - Erstellen Sie anwenderdefinierte Aktionen oder Subflows für wiederverwendbaren Code anstelle des Inline-Skripts
- Erstellen Sie anwenderdefinierte Aktionen oder Subflows für wiederverwendbare oder komplexe Datenlogik, z. B. das Ändern des Datentyps von Quelldaten. Möglicherweise möchten Sie auch anwenderdefinierte Aktionen oder Subflows für Flow-Designer bereitstellen, die sich nicht mit Code auskennen.
- Vermeiden Sie das Duplizieren von Aktionen und Flow-Funktionen
- Vermeiden Sie das Schreiben eines Inline-Skripts, das Aktionen- und Flow-Funktionalität dupliziert. Anstatt beispielsweise Inline-Skript zu schreiben, um Datensatzvorgänge auszuführen, verwenden Sie die Baseline-Aktionen zum Erstellen und Aktualisieren von Datensätzen.
- Datentypänderungen vermeiden
- Vermeiden Sie Laufzeitfehler, indem Sie überprüfen, ob Ihr Inline-Skript Informationen in demselben Datentyp bereitstellt, wie die Eingabe oder Ausgabe erwartet.
- Erstellen Sie Variablen, indem Sie sie mit dem Stichwort „var“ deklarieren
- Verwenden Sie
VARStichwort zur Deklaration von Variablen, damit sie innerhalb des richtigen JavaScript-Bereichs bleiben. Wenn Sie eine Variable erstellen, indem Sie ihr einen Wert zuweisen, kann JavaScript sie an das globale Objekt anhängen, was dazu führen kann, dass Variablenwerte außerhalb des lokalen Bereichs bleiben und Fehler verursachen. - Verarbeiten Sie Datensatzausgaben mit für jede Flow-Logik und das Flow-Datenobjekt
- Inline-Skript kann nur auf zugreifen Datensätze Ausgabe einer Aktion „Datensätze suchen“ von für jede Flow-Logik. Fügen Sie dem Flow eine Aktion „Datensätze suchen“ hinzu, um die Datensatzausgabe zu generieren. Fügen Sie dem Flow eine für jeden Flow-Logik hinzu, um jeden Datensatz in der Datensatzausgabe zu verarbeiten. Erstellen Sie eine Inline-Skriptreferenz für die für jede Flow-Logik mit den Objekten fd_Data und item. Diese Referenz geht beispielsweise davon aus, dass die für jede Flow-Logik das zweite Element in Ihrer Flow-Gliederung ist
fd_data._2__for_each.item. - Verwenden Sie Typahead-Vorschläge, um Verweise auf Flow- und Aktionsdaten zu generieren.
- Erstellen Sie Verweise auf Flow- und Aktionsdaten mit dem Objekt fd_Data. Der Skripteditor zeigt bei der Eingabe Typenvorschläge für vorhandene Flow- und Aktionsdaten an fd_Data . Wählen Sie einen Vorschlag aus, um Verweise auf Flow- und Aktionsdaten zu erstellen. Hinweis:Siehe Datensatzdaten in A für jede Flow-Logik, die verwendet Element Objekt.
- Umfangsschleifenzähler
-
Skriptschleifen haben keine maximale Anzahl von Iterationen, daher werden Schleifen unendlich ausgeführt, wenn keine gültige Exit-Bedingung vorhanden ist.
Um sicherzustellen, dass eine gültige Exit-Bedingung vorhanden ist, verwenden Sie Umfangsschleifenzähler in Inline-Skripts oder in Skriptschritten innerhalb einer Aktion.Hinzufügen
VARBisFür (i=0; i< Länge; i++)Und abrufenFür (VAR i=0; i< Länge; i++)
Komplexe Daten
Befolgen Sie diese allgemeinen Richtlinien, um wiederverwendbare und wartbare Datenstrukturen zu erstellen.
- Minimieren Sie die Anzahl der untergeordneten Ebenen in der Hierarchie
- Je mehr untergeordnete Ebenen eine Datenstruktur hat, desto schwieriger ist es, eine Datenvariable in der Hierarchie anzuzeigen und auszuwählen. Sie können zwar Datenstrukturen mit einer beliebigen Anzahl untergeordneter Ebenen erstellen, es wird jedoch schwierig, Datenstrukturen mit mehr als sieben untergeordneten Ebenen zu navigieren und zu verstehen. Vermeiden Sie für eine optimale Anwender-Experience Datenstrukturen mit so vielen untergeordneten Ebenen, dass Sie horizontal scrollen müssen, um sie anzuzeigen und auszufüllen.
- Erstellen Sie ein separates Objekt für jeden Typ von Datensatzdaten
- Am Meisten Workflow-Studio Daten sind Datensatzdaten, unabhängig davon, ob sie aus einer Instanz oder einem externen System stammen. Diese Designmethode stellt sicher, dass Sie wissen, was das Objekt enthält und woher die Daten stammen.
- Erstellen Sie Datensatzdatenstrukturen neu
- Überprüfen Sie beim Erstellen von Objekten, die Datensatzdaten empfangen oder übertragen, die Datenbank-Wörterbucheinträge für diese Datensätze, und erstellen Sie übereinstimmende Objektdatenstrukturen. Angenommen, ein Objekt soll Daten aus den Tabellen „Incident“ und „Konfigurationselement“ enthalten. Sie können ein Zeichenfolgenelement für erstellen Kurzbeschreibung Feld in Incident Tabelle und ein Array von Zeichenfolgenelementen für Klasse Feld in Konfigurationselement Tabelle .
- Erstellen Sie Objekte, um verschiedene Arten von Datensätzen zu kombinieren
- Wenn Sie Informationen aus mehreren Datensatztypen benötigen, erstellen Sie ein Objekt, das alle benötigten Informationen enthält. Sie können das Objekt dann verwenden, um Daten in zu formatieren oder zu analysieren Workflow-Studio.
Skripting mit komplexen Daten
Beachten Sie diese allgemeinen Richtlinien beim Skripting mit komplexen Daten.
- Verwenden Sie Zeichenfolgeneingaben, um komplexe Daten in eine JSON-Zeichenfolge zu konvertieren
- Wenn Sie einer Zeichenfolgeneingabe komplexe Daten zuordnen, Workflow-Studio Konvertiert sie automatisch in eine JSON-Zeichenfolge. Anstatt ein Skript zu schreiben, können Sie einem REST-Schritt eine Zeichenfolgeneingabe hinzufügen und sie komplexen Daten aus einer vorherigen Aktion oder einem vorherigen Schritt zuordnen.
- Speichern Sie Ihre Objekte als Vorlagen
- Speichern Sie Ihre Objekte als Vorlagen, damit Sie sie in anderen Aktionen, Flows und Skriptschritten wiederverwenden können.
- Erstellen Sie Skripteingabevariablen, um auf vorherige Daten zuzugreifen
- Erstellen Sie eine Skripteingabevariable für alle Daten, auf die Sie über die Aktionseingabe oder einen vorherigen Schritt zugreifen möchten. Ordnen Sie die Skripteingabevariable der Eingabe- oder Schrittdatenpille zu. Ordnen Sie beispielsweise die Skripteingabevariable einer Liste von Anwenderdatensätzen zu, die Sie in einem vorherigen Schritt gesucht haben.
- Erstellen Sie eine Skriptausgabevariable, um komplexe Daten zu speichern
- Erstellen Sie eine Skriptausgabevariable, um komplexe Daten zu speichern, die Ihr Skript erstellt. Die Skriptausgabevariablen müssen mit den im Skript definierten Werten übereinstimmen. Erstellen Sie beispielsweise ein Kontakt-Array von Objekten, um mehrere Kontaktobjekte zu speichern. Speichern Sie das Kontaktobjekt als Vorlage, damit Sie es wiederverwenden können.
- Ordnen Sie die Aktionsausgabe der Skriptausgabevariable zu
- Wenn eine anwenderdefinierte Aktion komplexe Daten ausgeben soll, fügen Sie eine Aktionsausgabe hinzu, und ordnen Sie sie der Datenpille für Ihre Skriptschritt-Ausgabevariable zu. Erstellen Sie beispielsweise ein Kontakte-Array, und laden Sie die zuvor gespeicherte Kontaktobjektvorlage. Ordnen Sie die Aktionsausgabe dem Kontakte-Array zu, das von Ihrem Skriptschritt erstellt wurde.
Flow Designer und Domänentrennung
Befolgen Sie diese allgemeinen Richtlinien, wenn Sie Domänentrennung mit verwenden Workflow-Studio.
- Stellen Sie sicher, dass Mandanten-Flows, Aktionen und Subflows für Domänen ordnungsgemäß ausgeführt werden
- Da Mandanten nicht überschreiben können Workflow-Studio Content, ein Service Provider (SP)-Administrator aus dem OBEN Die Domäne muss sie erstellen und verwalten, um sicherzustellen, dass sie für Domänen ordnungsgemäß ausgeführt werden. Sie können zwar domänenspezifische Flows erstellen, Anwender, die aus Domänen höher in der Hierarchie arbeiten, können jedoch mehrere untergeordnete Domänen-Flows auslösen. Beispielsweise kann ein Anwender, der in der OBERSTEN Domäne arbeitet, Flows in untergeordneten Domänen wie ACME und INITECH auslösen.Hinweis:Flow-Autoren können nur sehen Workflow-Studio Inhalt, der aus seiner aktuellen Domäne und allen übergeordneten Domänen in der Hierarchie verfügbar ist. Workflow-Studio Zeigt keinen Inhalt an, der aus enthält Domänen sichtbar ist.
- Geben Sie einen eindeutigen Namen für jeden Flow, jede Aktion und jeden Subflow an
- Da alle Domänen gemeinsam nutzen Workflow-Studio Inhalt: Lassen Sie jeden Flow, jede Aktion und jeden Subflow von einem SP-Administrator in der OBERSTEN Domäne eindeutig benennen. Dadurch wird sichergestellt, dass ein Flow, der für eine Domäne vorgesehen ist, den Namen eines Flows in einer anderen Domäne nicht dupliziert. Fügen Sie beispielsweise die Domäne dem Flow-Namen hinzu, z. B. Incidents validieren – TOP , Incidents validieren – ACME , Und Incidents validieren – INITECH .
- Stellen Sie sicher, dass Flows und Aktionen nur Artefakte aus aktuellen oder übergeordneten Domänen enthalten
- Workflow-Studio Verhindert die Aktivierung eines Flows, der Artefakte enthält, die für die aktuelle oder übergeordnete Domäne nicht verfügbar sind. Wenn Sie beispielsweise einen domänenspezifischen Flow erstellen, der zur ACME-Domäne gehört, kann er keine Aktionen oder Subflows enthalten, die zur gleichgeordneten Domäne INITECH gehören.
- Bearbeiten Workflow-Studio Inhalt in der Domäne, zu der er gehört
- Anwender in einer übergeordneten Domäne können keine Flows, Aktionen und Subflows in einer untergeordneten Domäne sehen. Sie müssen in die Domäne wechseln, zu der sie gehören, um sie zu bearbeiten. Beispielsweise kann ein Administrator in der OBERSTEN Domäne keine Flows aus der ACME-Domäne sehen. Der Administrator muss zur ACME-Domäne wechseln, um sie anzuzeigen und zu bearbeiten.
Bereitstellung
- Vermeiden Sie die Bereitstellung neuerer Release-Flows für Instanzen in älteren Releases
- Workflow-Studio Unterstützt keine Bereitstellung neuerer Release-Flows für Instanzen, die in früheren Releases ausgeführt werden. Gefahr:Das Flow-Datenmodell kann zwischen Releases geändert werden, was verhindern kann, dass neuere Flows ausgeführt werden, oder zu unerwarteten Ergebnissen führen, wenn sie auf früheren Releaseinstanzen ausgeführt werden. Führen Sie ein Upgrade Ihrer Instanzen auf die gleichen Release-Versionen durch, bevor Sie sie bereitstellen.
Flow-Fehlerbehandlung
Befolgen Sie diese allgemeinen Richtlinien, um die Vorteile der Flow-Fehlerbehandlung zu nutzen.
- Vermeiden Sie das Hinzufügen von Fehlerbehandlungselementen zum Hauptabschnitt des Flows
- Ein Flow wird normalerweise nicht ausgeführt, wenn eine Aktion oder ein Subflow einen Fehler im Hauptabschnitt zurückgibt. Ein angehaltener Flow kann keine Aktionen oder Subflows über den Punkt hinaus ausführen, an dem er einen Fehler zurückgegeben hat. Durch das Hinzufügen von Fehlerbehandlungsaktionen und -Subflows zum Abschnitt „Fehlerhandler“ wird sichergestellt, dass sie bei einem Fehler ausgeführt werden.
- Erfassen Sie Fehlerstatusinformationen
- Das Fehlerstatusobjekt enthält Informationen über die Aktion, die einen Fehler verursacht hat. Sie können diese Informationen verwenden, um die Fehlerursache zu identifizieren und Daten aufzuzeichnen, die möglicherweise korrigiert werden müssen.
- Unterdrücken Sie Subflow-Fehlermeldungen
- Sie können den Fehler-Handler für einen Subflow aktivieren, um zu verhindern, dass seine Fehler in einen übergeordneten Flow übergehen. Wenn Sie den Abschnitt „Subflow-Fehler-Handler“ leer lassen, wird sichergestellt, dass immer generiert wird Abgeschlossen (Fehler erfasst) status.
- Verwenden Sie Subflows, um das Limit von 10 Elementen zu vermeiden
- Anstatt zu erzwingen, dass Ihr Fehlerbehandlungsprozess innerhalb eines Grenzwerts von 10 Elementen passt, rufen Sie Subflows auf, die viele weitere Elemente enthalten können. Sie können die Subflow-Ausgaben auch verwenden, um die Automatisierung in anderen Flows auszulösen.
- Verwenden Sie Subflows, um Korrekturmaßnahmen zu ergreifen
- Anstatt dieselbe Aktionssequenz in mehreren Flows neu zu erstellen, erstellen Sie wiederverwendbare Subflows, um Fehler in Ihren Datensatzdaten zu beheben. Wenn ein Flow-Fehler Ihre Datensatzdaten in einem unerwünschten Status lässt, verwenden Sie Subflows, um diese Datensätze zu korrigieren. Sie können den Fehler-Handler verwenden, um solche Datensatzdaten als Subflow-Ausgabe zu identifizieren.
Aktionsfehlerauswertung
Befolgen Sie diese allgemeinen Richtlinien, um die Vorteile der Aktionsfehlerbewertung zu erzielen.
- Zulassen, dass nur unabhängige Schritte ausgeführt werden
- Lassen Sie zu, dass ein Schritt weiterhin ausgeführt wird, wenn er keine Daten zurückgibt, die für einen späteren Schritt erforderlich sind. Wenn ein Schritt Daten bereitstellt, die für spätere Schritte erforderlich sind, wissen Sie, dass die späteren Schritte nicht erfolgreich ausgeführt werden können.
- Vermeiden Sie mehr als 10 Fehlerbedingungen
- Die Anzahl der Fehlerbedingungen, die Sie erstellen können, ist zwar nicht begrenzt, jede Fehlerbedingung muss jedoch ausgewertet werden. Je mehr Fehlerbedingungen Ihre Aktion auswerten muss, desto langsamer kann Ihre Aktion ausgeführt werden.
- Identifizieren Sie bestimmte Schrittfehler
- Sie können den Schrittstatus verwenden, um zu identifizieren, wann ein bestimmter Schritt fehlschlägt. Die Identifizierung eines bestimmten Schritts kann nützlich sein, wenn Ihre Aktion mehrere Instanzen desselben Schritttyps enthält. Möglicherweise möchten Sie auch einen bestimmten Schritt identifizieren, damit ein Flow-Fehler-Handler geeignete Korrekturmaßnahmen für den Fehler ergreifen kann.
- Setzen Sie bestimmte Fehlerbedingungen vor allgemeine Fehlerbedingungen
- Die Fehlerauswertung wird angehalten, wenn die Aktion eine übereinstimmende Fehlerbedingung findet. Wenn Sie allgemeine Fehlerbedingungen zuerst setzen, kann dies verhindern, dass die Aktion bestimmte Fehlerbedingungen erfüllt.
- Verwenden Sie beschreibende Fehlerbedingungsbezeichnungen
- Identifizieren Sie eine Fehlerbedingung, ohne sie bearbeiten zu müssen. Standardmäßig werden Fehlerbedingungen nur angezeigt, wenn Sie sie bearbeiten.
Flow-Administrator
- Deaktivieren Sie Flow-Reporting in der Produktion
- Minimieren Sie die zum Ausführen von Flows erforderliche Arbeitsspeichermenge, indem Sie sie deaktivieren Flow-Reporting . Flow-Reporting speichert Konfigurations- und Laufzeitinformationen für die Seite „Ausführungsdetails“. Diese Berichte sind gut für die Problembehandlung, erfordern jedoch, dass eine große Menge von Daten sowohl im Arbeitsspeicher als auch in der Datenbank aufbewahrt wird. Standardmäßig ist Flow-Reporting deaktiviert, und das System generiert nur Ausführungsdetails, wenn Sie einen Flow oder eine Aktion manuell testen. Stattdessen können Sie Protokolldateien verwenden, die weiterhin verfügbar sind, wenn die Berichterstellung deaktiviert ist.
- Reduzieren Sie den Arbeitsspeicher, der in Flows mit geschachtelter Schleife verbraucht wird
- Wenn das Reporting aktiviert ist, legen Sie com.snc.process_flow.reporting.iteration.lastn auf den Wert „1“ fest, um die Menge des Arbeitsspeichers zu reduzieren, die vorherige Schleifeniterationen verbrauchen. Je mehr Iterationen Sie melden, desto mehr Arbeitsspeicher ist erforderlich.
- Zeigen Sie die endgültigen transformierten Werte in den Flow-Ausführungsdetails an
- Nur der endgültige transformierte Wert wird in angezeigt Flow-Ausführungsdetails , Und nicht der Wert für jede angewendete Transformation.
Flow-Priorität
Befolgen Sie diese Designüberlegungen, wenn Sie die Flow-Priorität festlegen.
- Vermeiden Sie es, alle Flows so festzulegen, dass sie mit hoher Priorität ausgeführt werden
- Verwenden Sie eine Mischung von Prioritäten, anstatt alle Flows auf hohe Priorität festzulegen. Worker-Threads verwenden die relative Priorität zwischen Flows, um Arbeit auszuwählen. Wenn alle Ihre Flows mit hoher Priorität ausgeführt werden, gibt es keine Flows mit niedrigerer Priorität, die gewartet werden müssen.
- Vermeiden Sie das Festlegen der Flow-Priorität für Flows, die angehalten werden müssen
- Lassen Sie Flows, die angehalten werden müssen, mit der standardmäßigen mittleren Priorität, da ein Flow, der angehalten wird, seinen Prioritätswert verliert, wenn er wieder ausgeführt wird.
- Verwenden Sie hohe Priorität für geschäftskritische Flows
- Beschränken Sie die hohe Priorität auf Flows, die einen hohen Geschäftsnutzen haben, selten ausgeführt werden und eine kurze Laufzeit haben. Vermeiden Sie es, Flows mit hohem Volumen auf hohe Priorität festzulegen, da dadurch die Anzahl der Worker-Threads eingeschränkt wird, die zum Ausführen anderer Flows verfügbar sind. Ein langjähriger Flow mit hoher Priorität kann auch die zum Ausführen anderer Flows verfügbaren Worker-Threads reduzieren.
- Verwenden Sie niedrige Priorität für Flows mit hohem Volumen
- Führen Sie Flows mit hohem Volumen mit niedriger Priorität aus, damit andere zeitkritische Flows zuerst ausgeführt werden können. Flows mit niedriger Priorität dürfen nicht zeitabhängig sein.
- Verwenden Sie mittlere Priorität für zeitkritische Flows
- Verwenden Sie die Standard-Flow-Priorität, wenn ein Flow im Vergleich zu anderen Flows eine gewisse zeitliche Dringlichkeit hat.