Allgemeine Richtlinien für Workflow-Studio -Flows, Subflows und Aktionen
Erstellen, Ausführen, Behandeln und Überwachen Ihrer Workflow-Studio -Komponenten effektiver. Verwenden Sie diese Richtlinien, um die Leistung Ihrer Workflow-Studio -Komponenten zu optimieren.
Übersicht über Workflow-Studio
Integrieren Sie die Workflow-Erstellung, -Konfiguration und -Überwachung auf einer einzigen Seite. Konsolidieren Sie Playbooks, Flows, Aktionen, Entscheidungstabellen und Integrationen in einer Designumgebung.
App-Entwicklung
Beachten Sie beim Entwerfen einer Aktion oder eines Flow die folgenden 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 und 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 in Konflikt stehende oder doppelte Geschäftslogik
-
Automatisierungen können mit Flow Designer, Geschäftsregeln, Workflows und Integration Hub erstellt werden. Bevor Sie Workflow-Studio verwenden, machen Sie sich mit der Funktionsweise vorhandener Now Platform Automatisierungen vertraut. Deaktivieren Sie Automatisierungen, bevor Sie sie durch Workflow-Studio -Flows und -Aktionen ersetzen. Siehe Über die Architektur, um zu erfahren, wie Workflow-Studio innerhalb von Now Platform] funktioniert.
Überprüfen Sie bei Bedarf die Dokumentation zu Flows, Subflowsund Aktionen.
- 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 liefern immer die gleichen Daten als Eingabe für Flows. Wenn Sie stattdessen eine Variableneingabe zum Initiieren eines Flows benötigen, erstellen Sie einen Subflow.
- Geschäftslogik wiederverwenden
- Erstellen Sie einen Satz wiederverwendbarer Vorgänge als Subflow, der dann in mehreren Flows verwendet werden kann.
- Erteilen Sie Flow-Rollen, um auf rollengeschützte Daten zuzugreifen und Benutzerinformationen zu erhalten
- Mit Flow-Rollen können Sie Berechtigungen für Ihre Flows einfach halten. Verwenden Sie Flow-Rollen, um Benutzerinformationen zu erhalten und Zugriff auf Daten zu gewähren, anstatt einen Flow als Systembenutzer auszuführen. Durch das Hinzufügen von Flow-Rollen erhalten Sie auch Zugriff auf zusätzliche Daten, über die ein vom Benutzer initiierter Flow normalerweise nicht verfügt. Die gewährten Rollen gelten nur für den Flow. Sie gelten nicht für den Benutzer, 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 die gs.sleep()- Methode, um innerhalb eines Flows zu warten. Die gs.sleep()- Methode verhindert, dass der Thread andere Aufgaben 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 die Flow-Logik Warten auf Dauer oder Warten auf Bedingung.
- Vermeiden Sie Abhängigkeiten
- Parallele Verzweigungen, die voneinander abhängig sind, blockieren den -Flow, wenn eine Verzweigung auf die Ausgabe von einer anderen Verzweigung warten muss. Anstatt parallele Verzweigungen innerhalb eines Flows 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 unbegrenzt ausgeführt, wenn keine gültige Austrittsbedingung vorhanden ist.
Um sicherzustellen, dass eine gültige Austrittsbedingung vorhanden ist, fügen Sie in Inline-Skripts oder Skriptschritten innerhalb einer Aktion Umfangsschleifenzähler hinzu.
varzufor (i=0; i< Länge; ill+) hinzufügen:for (var i=0; i< Länge; i+) - „Für jedes begrenzen“ und „Tut bis“ durchlaufen Schleifen auf 1000 Iterationen
- Iterationen mit 1000 oder mehr Schleifen können zu Arbeitsspeicherproblemen führen , da Ausführungsdetails und Kontextdatensätze gespeichert werden müssen.
- Legen Sie die maximale Anzahl von Datensätzen für „Datensätze suchen“ fest.
- Vermeiden Sie es, die Eigenschaft sn_flow_designer.max_iterations zu ändern, die standardmäßig auf 1000 festgelegt ist.
- Bei geschachtelten Schleifen hat jede Schleife ihre eigene maximale Anzahl von Iterationen.
- Erwägen Sie bei der Verarbeitung großer Datenmengen die Batchverarbeitung in kleinere Batches.
- Berücksichtigen Sie bei Massenimporten gleichzeitige Importe.
- QuickAPI für schnellere Ausführungen verwenden (Business-Regel-Alternative)
-
- QuickAPI- Ausführungen sind viel schneller, es steht jedoch weniger Debugging-Fähigkeit zur Verfügung.
- QuickAPI-Ausführungen im Vordergrund werden in der Benutzersitzung als der Benutzer ausgeführt, der den Flow aufgerufen hat.
- QuickAPI-Ausführungen im Hintergrund werden in einem Hintergrund-Thread in der Anwendersitzung „System“ ausgeführt.
- Verwenden Sie Bis-Schleifen, anstatt Flows von sich selbst aufzurufen
- Eine direkte Rekursion, bei der sich ein Flow selbst aufruft, ist nicht zulässig und führt zu Fehlern. Indirekte Rekursion, bei der Flow A Flow B aufruft, der Flow A aufruft, ist bis zu dreimal zulässig. Anstatt einen Flow rekursiv aufzurufen, können Sie mit der Flow-Logik „Ausführen bis“ die Arbeit an Datensätzen fortsetzen, bis eine bestimmte Bedingung erfüllt ist.
- Führen Sie Flows im Hintergrund aus
- Durch die Ausführung von Flows im Hintergrund können UI-Threads freigegeben werden, anstatt die Anwendersitzung bis zum Abschluss der Flow-Ausführung anzuhalten. Standardmäßig werden Flows asynchron im Hintergrund ausgeführt. Durch das Ausführen von Flows im Hintergrund können Benutzer in der Anwenderoberfläche weiterarbeiten, 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 Abruf kann Probleme mit dem Arbeitsspeicher 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 eher kann das System Arbeitsspeicher für die Verarbeitung anderer Aktionen freigeben.
- Minimieren Sie dieHexereien zwischen Umgebungen
- Ein ständiger Wechsel zwischen Schritten der Instanz [ und dem MID-Server in einem Flow kann zu Verzögerungen bei der Verarbeitung vonführen. Um das Risiko von Verzögerungen zu minimieren, beschränken Sie den Wechsel zwischen Instanz und MID auf einmal.
- Vom Flow generierte sys_complex_object-Datensätze in Update-Sätze einschließen
- Das Fehlen komplexer Datenschemas kann zu Ausführungsproblemen führen. Achten Sie darauf, die vom Flow generierten sys_complex_object-Datensätze in Update-Sätze aufzunehmen. Anstatt Update Sets manuell zu erstellen, sollten Sie Flows mithilfe des Anwendungs-Repository von einer Instanz zu einer anderen übertragen.
- Rufen Sie Flows aus einem Skript auf, 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 seine anwenderdefinierten Auslöserbedingungen erfüllt sind. Anstatt einen Flow mit einem unnötigen Auslöser zu erstellen, sollten Sie stattdessen einen Subflow ohne Auslöser erstellen. 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 Bedingungen für den Flow-Auslöser erfüllt werden und der Flow unerwartet ausgeführt wird.
- Vermeiden Sie die Bereitstellung neuerer Release-Flows für Instanzen mit älteren Releases
- Workflow-Studio bietet keine Unterstützung für die Bereitstellung von Flows in Instanzen, die in früheren Releases ausgeführt werden. Manchmal ändert sich das Datenmodell des Flows zwischen Releases, was die Ausführung des Flows verhindern oder zu unerwarteten Ergebnissen führen kann.
- Flow-Reporting in der Produktion deaktivieren
- Minimieren Sie die Menge an Arbeitsspeicher, der für die Ausführung von Flows erforderlich ist, indem Sie die Flow-Berichterstellungdeaktivieren. Flow-Reporting speichert Konfigurations- und Laufzeitinformationen für die Seite „Ausführungsdetails“. Diese Berichte eignen sich gut für die Fehlerbehebung, erfordern jedoch, dass eine große Datenmenge sowohl im Arbeitsspeicher als auch in der Datenbank aufbewahrt wird. Standardmäßig ist das Flow-Reporting deaktiviert, und das System generiert Ausführungsdetails nur, wenn Sie einen Flow oder eine Aktion manuell testen. Stattdessen können Sie Protokolldateien verwenden, die auch dann verfügbar sind, wenn die Berichterstellung deaktiviert ist.
- Reduzieren Sie den Speicherverbrauch in Flows mit geschachtelten Schleifen
- Wenn die Berichterstellung 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 berichten, desto mehr Arbeitsspeicher wird benötigt.
Subflows
Allgemeine Richtlinien, die für Flows gelten, gelten auch für Subflows.
Folgende Gründe sprechen für die Verwendung eines Subflow anstelle eines Flow:
- 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 liefern immer die gleichen Daten als Eingabe für Flows. Wenn Sie stattdessen eine Variableneingabe zum Initiieren eines Flows benötigen, 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 für jeden Anruf andere Eingabewerte
- Konfigurieren Sie die Eingabewerte eines Subflows bei jedem Aufruf unterschiedlich. Entwerfen Sie beispielsweise einen Subflow, der verschiedene Datensatztypen als Eingabeausführung akzeptiert. Verwenden Sie diesen generischen Datensatz-Subflow erneut, anstatt für jeden Datensatztyp einen spezifischen Flow 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 werden. Beschränken Sie einen Flow jedoch auf 25 Aktionen, um eine optimale 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 beim Start verfügbar sind, oder wenn Sie die Ausgaben angeben möchten, die für den übergeordneten Flow nach dem Ende eines Subflow verfügbar sind.
- Lösen Sie mehrere Flows für ein einzelnes Ereignis aus, anstatt parallele Subflows zu verwenden
-
- Verwenden Sie parallele Subflows, wenn zusammenhängende Ausgaben vorhanden sind oder eine Aktion ausgeführt werden muss, wenn alle verfügbar sind. Wenn nicht, ist es einfacher, mehrere Flows auszulösen.
- Um parallele Subflows zu konfigurieren, starten Sie jeden Subflow ohne Wartezeit, und verwenden Sie dann die Bedingung „Warten auf“, um zu warten, bis jeder Subflow abgeschlossen ist (Abgeschlossen, Fehler, Abgebrochen).
- Verwenden Sie dynamische Flows, wenn Sie mehrere Subflows mit ähnlicher Funktionalität haben
- Mit dynamischen Flows können Sie Ihre Prozesse aufteilen, indem Sie eine Vorlage anwenden, um die Eingaben mehrerer ähnlicher Subflows zu verarbeiten. Durch die Aufgliederung können Sie zwischen Subflows unterscheiden, die ähnliche Funktionen ausführen, z. B. Subflows für IntegrationHub -Spokes.
- Vermeiden Sie die Beschränkung auf 10 Elemente im Fehlerbehandlungsprozess
- Anstatt zu erzwingen, dass Ihr Fehlerbehandlungsprozess innerhalb einer Grenze von 10 Elementen liegt, rufen Sie Subflows auf, die viel mehr 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 Folge von Aktionen in mehreren Flows neu zu erstellen, erstellen Sie wiederverwendbare Subflows, um Fehler in Ihren Datensatzdaten zu korrigieren. Wenn ein Flow-Fehler Ihre Datensatzdaten in einem unerwünschten Zustand hinterlä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, wenn Sie Datensatzauslöser erstellen.
- 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 liefern immer die gleichen Daten als Eingabe für Flows. Wenn Sie stattdessen eine Variableneingabe zum Initiieren eines Flows benötigen, erstellen Sie einen Subflow.
- Fügen Sie Bedingungen hinzu, um anzugeben, welche Datensatzwerte Ihren Flow starten
- Einen Flow nur bei Bedarf zu starten verbraucht weniger Systemressourcen, als wenn Sie einen Flow starten, anhalten und auf die Fortsetzung warten, bis eine bestimmte Datensatzbedingung gilt. Anstatt einen Flow zu erstellen, der mit einer Aktion Warten auf Bedingung beginnt, entwerfen Sie den Flow so, dass die Wartebedingung als Teil des Datensatzauslösers aufgenommen wird.
- 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 verwenden, gibt es keine Möglichkeit, die Reihenfolge zu ermitteln, in der die Flows ausgeführt werden. Die Verwendung von Bedingungen hilft auch, die Flow-Leistung zu optimieren, indem eine präzisere, kleinere Gruppe von Datensätzen zurückgegeben wird.
- Durch Import und Update Sets hinzugefügte oder aktualisierte Datensätze ignorieren
- Datensatzauslöser ignorieren Datensätze, die durch Anwenden eines Update Set 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 Servicekatalog-Anwendungsauslöser
- Flow Designer zeigt keine Servicekatalog-Tabellen 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 eintreten können
- Verhindern Sie, dass Ihre Flows unbegrenzt warten, indem Sie mit Flow-Logik für „Flow beenden“.Flow-Stopp-Bedingungen angeben. Um Systemressourcen freizugeben, können Sie auch jeden Flow abbrechen, dessen Fortsetzungsbedingungen niemals erfüllt werden können. Sie können beispielsweise Flows abbrechen, die auf die Aktualisierung von Incident-Datensätzen warten, bei denen der zugehörige Incident geschlossen wird.
- Wartebedingungen auf Felder beschränken, die in der aktuellen Tabelle vorhanden sind
- 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 beispielsweise eine Aktion auf Änderungen an einem Incident-Datensatz wartet, können Änderungen an zugehörigen Datensätzen wie Katalogelementen oder Change-Aufgabendatensätzen nicht erkannt werden. Vermeiden Sie das Erstellen von Wartebedingungen, die 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-Jeden-Flow-Logik abhängen
- Flow Designer verhindert das Hinzufügen von Phasen innerhalb eines „ For each “-Blocks. Sie können nur Phasen vor oder nach einem Für-jeden -Block hinzufügen.
- Vermeiden Sie das Erstellen von Phasen für dieselben Datensätze in verschiedenen Flows oder Subflows
- Ein Stufenfeld zeigt immer die Stufeninformationen an, die vom letzten Flow oder Subflow bereitgestellt wurden, der für den Datensatz einer Tabelle ausgeführt wurde. Wenn mehrere Flows oder Subflows für dieselben Datensätze ausgeführt werden, können die in einem Flow oder Subflow definierten Phasen prinzipiell die Phasen eines anderen Flows oder Subflows überschreiben. Um zu vermeiden, dass mehrere Flows oder Subflows die Phasen der anderen überschreiben, definieren Sie eindeutige Auslöser- oder Startbedingungen für jeden Flow oder Subflow.
- Vermeiden Sie es, Phasenfelder von außerhalb eines Flows oder Subflows zu aktualisieren
- Wenn Sie Phasen mit einem Flow oder Subflow verwalten, vermeiden Sie es, Datensatzphasenfelder direkt von außerhalb des Flows oder Subflows 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 eindeutige Auslöserbedingungen hat
- Durch Hinzufügen eindeutiger Auslöserbedingungen für jeden Flow wird sichergestellt, dass die Flows nur unter diesen Bedingungen ausgeführt werden, und verhindert, dass die Phasen eines Flows die Phasen eines anderen Flows überschreiben. Das Angeben eindeutiger Auslöserbedingungen erleichtert die Problembehandlung bei Flows, indem die Anzahl der Flow-Ausführungen begrenzt wird, die zu Datensatzänderungen führen können.
- Verwenden Sie Fehlerphasen, um mit dem Benutzer zu kommunizieren
- Der Flow-Fehlerstatus hat keine Auswirkungen auf die Flow-Ausführung. Ein Flow wird weiter ausgeführt, auch wenn er eine Fehlerphase erreicht hat. 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, möchten Sie dem Benutzer möglicherweise einen Fehler mitteilen.
- Verwenden Sie die Fehlerphase, um die Verarbeitung eines Flows zu beenden
- 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 zu beenden oder eine Korrekturaktion durchzuführen. Beispielsweise können Sie den Datensatzstatus oder die Zuweisung ändern, wenn ein Flow einen Fehlerstatus erreicht.
Ablauflogik „Folgende Schritte parallel ausführen“
- Vermeiden Sie das Erstellen von Datenabhängigkeiten zwischen Pfaden
- Da ein Flow Pfade in beliebiger Reihenfolge ausführen kann, vermeiden Sie die Erstellung von Datenabhängigkeiten zwischen separaten Pfaden. Sie dürfen beispielsweise nicht einen Pfad haben, der einen Datensatz erstellt, und einen anderen Pfad, der denselben Datensatz aktualisiert. Der Pfad zum Aktualisieren des Datensatzes kann vor dem Pfad zum Erstellen des Datensatzes 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 ähnlicher Funktionalität haben
- Mit dynamischen Flows können Sie Ihre Prozesse aufteilen, indem Sie eine Vorlage anwenden, um die Eingaben mehrerer ähnlicher Subflows zu verarbeiten. Durch die Aufgliederung können Sie zwischen Subflows unterscheiden, die ähnliche Funktionen ausführen, z. B. Subflows für IntegrationHub -Spokes.
- Stellen Sie sicher, dass dynamisch aufgerufene 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 den richtigen Kontext, wenn Sie Flow-Ausgaben abrufen
- Ein Kontextdatensatz identifiziert die Flow-Ausführung eindeutig. Wenn Sie einen dynamischen Flow mehrmals ausführen, stehen mehrere Kontextdatensätze zur Auswahl. Wenn Sie einen dynamischen Flow mehrmals innerhalb eines Flows verwenden, stellen Sie sicher, dass Sie jedes Mal, wenn Sie Flow-Ausgaben erhalten, den richtigen Kontextdatensatz aus der richtigen Ausführung auswählen.
Password2-Datenpillen
- Weisen Sie Werte mithilfe vorhandener Passwort-Datenpillen (zweifach verschlüsselt) zu.
- Sie können einer Passwort2-Variablen 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 sind.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, dass Password2-Datenpillen als Wert für ungültige Feldtypen ausgewählt werden. Das System zeigt eine Warnmeldung an, wenn das Feld ein inkompatibler Typ ist.Workflow-Studio ermöglicht nur das Ziehen von Password2-Datenpillen in die folgenden Feldtypen:
- E-Mail-Text-Felder
- HTML-Felder
- „Passwort 2“-Felder
- PowerShell-Eingabevariablen
- REST-Felder
- Variablen
- REST-Payload-Text
- Abfrageparameter
- Header
- Mehrteilige REST-Formular-Werte
- URL-codierte Formularwerte
- 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 Benutzer Aktionen und Abläufe speichert, veröffentlicht oder testet. Diese Prüfung zeigt, dass eine Warnung für Datenpillen in eingeschränkten Feldtypen abgelegt wird und verhindert, dass die Aktion oder der Flow ausgeführt wird. Aktualisieren Sie die Aktion oder den Ablauf, um die ungültige Datenpille zu entfernen, und wiederholen Sie dann den Vorgang.
- Richten Sie Verschlüsselungsmodule für die Entschlüsselung ein
- Nur Benutzer mit gültigem Zugriff auf das Verschlüsselungsmodul können den Inhalt von password2-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 .
Aktionen für SLA-Prozentsatz-Timer
Befolgen Sie diese allgemeinen Richtlinien, wenn Sie Flows erstellen, die Prozentsatz-Timer-Aktionen für Servicelevel-Vereinbarungen (Service Level Agreement, SLA) enthalten.
- Fügen Sie SLA-Prozentsatz-Timer-Aktionen nur zu Flows mit einem SLA-Aufgabenauslöser hinzu
- Eine Aktion für einen SLA-Prozent-Timer kann nur ausgeführt werden, wenn der Flow von einem SLA-Aufgabenauslöser gestartet wird. Sie können keinen Subflow aktivieren, der eine SLA-Prozent-Timer-Aktion enthält.
- Erstellen Sie bedingte Flow-Logik für erwartete Statuswerte
- Verwenden Sie den Wert des Felds Status als Bedingung für die Flow-Logik. Erstellen Sie eine Flow-Logik für erwartete Statuswerte wie Abgeschlossen, Reparaturund Übersprungen. Fügen Sie beispielsweise einen If -Flow-Logikblock hinzu, um eine Benachrichtigung zu senden, wenn der SLA-Prozentsatz-Timer den Status Abgeschlossenhat.
- Weisen Sie jeder SLA-Prozentsatz-Timer-Aktion einen eindeutigen kumulativen Wert für Warten auf Prozentsatz zu
- Jede SLA-Prozent-Timer-Aktion berechnet ihr eigenes geplantes Enddatum und ihre eigene geplante Endzeit anhand des Werts für „Warten auf Prozentsatz“. Wenn Sie mehrere SLA-Prozentsatz-Timer-Aktionen erstellen, geben Sie jeder Aktion einen eigenen eindeutigen kumulativen Wert für Warten auf Prozentsatz. Erstellen Sie beispielsweise drei separate Aktionen mit unterschiedlichen Werten für den Fertigstellungsgrad, z. B. 25 %, 50 % und 75 % abgeschlossen. Wenn Sie alle drei Aktionen auf denselben Fertigstellungsgrad-Wert 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. Weitere Informationen finden Sie unter SLA-Definition erstellen .
Dynamische Eingaben
- Berücksichtigen Sie dynamische Eingaben für Drittanbieterintegrationen
- Mit dynamischen Eingaben können Sie Flows erstellen, die Daten dynamisch aus externen Quellen abrufen. In Drittanbieterintegrationen können dynamische Eingaben Datenwerte bereitstellen, die sich auf einen bestimmten Endpunkt beziehen. Weitere Informationen zum Einrichten von Drittanbieterintegrationen mit Workflow-Studiofinden Sie unter 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 sammeln, bevor sie ablaufen. Wenn Ihre Datensammlungsaktion mehr Zeit zum Sammeln von Daten benötigt, legen Sie die Systemeigenschaft sn_flow_designer.sync_action_execution_timeout_in_seconds auf einen höheren Wert fest. Verwenden Sie jedoch keine langen Timeout-Werte für interaktive Flows, bei denen ein Endanwender einen Wert eingeben oder auswählen muss.
- Beachten Sie Skriptfehler
- Da alle Datensammlungsaktionen einen Skriptschritt verwenden, können beim Skripting Fehler auftreten. Wenn Sie Skripts zur Ausgabe von JSON-Variablen für Ihre dynamischen Eingaben verwenden, können Fehler auftreten, die verhindern, dass die Eingaben die benötigten JSON-Werte erhalten. Wenn ein Skriptfehler bei der dynamischen Eingabe auftritt, wird möglicherweise die folgende Warnmeldung angezeigt.
Abbildung : 1. Meldung, die für den Skriptfehler angezeigt wird - Beschränken Sie 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, minimieren Sie die Wahrscheinlichkeit, dass Ihnen der Arbeitsspeicher ausgeht und unerwartetes Verhalten auftritt, z. B. Darstellungsfehler oder Datenkürzung.
- 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 Datensammlungsaktion Daten für eine dynamische Vorlage oder eine dynamische Auswahl sammelt, beschränken Sie die maximale Anzahl der zurückgegebenen Array-Elemente auf 5000. Die Beschränkung von 5000 Array-Elementen verhindert, dass die Instanz Leistungsprobleme beim Rendern der Auswahlmöglichkeiten oder Feldwerte hat.
Dynamische Ausgaben
- Verwenden Sie dynamische Ausgaben für Drittanbieterintegrationen
- Verwenden Sie dynamische Ausgaben, um zu introspektieren und während des Flow-Designs Daten aus externen Systemen abzurufen. Sie können beispielsweise Serviceendpunkte angeben oder Aktionen aufrufen, die mit bestimmten Endpunkt-APIs interagieren. Weitere Informationen zum Einrichten von Drittanbieterintegrationen mit Workflow-Studiofinden Sie unter 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 sammeln, bevor das System sie stoppt. Wenn Ihre Datensammlungsaktion mehr Zeit zum Sammeln von Daten benötigt, legen Sie die Systemeigenschaft sn_flow_designer.sync_action_execution_timeout_in_seconds auf einen größeren Wert fest. Vermeiden Sie lange Zeitüberschreitungswerte für interaktive Flows, bei denen ein Endanwender erwartet, dass er einen Wert eingibt oder auswählt.
- Beachten Sie Skriptfehler
- Da alle Datensammlungsaktionen einen Skriptschritt verwenden, können beim Skripting Fehler auftreten. Überprüfen Sie alle Skripts, die zur Ausgabe von JSON-Variablen verwendet werden, da Skriptfehler möglicherweise verhindern, dass die Ausgaben die benötigten JSON-Werte erhalten. Wenn ein Fehler beim Erstellen des dynamischen Ausgabeskripts auftritt, wird möglicherweise die folgende Warnmeldung angezeigt.
Abbildung : 2. Meldung, die bei einem Skriptfehler angezeigt wird
Liste.[Tabelle] Daten
- Fügen Sie einen Referenzqualifizierer hinzu, um Listendatensätze zu filtern
- Filtern Sie die Datensätze, die von der Listenvariablen als gültige Optionen angezeigt werden, 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 Referenzqualifizierer-Bedingung [Aktiv][ist][wahr]hinzu.
- 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 der Flow-Logik „Für jeden“.
- Sie können eine Listenvariable verwenden, um die Datensätze anzugeben, die innerhalb der For-Each-Flow-Logik verarbeitet werden sollen. Die For-Each-Flow-Logik ignoriert alle Nicht-Datensätze [ sys_id, die in den Daten vorhanden sind. Wenn beispielsweise die Listenvariable eine E-Mail-Adresse enthält, wird sie von der Flow-Logik ignoriert.
Genehmigungsregeln
- Einen Standardwert angeben
- Erstellen Sie eine Genehmigungsregel, oder wählen Sie sie als Standardwert aus.
Transformationsfunktionen
- Wenden Sie Transformationsfunktionen auf gültige Typen von Datenpillen für die Eingabe an
- Überprüfen Sie unbedingt 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 erzeugen, die vom System nicht analysiert werden können. Beispiel: Wenn eine Zeichenfolge in ein Datum umgewandelt wird, gibt das System einen Fehler aus, wenn die Umwandlung kein gültiges Datum ergibt.
- Angewendete Transformationsfunktionen für mehrere Eingaben mit derselben Datenpillebestätigen
- Eine Transformationsfunktion erstellt zur Laufzeit einen neuen Wert für eine bestimmte Eingabe und ändert die ursprüngliche Datenpille nicht. Wenn Sie dieselbe Datenpille über mehrere Aktionen oder Schritte hinweg verwenden, müssen die Transformationsfunktionendaher auf jede einzelne Eingabe angewendet werden.
- Zeigen Sie die endgültigen transformierten Werte in den Flow-Ausführungsdetails an
- In den Flow-Ausführungsdetailswird nur der endgültige transformierte Wert und nicht der Wert für jede angewendete Transformation angezeigt.
- Testen Sie die Transformationsfunktionen, um sicherzustellen, dass sie die erwarteten Ergebnisse liefern
- Stellen Sie sicher, dass Ihre Transformationsfunktionen die erwarteten Laufzeitwerte für die Datenpillen liefern. Weitere Informationen finden Sie unter Flowtesten und Aktion testen.
Inline-Skripts
Befolgen Sie diese allgemeinen Richtlinien, um wiederverwendbare und wartbare Inline-Skriptszu erstellen.
- Schreiben Sie ein Inline-Skript für kleine, nicht wiederverwendbare Logik
- 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 bietet eine Liste der Standardtransformationsfunktionen für Datenkonvertierungen und Formatierungsvorgänge. Anstatt eine anwenderdefinierte Skriptlösung zu schreiben und zu verwalten, wählen Sie eine vorhandene Transformationsfunktion aus, falls verfügbar.
- Rufen Sie Skripteinbindungen aus einem Inline-Skript auf
- Rufen Sie eine Skripteinbindung aus Ihrem Inline-Skript auf, um die Menge des von Ihnen geschriebenen Codes zu reduzieren und allgemeinen Code an einem zentralen Ort zu verwalten. Verwenden Sie den Klassenkonstruktor, um Ihre Skripteinbindung aufzurufen. Weitere Informationen zum Erstellen von Skripteinbindungen finden Sie unter Script includes.
var si = new MyScriptInclude(); si.functionOne(); - Erstellen Sie anwenderdefinierte Aktionen oder Subflows für wiederverwendbaren Code anstelle von Inline-Skripts
- Erstellen Sie anwenderdefinierte Aktionen oder Subflows für wiederverwendbare oder komplexe Datenlogik, z. B. das Ändern des Datentyps von Quelldaten. Unter Umständen möchten Sie auch anwenderdefinierte Aktionen oder Subflows für Flow Designer bereitstellen, die sich mit Code nicht auskennen.
- Vermeiden Sie die Duplizierung von Aktions- und Flow-Funktionen
- Vermeiden Sie es, Inline-Skripts zu schreiben, die Aktions- und Flow-Funktionen duplizieren. Beispielsweise können Sie zum Ausführen von Datensatzvorgängen kein Inline-Skript schreiben, sondern die Baseline-Aktionen zum Erstellen und Aktualisieren von Datensätzen verwenden.
- Vermeiden Sie Datentypänderungen
- Vermeiden Sie Laufzeitfehler, indem Sie überprüfen, ob Ihr Inline-Skript Informationen im gleichen Datentyp bereitstellt, wie die Eingabe oder Ausgabe erwartet.
- Erstellen Sie Variablen, indem Sie sie mit dem Schlüsselwort var deklarieren
- Verwenden Sie das Schlüsselwort
var, um Variablen so zu deklarieren, dass sie im richtigen JavaScript-Bereich bleiben. Wenn Sie eine Variable erstellen, indem Sie ihr einen Wert zuweisen, kann sie von JavaScript an das globale Objekt angehängt werden. Dies kann dazu führen, dass Variablenwerte außerhalb des lokalen Bereichs erhalten bleiben und Fehler verursachen. - Verarbeiten Sie Datensätze mit der Flow-Logik „Für jeden“ und dem Flow-Datenobjekt
- Das Inline-Skript kann nur auf die Datensatzausgabe einer Aktion „Datensätze suchen“ der Flow-Logik „Für jeden“ zugreifen. Fügen Sie dem Flow die Aktion Datensätze suchen hinzu, um die Datensatzausgabe zu generieren. Fügen Sie dem Flow die Flow-Logik „Für jeden“ hinzu, um jeden Datensatz in der Datensatzausgabe zu verarbeiten. Erstellen Sie mithilfe der Objekte „fd_data“ und „item“ einen Inline-Skriptverweis auf die Flow-Logik „Für jeden“. Diese Referenz geht beispielsweise davon aus, dass die Flow-Logik „Für jeden“ das zweite Element in Ihrer Flow-
Modellierung fd_data._2__for_each.item ist. - Verwenden Sie Typeahead-Vorschläge, um Verweise auf Flow- und Aktionsdaten zu generieren.
- Erstellen Sie mit dem Objekt fd_data Verweise auf Flow- und Aktionsdaten. Wenn Sie fd_data eingeben, zeigt der Skript-Editor Vorauseingabe-Vorschläge für vorhandene Flow- und Aktionsdaten an. Wählen Sie einen Vorschlag aus, um Verweise auf Flow- und Aktionsdaten zu erstellen. Hinweis:Beziehen Sie sich auf das Aufzeichnen von Daten in einer For-Each-Flow-Logik mithilfe des Elementobjekts.
- Umfangsschleifenzähler
-
Skriptschleifen haben keine maximale Anzahl von Iterationen, daher werden Schleifen unbegrenzt ausgeführt, wenn keine gültige Austrittsbedingung vorhanden ist.
Um sicherzustellen, dass eine gültige Austrittsbedingung vorhanden ist, verwenden Sie Bereichsschleifenzähler in Inline-Skripts oder in Skriptschritten innerhalb einer Aktion.
varzufor (i=0; i< Länge; ill) hinzufügenundfür (var i=0; i< Länge; ill) abrufen
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 komplexer ist es, eine Datenvariable anzuzeigen und in der Hierarchie auszuwählen. Sie können zwar Datenstrukturen mit einer beliebigen Anzahl von untergeordneten Ebenen erstellen, aber es wird schwierig, in Datenstrukturen mit mehr als sieben untergeordneten Ebenen zu navigieren und sie zu verstehen. Vermeiden Sie für eine optimale Anwender-Experience das Erstellen von Datenstrukturen mit so vielen untergeordneten Ebenen, dass Sie horizontal scrollen müssen, um sie anzuzeigen und zu füllen.
- Erstellen Sie ein separates Objekt für jeden Typ von Datensatzdaten
- Die meisten Workflow-Studio -Daten sind Datensatzdaten, unabhängig davon, ob sie aus einer Instanz oder einem externen System stammen. Diese Entwurfsmethode stellt sicher, dass Sie wissen, was das Objekt enthält und woher die Daten stammen.
- Erstellen Sie die Datenstrukturen des Datensatzes 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 entsprechende Objektdatenstrukturen. Angenommen, ein Objekt soll Daten aus den Tabellen „Incident“ und „Konfigurationselement“ enthalten. Sie können ein Zeichenfolgenelement für das Feld Kurzbeschreibung in der Tabelle Incident und ein Array von Zeichenfolgenelementen für das Feld Klasse in der TabelleKonfigurationselement [] erstellen.
- Erstellen Sie Objekte, um verschiedene Arten von Datensätzen zu kombinieren
- Wenn Sie Informationen aus mehreren Arten von Datensätzen benötigen, erstellen Sie ein Objekt, das alle benötigten Informationen enthält. Anschließend können Sie das Objekt zum Formatieren oder Analysieren von Daten in Workflow-Studioverwenden.
Skripting mit komplexen Daten
Beachten Sie bei der Skripterstellung mit komplexen Daten die folgenden allgemeinen Richtlinien.
- Verwenden Sie Zeichenfolgeneingaben, um komplexe Daten in eine JSON-Zeichenfolge zu konvertieren
- Wenn Sie komplexe Daten einer Zeichenfolgeneingabe zuordnen, konvertiert Workflow-Studio 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 für den Zugriff auf vorherige Daten
- 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 Benutzerdatensätzen zu, die Sie in einem vorherigen Schritt gesucht haben.
- Erstellen Sie eine Skriptausgabevariable zum Speichern komplexer Daten
- 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 Skriptausgabevariablen zu
- Wenn eine anwenderdefinierte Aktion komplexe Daten ausgeben soll, fügen Sie eine Aktionsausgabe hinzu, und ordnen Sie sie der Datenpille für die Ausgabevariable Ihres Skriptschritts zu. Erstellen Sie beispielsweise ein Kontakt-Array, und laden Sie die Kontaktobjektvorlage, die Sie zuvor gespeichert haben. Ordnen Sie die Aktionsausgabe dem von Ihrem Skriptschritt erstellten Kontakt-Array zu.
Flow Designer und Domain Separation
Befolgen Sie diese allgemeinen Richtlinien, wenn Sie Domain Separation mit Workflow-Studioverwenden.
- Stellen Sie sicher, dass Mandanten-Flows, Aktionen und Subflows für Domänen ordnungsgemäß ausgeführt werden
- Da Mandanten die Inhalte Workflow-Studio nicht überschreiben können, muss ein Service Provider-Administrator (SP) aus der Domäne TOP sie erstellen und verwalten, um sicherzustellen, dass sie für Domänen ordnungsgemäß ausgeführt werden. Sie können zwar domänenspezifische Flows erstellen, aber Benutzer, die in Domänen höher in der Hierarchie arbeiten, können mehrere untergeordnete Domänen-Flows auslösen. Beispielsweise kann ein Benutzer, der in der TOP-Domäne arbeitet, Flows in untergeordneten Domänen wie ACME und INITECH auslösen.Hinweis:Flow-Autoren können nur Workflow-Studio -Inhalte sehen, die in ihrer aktuellen Domäne und in übergeordneten Domänen in der Hierarchie verfügbar sind. Workflow-Studio zeigt keine Inhalte an, die in Domänen vom Typ „Enthält“ sichtbar sind.
- Geben Sie einen eindeutigen Namen für jeden Flow, jede Aktion und jeden Subflow an
- Da alle Domänen den Inhalt von Workflow-Studio gemeinsam nutzen, muss ein SP-Administrator in der TOP-Domäne jeden Flow, jede Aktion und jeden Subflow 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 dem Flow-Namen die Domäne hinzu, z. B. Validate incidents - TOP(Incidents validieren – TOP), Validate incidents – ACME(Incidents validieren – ACME) und Validate incidents – INITECH (Incidents validieren – INITECH).
- Stellen Sie sicher, dass Flows und Aktionen nur Artefakte aus aktuellen oder übergeordneten Domänen enthalten
- Workflow-Studio verhindert die Aktivierung von Flows, die Artefakte enthalten, die für die aktuelle oder übergeordnete Domänen nicht verfügbar sind. Wenn Sie beispielsweise einen domänenspezifischen Flow erstellen, der zur ACME-Domäne gehört, darf er keine Aktionen oder Subflows enthalten, die zur gleichgeordneten Domäne INITECH gehören.
- Bearbeiten Sie den Inhalt von Workflow-Studio in der Domäne, zu der er gehört
- Während Benutzer in einer übergeordneten Domäne Flows, Aktionen und Subflows in einer untergeordneten Domäne anzeigen können, müssen sie diese in der Domäne bearbeiten, der sie angehören. Beispielsweise kann ein Administrator in der TOP-Domäne Flows aus der ACME-Domäne anzeigen, muss jedoch zur Bearbeitung in die ACME-Domäne wechseln.
Bereitstellung
- Vermeiden Sie die Bereitstellung neuerer Release-Flows für Instanzen mit älteren Releases
- Workflow-Studio bietet keine Unterstützung für die Bereitstellung von Flows in Instanzen, die in früheren Releases ausgeführt werden. Manchmal ändert sich das Datenmodell des Flows zwischen Releases, was die Ausführung des Flows verhindern oder zu unerwarteten Ergebnissen führen kann.
Flow-Fehlerbehandlung
Befolgen Sie diese allgemeinen Richtlinien, um die Vorteile der Flow-Fehlerbehandlung zu nutzen.
- Vermeiden Sie es, dem Hauptabschnitt des Flow Elemente zur Fehlerbehandlung hinzuzufügen
- Die Ausführung eines Flows wird normalerweise beendet, wenn eine Aktion oder ein Subflow im Hauptabschnitt einen Fehler 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 Hinzufügen von Fehlerbehandlungsaktionen und Subflows zum Fehler-Handler-Abschnitt wird sichergestellt, dass sie bei einem Fehler ausgeführt werden.
- Erfassen Sie Fehlerstatusinformationen
- Das Fehlerstatusobjekt enthält Informationen zu der Aktion, die zu einem Fehler geführt hat. Sie können diese Informationen verwenden, um die Ursache des Fehlers 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 auf einen übergeordneten Flow kaskadieren. Wenn Sie den Abschnitt für den Subflow-Fehler-Handler leer lassen, wird sichergestellt, dass immer der Status Abgeschlossen (Fehler erfasst) generiert wird.
- Verwenden Sie Subflows, um die Beschränkung auf 10 Elemente zu umgehen
- Anstatt zu erzwingen, dass Ihr Fehlerbehandlungsprozess innerhalb einer Grenze von 10 Elementen liegt, rufen Sie Subflows auf, die viel mehr 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 Folge von Aktionen in mehreren Flows neu zu erstellen, erstellen Sie wiederverwendbare Subflows, um Fehler in Ihren Datensatzdaten zu korrigieren. Wenn ein Flow-Fehler Ihre Datensatzdaten in einem unerwünschten Zustand hinterlä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.
Fehlerbewertung der Aktion
Befolgen Sie diese allgemeinen Richtlinien, um die Vorteile der Aktionsfehlerbewertung zu nutzen.
- Nur unabhängige Schritte zulassen, um die Ausführung fortzusetzen
- Zulassen, dass ein Schritt weiter 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
- Es gibt zwar keine Begrenzung für die Anzahl der Fehlerbedingungen, die Sie erstellen können, aber jede Fehlerbedingung muss bewertet werden. Je mehr Fehlerbedingungen Ihre Aktion auswerten muss, desto potenziell langsamer kann sie ausgeführt werden.
- Identifizieren Sie bestimmte Schrittfehler
- Sie können den Schrittstatus verwenden, um zu identifizieren, wann ein bestimmter Schritt fehlschlägt. Das Identifizieren eines bestimmten Schritts kann nützlich sein, wenn Ihre Aktion mehrere Instanzen des gleichen Schritttyps enthält. Möglicherweise möchten Sie auch einen bestimmten Schritt identifizieren, damit ein Flow-Fehlerhandler entsprechende Korrekturmaßnahmen für den Fehler ergreifen kann.
- Platzieren Sie spezifische Fehlerbedingungen vor allgemeine Fehlerbedingungen
- Die Fehlerauswertung wird beendet, wenn die Aktion eine übereinstimmende Fehlerbedingung findet. Wenn Sie allgemeine Fehlerbedingungen an die erste Stelle setzen, kann dies verhindern, dass die Aktion jemals mit bestimmten Fehlerbedingungen übereinstimmt.
- Verwenden Sie beschreibende Fehlerbedingungsbezeichnungen
- Identifizieren Sie eine Fehlerbedingung, ohne sie bearbeiten zu müssen. Standardmäßig werden bei der Bearbeitung nur Fehlerbedingungen angezeigt.
Flow-Administrator
- Flow-Reporting in der Produktion deaktivieren
- Minimieren Sie die Menge an Arbeitsspeicher, der für die Ausführung von Flows erforderlich ist, indem Sie die Flow-Berichterstellungdeaktivieren. Flow-Reporting speichert Konfigurations- und Laufzeitinformationen für die Seite „Ausführungsdetails“. Diese Berichte eignen sich gut für die Fehlerbehebung, erfordern jedoch, dass eine große Datenmenge sowohl im Arbeitsspeicher als auch in der Datenbank aufbewahrt wird. Standardmäßig ist das Flow-Reporting deaktiviert, und das System generiert Ausführungsdetails nur, wenn Sie einen Flow oder eine Aktion manuell testen. Stattdessen können Sie Protokolldateien verwenden, die auch dann verfügbar sind, wenn die Berichterstellung deaktiviert ist.
- Reduzieren Sie den Speicherverbrauch in Flows mit geschachtelten Schleifen
- Wenn die Berichterstellung 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 berichten, desto mehr Arbeitsspeicher wird benötigt.
- Zeigen Sie die endgültigen transformierten Werte in den Flow-Ausführungsdetails an
- In den Flow-Ausführungsdetailswird nur der endgültig transformierte Wert angezeigt, nicht der Wert für jede angewendete Transformation.
Flow-Priorität
Beachten Sie beim Festlegen der Flow-Priorität die folgenden Designüberlegungen.
- Vermeiden Sie es, alle Flows auf eine Ausführung mit hoher Priorität festzulegen
- Verwenden Sie eine Mischung aus Prioritäten, anstatt alle Flows auf eine 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 warten müssen.
- Vermeiden Sie das Festlegen der Flow-Priorität für Flows, die angehalten werden müssen
- Flows, die angehalten werden müssen, mit standardmäßiger mittlerer Priorität, da ein angehaltener Flow seinen Prioritätswert verliert, wenn er wieder ausgeführt wird.
- Verwenden Sie eine 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 eine hohe Priorität zu setzen, da dies die Anzahl der verfügbaren Worker-Threads für die Ausführung anderer Flows begrenzt. Ein Flow mit langer Laufzeit und hoher Priorität kann auch die Anzahl der für die Ausführung anderer Flows verfügbaren Worker-Threads reduzieren.
- Verwenden Sie eine niedrige Priorität für Flows mit hohem Volumen
- Führen Sie Flows mit hohem Volumen mit niedriger Priorität aus, sodass andere zeitkritische Flows zuerst ausgeführt werden können. Flows mit niedriger Priorität dürfen nicht zeitabhängig sein.
- Verwenden Sie eine mittlere Priorität für zeitkritische Flows
- Verwenden Sie die Standard-Flow-Priorität, wenn ein Flow im Vergleich zu anderen Flows eine zeitliche Dringlichkeit aufweist.