FlowAPI – Scoped, Global

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 34 Minuten Lesedauer
  • Die FlowAPI stellt Methoden zum Ausführen von Aktionen, Flows oder Subflows in serverseitigen Skripts bereit, die entweder blockierende oder nicht blockierende Methoden verwenden.

    Greifen Sie in globalen und bereichsbezogenen Skripts über den sn_fd- Namespace auf FlowAPI- Methoden zu. Erstellen Sie Aufrufe für Ihre Flows mithilfe der Code-Fragment -Aktion in Flow Designer, oder verwenden Sie die hier beschriebenen Methoden, um Skripts manuell zu aktualisieren.

    Hinweis:
    In domänengetrennten Instanzen werden von dieser API ausgelöste Flows, Subflows und Aktionen in der Domäne des Benutzers ausgeführt, der das Skript gestartet hat. Beispiel: Wenn ein Benutzer in der Acme-Domäne ein Skript startet, das einen Flow auslöst, wird der Flow in der Acme-Domäne ausgeführt und kann nur auf Acme-Daten zugreifen, auch wenn der Flow als Systembenutzer ausgeführt wird.
    Hinweis:
    Um die Instanzleistung zu optimieren, sollten Sie diese Methoden nicht aus einem asynchronen Business Rule-Skript aufrufen. Erstellen Sie stattdessen einen Datensatz für eine geplante Aufgabe in der Benutzeroberfläche von Flow Designer.

    FlowAPI – cancel(String contextId, String reason)

    Bricht einen angehaltenen oder ausgeführten Flow, Subflow oder eine Aktion ab.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    contextId Zeichenfolge Sys_id des Ausführungsdetail-Datensatzes für den Flow, Subflow oder die Aktion. Greifen Sie auf die Ausführungsdetails zu, indem Sie in Flow Designerzur Registerkarte Flow-Ausführungen navigieren, oder übergeben Sie die sys_id des Kontextdatensatzes, der von den Methoden startFlow(), startSubflow()oder startAction() zurückgegeben wird.
    Hinweis:
    Es kann zu einer geringfügigen Verzögerung des Abbruchs kommen, wenn der Zielkontext auf einem anderen Knoten der Instanz ausgeführt wird. Kontexte, die auf demselben Knoten ausgeführt werden, werden sofort abgebrochen. Kontexte, die auf einem anderen Knoten ausgeführt werden, müssen zuerst warten, bis der Abbruch an den entsprechenden Knoten weitergeleitet wird.
    Grund Zeichenfolge Optional. Grund für den Abbruch des Flow, Subflow oder der Aktion. Wird im Feld Nachricht der Tabelle „Flow-Engine-Protokolleinträge“ [sys_flow_log] angezeigt.
    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    void

    In diesem Beispiel wird der Rückgabewert der startFlow()- Methode verwendet, um Flows mit langer Ausführungszeit abzubrechen.

    (function() { 
    
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('number', 'INC0000050'); 
    now_GR.query(); 
    now_GR.next(); 
    
          try { 
              var inputs = {}; 
              inputs['current'] = now_GR; // GlideRecord of table: 
              inputs['table_name'] = 'incident'; 
    
              // Starts the flow asynchronously.
              var result = sn_fd.FlowAPI.getRunner()
              .flow('global.myFlow')
              .inBackground()
              .withInputs(inputs)
              .run();
    
              var contextId = result.getContextId();
              var dateRun = result.getDate();
              var domainUsed = result.getDomainId();
              var flowName = result.getFlowObjectName();
              var flowObjectType = result.getFlowObjectType(); 
    
          } catch (ex) { 
              var message = ex.getMessage(); 
              gs.error(message); 
          } 
    })();
    
     
    // Call the cancel() method using the context Id returned from the startFlow() method
    sn_fd.FlowAPI.cancel(contextId, 'Flow took too long to execute.');

    In diesem Beispiel werden alle Flows mit dem Namen Test-Flow abgebrochen.

    var now_GR = new GlideRecord("sys_flow_context");
    now_GR.addQuery("name", "Test Flow");
    now_GR.query();
    
    while (now_GR.next()) {
    sn_fd.FlowAPI.cancel(now_GR.getUniqueValue(), 'Canceling Test Flows');
    } 

    FlowAPI – executeAction(String name, Map inputs, Number timeout)

    Führt eine Aktion synchron von einem serverseitigen Skript aus.

    Führen Sie eine Aktion aus einer Business Rule, einer Skripteinbindung oder einem anderen serverseitigen Skript aus. Aktionen, die mit dieser Methode ausgeführt werden, laufen synchron, sodass die Methode Zugriff auf die von der Aktion erstellten Ausgaben hat. Verwenden Sie startAction, eine Aktion asynchron auszuführen.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Hinweis:
    Diese Methode führt die Aktion als Benutzer aus, der die Sitzung initiiert.
    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Bereich und der Name der auszuführenden Aktion, z. B. global.action_name.
    inputs Karte Name-Wert-Paare, die Aktionseingaben definieren. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung.
    Zeitüberschreitung Nummer Optional. Zeitüberschreitung in Millisekunden. Dieser Wert überschreibt die standardmäßige Zeitüberschreitung von 30 Sekunden, die in der Systemeigenschaft com.glide.hub.flow_api.default_execution_time angegeben ist. Nach Ablauf der Zeitüberschreitung wird eine Ausnahme ausgelöst.
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    Objekt Die Aktionsausgaben.

    In diesem Beispiel verwendet das Skript sn_fd.FlowAPI.executeAction, um eine Aktion namens actionforpassword2test im globalen Bereich auszuführen. Eine Variable mit dem Namen „inputs“ enthält die Eingänge für die Aktion. In diesem Fall einen Namen und ein Passwort. Die Ausgaben für die Aktion werden in der Variablen „outputs“ gespeichert, die in diesem Fall ein verschlüsseltes Passwortobjekt ist. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    (function() {
    	
      try {
        var inputs = {};
        inputs['name'] = ; // String 
        inputs['password2'] = ; // Password (2 Way Encrypted) 
    		
        // Execute Synchronously: Run in foreground. Code snippet has access to outputs.
        // var timeout = ; //timeout in ms
        //sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs, timeout)
        var outputs = sn_fd.FlowAPI.executeAction('global.actionforpassword2test', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output = outputs['output']; // Password (2 Way Encrypted)
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI – executeActionQuick(String name, Map inputs, Number timeout)

    Führen Sie eine Aktion von einem serverseitigen Skript synchron aus der aktuellen Benutzersitzung aus, ohne Ausführungsdetails oder andere zugehörige Datensätze zu erstellen. Verbessern Sie die Leistung, indem Sie den Overhead für die Aufzeichnung eliminieren. Verwenden Sie diese API, um die Geschwindigkeit der Verarbeitung großer Mengen, z. B. mehrerer Ausführungen pro Sekunde, in einer Produktionsumgebung zu erhöhen.

    Berichterstellung und Datensätze generiert
    Diese Methode erstellt unabhängig von den Flow Designer -Einstellungen keine Ausführungsdetails und Kontextdatensätze.
    Warten auf Support
    Diese Methode unterstützt das Anhalten der Aktion zum Warten auf Bedingungen nicht. Schritte, die für Wartebedingungen wie „Um Genehmigung bitten“ oder „Warten auf Bedingung“ angehalten werden, werden nicht unterstützt.
    MID-Server-Unterstützung
    Diese Methode unterstützt nicht das Anhalten einer Aktion, die von einem MID Server ausgeführt werden soll.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Tabelle : 5. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Umfang und interner Name der auszuführenden Aktion. Beispiel: global.action_name. Suchen Sie das Feld Interner Name in der Liste der Flow Designer -Aktionen.
    Eingaben Karte Name-Wert-Paare, die Aktionseingaben definieren. Sie finden die verfügbaren Aktionseingaben und erforderlichen Datentypen unter Eingaben in der Aktionsgliederung. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung. Beispiel: {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Zeitüberschreitung Nummer

    Optional. Zeitüberschreitung in Millisekunden. Dieser Wert überschreibt die standardmäßige Zeitüberschreitung von 30 Sekunden, die in der Systemeigenschaft com.glide.hub.flow_api.default_execution_time angegeben ist. Nach Ablauf der Zeitüberschreitung wird eine Ausnahme ausgelöst.

    Tabelle : 6. Ergebnisse
    Typ Beschreibung
    Objekt Objekt, das die von der Aktion definierten Ausgaben enthält. Sie finden die Ausgaben für die Aktion unter Ausgaben in der Aktionsgliederung.
    (function() {
      try {
    
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        var outputs = sn_fd.FlowAPI.executeActionQuick('global.update_record_test', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output1 = outputs['output1']; 
    
      } catch (ex) { 
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI – executeDataStreamAction(String name, Map inputs, Number timeout)

    Führt eine Datenstrom-Aktion synchron von einem serverseitigen Skript aus und gibt ein ScriptableDataStream-Objekt zurück.

    Weitere Informationen zu Datenstromaktionen finden Sie unter Datenstromaktionen und Paginierung.

    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Hinweis:
    Umschließen Sie die Datenstromlogik immer in einem try/catch -Block, um Fehler abzufangen. Fügen Sie immer eine „ endlich “-Anweisung ein, die mit der close()- Methode der ScriptableDataStream -Klasse endet, um den Datenstrom zu schließen und Leistungsprobleme zu vermeiden.
    Tabelle : 7. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Bereich und der Name der auszuführenden Datenstromaktion. Beispiel: global.data_stream_action_name.
    Eingaben Karte Name-Wert-Paare, die Aktionseingaben definieren. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung. Wenn die Aktion keine Eingaben enthält, schließen Sie diesen Parameter nicht ein.
    Zeitüberschreitung Nummer Optional. Zeitspanne, bis die Aktion abläuft. Nach Ablauf der Zeitüberschreitung wird eine Ausnahme ausgelöst. Die Zeitüberschreitung gilt nur für die Methode executeDataStreamAction, nicht für Methoden in der Klasse ScriptableDataStream.

    Standard: 30000, angegeben durch die Systemeigenschaft com.glide.hub.flow_api.default_execution_time .

    Einheit: Millisekunden

    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    ScriptableDataStream Ein Objekt, das zum Durchlaufen von Elementen im Datenstrom verwendet wird. Verwenden Sie die Methoden in der ScriptableDataStream -Klasse, um mit diesem Objekt zu interagieren. Weitere Informationen finden Sie unter ScriptableDataStream-API.

    In diesem Beispiel wird ein Incident-Datensatz für jedes im Datenstrom zurückgegebene Element erstellt.

    (function() {
    	
      try {
    
        // Execute Data Stream Action. 
        var stream = sn_fd.FlowAPI.executeDataStreamAction('x_my_scope.data_stream_name');
    
        // Process each item in the data stream
        while (stream.hasNext()) {
    
          // Get a single item from the data stream.
          var item = stream.next();
    
          // Use the item. 
          var now_GR = new GlideRecord('incident');
          now_GR.setValue('number',item.id);
          now_GR.setValue('short_description',item.name);
          now_GR.insert();
    		
          // By default, this code snippet will terminate after 10 items.
          // Remove or modify this limit after testing your code.
          if (stream.getItemIndex() >= 9) {
            break;
          }
        }
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      } finally {
        stream.close();
      }
    	
    })();

    FlowAPI – executeFlow(String name, Map inputs, Number timeout)

    Führt einen Flow synchron von einem serverseitigen Skript aus.

    Führen Sie einen Flow aus einer Business Rule, einer Skripteinbindung oder einem anderen serverseitigen Skript aus. Flows, die mit dieser Methode ausgeführt werden, laufen synchron. Verwenden Sie startFlow, um einen Flow asynchron auszuführen.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Hinweis:
    Diese Methode führt den Flow als Benutzer aus, der in den Flow-Eigenschaften angegeben ist.
    Tabelle : 9. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Bereich und der Name des auszuführenden Flow, z. B. global.flow_name.
    inputs Karte Name-Wert-Paare, die Auslösereingaben definieren. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung.
    Zeitüberschreitung Nummer Optional. Zeitüberschreitung in Millisekunden. Dieser Wert überschreibt die standardmäßige Zeitüberschreitung von 30 Sekunden, die in der Systemeigenschaft com.glide.hub.flow_api.default_execution_time angegeben ist. Nach Ablauf der Zeitüberschreitung wird eine Ausnahme ausgelöst.
    Tabelle : 10. Ergebnisse
    Typ Beschreibung
    Keine Normaler Betrieb erzeugt keinen Rückgabewert.
    Ausnahme Die API löst eine Ausnahme aus, wenn ein synchron aufgerufener Flow angehalten wird. Die aktuelle Ausführung befindet sich im Wartestatus. In den meisten Fällen wird die Ausnahme entfernt, wenn der Flow fortgesetzt wird. Die API kann jedoch einen Flow, der an einen MID-Server gesendet wurde, nicht fortsetzen.

    Dieses Beispiel verwendet „sn_fd.FlowAPI.executeFlow“, um einen globalen Flow mit dem Namen „test_flow“ auszuführen. Dieser Flow wird normalerweise ausgelöst, wenn ein Datensatz in der Incident-Tabelle aktualisiert wird. Da Sie den Flow von einem Skript aus aktivieren, müssen Sie diese Informationen angeben. Der Code erstellt eine Variable „inputs“, die den aktuellen Datensatz und die Tabelle für den Datensatz enthält. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    (function() {
      try {
        var inputs = {};
        inputs['current'] = ; // GlideRecord of table:  
        inputs['table_name'] = 'incident';
    
        // Execute Synchronously: Run in foreground.
        // var timeout = ; //timeout in ms
        //sn_fd.FlowAPI.executeFlow('global.test_flow', inputs, timeout)
        sn_fd.FlowAPI.executeFlow('global.test_flow', inputs);
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI – executeFlowQuick(String name, Map inputs, Number timeout)

    Führt einen Flow, Subflow, eine Aktion oder eine Datenstromaktion von einem serverseitigen Skript synchron oder asynchron aus, ohne Ausführungsdetails oder andere zugehörige Datensätze zu erstellen. Verbessert die Leistung, indem der Overhead für die Aufzeichnung eliminiert wird. Verwenden Sie diese API, um die Geschwindigkeit der Verarbeitung großer Mengen, z. B. mehrerer Ausführungen pro Sekunde, in einer Produktionsumgebung zu erhöhen.

    Berichterstellung und Datensätze generiert
    Diese Methode erstellt unabhängig von den Flow Designer -Einstellungen keine Ausführungsdetails und Kontextdatensätze.
    Als Benutzer ausführen
    Diese Methode führt den Flow als Benutzer aus, der die Sitzung initiiert. Es wird nicht unterstützt, den Flow so festzulegen, dass er als Systembenutzer ausgeführt wird, oder die Identität eines Benutzers anzunehmen.
    Warten auf Support
    Diese Methode unterstützt nicht das Anhalten des Flows, um auf Bedingungen zu warten. Aktionen oder Flow-Logik, die für Wartebedingungen wie „Um Genehmigung bitten“, „Warten auf Bedingung“ oder „Warten auf eine Dauer“ angehalten werden, werden nicht unterstützt.
    MID-Server-Unterstützung
    Diese Methode unterstützt nicht das Anhalten eines Flows, der von einem MID Server ausgeführt werden soll.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Tabelle : 11. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Umfang und interner Name des auszuführenden Flow. Beispiel: global.flow_name. Suchen Sie das Feld Interner Name in der Liste der Flow Designer -Flows.
    Eingaben Karte Name-Wert-Paare, die Auslösereingaben definieren. Sie finden die verfügbaren Auslösereingaben und erforderlichen Datentypen im Abschnitt „Auslöser“ des Flow. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung. Beispiel: {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Zeitüberschreitung Nummer Optional. Zeitüberschreitung in Millisekunden. Dieser Wert überschreibt die standardmäßige Zeitüberschreitung von 30 Sekunden, die in der Systemeigenschaft com.glide.hub.flow_api.default_execution_time angegeben ist. Nach Ablauf der Zeitüberschreitung wird eine Ausnahme ausgelöst.
    Tabelle : 12. Ergebnisse
    Typ Beschreibung
    void
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
    
        var inputs = {};
        inputs['current'] = grIncident;
        inputs['table_name'] = 'incident';
    		
        sn_fd.FlowAPI.executeFlowQuick('global.test_quick_flow', inputs);
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    	}
    	
    })();

    FlowAPI – executeSubflow(Zeichenfolge „name“, Zuordnung „inputs“, Zahl „timeout“)

    Führt einen Subflow synchron von einem serverseitigen Skript aus.

    Führen Sie einen Subflow aus einer Business Rule, einer Skripteinbindung oder einem anderen serverseitigen Skript aus. Subflows, die mit dieser Methode ausgeführt werden, laufen synchron. Verwenden Sie startSubflow, um einen Subflow asynchron auszuführen.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Hinweis:
    Diese Methode führt den Flow als Benutzer aus, der in den Flow-Eigenschaften angegeben ist.
    Tabelle : 13. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Bereich und der Name des auszuführenden Subflow, z. B. global.subflow_name.
    inputs Zuordnung Name-Wert-Paare, die Subflow-Eingaben definieren. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung.
    Zeitüberschreitung Nummer Optional. Zeitüberschreitung in Millisekunden. Dieser Wert überschreibt die standardmäßige Zeitüberschreitung von 30 Sekunden, die in der Systemeigenschaft com.glide.hub.flow_api.default_execution_time angegeben ist. Nach Ablauf der Zeitüberschreitung wird eine Ausnahme ausgelöst.
    Tabelle : 14. Ergebnisse
    Typ Beschreibung
    Objekt Objekt mit den Subflow-Ausgaben.
    Ausnahme Die API löst eine Ausnahme aus, wenn ein synchron aufgerufener Flow angehalten wird. Die aktuelle Ausführung befindet sich im Wartestatus. In den meisten Fällen wird die Ausnahme entfernt, wenn der Flow fortgesetzt wird. Die API kann jedoch einen Flow, der an einen MID-Server gesendet wurde, nicht fortsetzen.

    In diesem Beispiel verwendet das Skript „sn_fd.FlowAPI.executeSubflow“, um einen Subflow mit dem Namen „subflowTest“ im globalen Bereich auszuführen. Eine Variable mit dem Namen „input“ enthält die Eingaben für den Subflow. In diesem Fall einen Namen und ein Passwort. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    
    (function() {
    	
    	try {
    		var inputs = {};
    		inputs['name'] = ; // String 
    		inputs['password2'] = ; // Password (2 Way Encrypted) 
    		
    		// Execute Synchronously: Run in foreground.
    		// var timeout = ; //timeout in ms
                  //sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs, timeout)
                  var outputs = sn_fd.FlowAPI.executeSubflow('global.subflowTest', inputs);
    		
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}	
    })();

    FlowAPI – executeSubflowQuick(String name, Map inputs, Number timeout)

    Führen Sie einen Subflow von einem serverseitigen Skript synchron aus der aktuellen Benutzersitzung aus, ohne Ausführungsdetails oder andere zugehörige Datensätze zu erstellen. Verbessern Sie die Leistung, indem Sie den Overhead für die Aufzeichnung eliminieren. Verwenden Sie diese API, um die Geschwindigkeit der Verarbeitung großer Mengen, z. B. mehrerer Ausführungen pro Sekunde, in einer Produktionsumgebung zu erhöhen.

    Berichterstellung und Datensätze generiert
    Diese Methode erstellt unabhängig von den Flow Designer -Einstellungen keine Ausführungsdetails und Kontextdatensätze.
    Als Benutzer ausführen
    Diese Methode führt den Flow als Benutzer aus, der die Sitzung initiiert. Es wird nicht unterstützt, den Flow so festzulegen, dass er als Systembenutzer ausgeführt wird, oder die Identität eines Benutzers anzunehmen.
    Warten auf Support
    Diese Methode unterstützt nicht das Anhalten des Flows, um auf Bedingungen zu warten. Aktionen oder Flow-Logik, die für Wartebedingungen wie „Um Genehmigung bitten“, „Warten auf Bedingung“ oder „Warten auf eine Dauer“ angehalten werden, werden nicht unterstützt.
    MID-Server-Unterstützung
    Diese Methode unterstützt nicht das Anhalten eines Flows, der von einem MID Server ausgeführt werden soll.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Tabelle : 15. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Umfang und interner Name des auszuführenden Subflows. Beispiel: global.subflow_name. Suchen Sie das Feld Interner Name in der Liste der Subflows Flow Designer.
    Eingaben Zuordnung Name-Wert-Paare, die Subflow-Eingaben definieren. Sie finden die verfügbaren Subflow-Eingaben und erforderlichen Datentypen unter Eingaben im Subflow. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung. Beispiel: {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Zeitüberschreitung Nummer Optional. Zeitüberschreitung in Millisekunden. Dieser Wert überschreibt die standardmäßige Zeitüberschreitung von 30 Sekunden, die in der Systemeigenschaft com.glide.hub.flow_api.default_execution_time angegeben ist. Nach Ablauf der Zeitüberschreitung wird eine Ausnahme ausgelöst.
    Tabelle : 16. Ergebnisse
    Typ Beschreibung
    Objekt Objekt, das die vom Subflow definierten Ausgaben enthält. Sie finden die Ausgaben für den Subflow unter Subflow-Eingaben und -Ausgaben in der Subflow-gliederung.
    (function() {
    
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        var outputs = sn_fd.FlowAPI.executeSubflowQuick('global.test_quick_run_subflow', inputs);
    
        // Get Outputs:
        // Note: outputs can only be retrieved when executing synchronously.
        var output1 = outputs['output1']; 
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI – getErrorMessage(String contextId)

    Gibt die Fehlermeldungen zurück, die von einem Flow, Subflow oder einer Aktion erzeugt wurden. Diese Methode kann keine Nachrichten aus Flows, Subflows oder Aktionen zurückgeben, die mit der quick()-API ausgeführt werden.

    Tabelle : 17. Parameter
    Name Typ Beschreibung
    contextId Zeichenfolge Die sys_id des Flow, Subflow oder der Aktion, deren Fehlermeldungen Sie abrufen möchten.
    Tabelle : 18. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Der zuletzt ausgeführte Vorgang und die Fehlermeldung, die er erzeugt hat.

    In diesem Beispiel wird ein globaler Subflow mit dem Namen „test_error_subflow“ gestartet, und alle erzeugten Fehlermeldungen werden zurückgegeben. Normalerweise führt ein einzelnes Skript nicht beide Flows aus und ruft dann die zugehörigen Fehlermeldungen ab. Normalerweise hat entweder ein anderes Skript oder Flow Designer den Flow bereits ausgeführt. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    (function() {
    
      try {
        // Gather inputs to call flow
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
        inputs['ah_comment'] ='Test Comment' ; // String
    
        // Call flow with known errors
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_error_subflow', inputs);
    
        // Get flow error message
        var errormsg = sn_fd.FlowAPI.getErrorMessage(contextId);
        return errormsg;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    Ausgabe:

    Operation (test_error_flow.574033f6db6811102166e2291396199f.274073f6db6811102166e22913961908.0be0d916c31332002841b63b12d3ae13) failed with error: com.snc.process_flow.exception.OpException: Value of field record is not a GlideRecord
    at com.snc.process_flow.operation.FieldValue.getGlideRecord(FieldValue.java:145)
    at com.snc.process_flow.operation.CRUDOperation.getInputValidGlideRecord(CRUDOperation.java:54)
    at com.snc.process_flow.operation.RecordDeleteOperation.run(RecordDeleteOperation.java:26)
    at com.snc.process_flow.engine.Operation.execute(Operation.java:212)
    at com.snc.process_flow.engine.restricted_caller_access.ExecuteWithCallerAccessTracking.executeWithMetaStack(ExecuteWithCallerAccessTracking.java:31)
    at com.snc.process_flow.engine.ProcessEngine.executeOps(ProcessEngine.java:570)
    at com.snc.process_flow.engine.ProcessEngine.runInternal(ProcessEngine.java:476)
    at com.snc.process_flow.engine.ProcessEngine.run(ProcessEngine.java:462)
    at com.snc.process_flow.engine.ProcessAutomation.run(ProcessAutomation.java:86)
    at com.snc.process_flow.engine.GlideProcessAutomation.runSync(GlideProcessAutomation.java:155)
    at com.snc.process_flow.engine.GlideProcessAutomation.runWithDomain(GlideProcessAutomation.java:270)
    at com.snc.process_flow.engine.GlideProcessAutomation.lambda$runAsUserSync$1(GlideProcessAutomation.java:237)
    at com.snc.process_flow.engine.PFSessionClone.run(PFSessionClone.java:70)
    at com.snc.process_flow.engine.GlidePFSession.runPlanAsUserSession(GlidePFSession.java:42)
    at com.snc.process_flow.engine.GlideProcessAutomation.runAsUserSync(GlideProcessAutomation.java:235)
    at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:330)
    at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:309)
    at com.snc.process_flow.engine.ProcessHubEventHandler.doSendMessage(ProcessHubEventHandler.java:475)
    at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:119)
    at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:91)
    at com.snc.process_flow.engine.FlowEventManager.processEvents(FlowEventManager.java:122)
    at com.glide.job.EventHandlerJob.execute(EventHandlerJob.java:38)
    at com.glide.schedule.JobExecutor.lambda$executeJob$0(JobExecutor.java:129)
    at com.snc.db.data_replicate.replicator.DataReplicationAdvisors.runInOriginatorContext(DataReplicationAdvisors.java:73)
    at com.glide.schedule.JobExecutor.lambda$inDataReplicationContext$2(JobExecutor.java:159)
    at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:132)
    at com.glide.schedule.JobExecutor.execute(JobExecutor.java:116)
    at com.glide.schedule_v2.SchedulerWorkerThread.executeJob(SchedulerWorkerThread.java:338)
    at com.glide.schedule_v2.SchedulerWorkerThread.lambda$process$0(SchedulerWorkerThread.java:220)
    at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)
    at com.glide.schedule_v2.SchedulerWorkerThread.process(SchedulerWorkerThread.java:220)
    at com.glide.schedule_v2.SchedulerWorkerThread.run(SchedulerWorkerThread.java:101)

    FlowAPI – getFlowStages(String scopedFlowName)

    Geben Sie eine JSON-Zeichenfolge zurück, die die Liste der Flow-Phasen enthält.

    Tabelle : 19. Parameter
    Name Typ Beschreibung
    scopedFlowName Zeichenfolge Anwendungsbereich und Name des Flows, dessen Phasen Sie abrufen möchten.
    Tabelle : 20. Ergebnisse
    Typ Beschreibung
    Zeichenfolge JSON-formatierte Zeichenfolge, die die Phasen des Flows nach ihren Phasendatensatzwerten auflistet.

    Dieses Beispiel zeigt, wie die Phasen für den Flow „Service Catalog-Elementanforderung“ abgerufen werden.

    (function() {
    
      try {
        // Name of flow with stages
        var flowName = "service_catalog_item_request";
    
        // Get flow stages
        var flowStages = sn_fd.FlowAPI.getFlowStages(flowName);
        //Print JSON as info message  
        gs.info(flowStages);
        return flowStages;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    Ausgabe:

    Die JSON-Zeichenfolge enthält Name-Wert-Paare für ein Stufenfeld. Weitere Informationen finden Sie unter .

    [
      {
        "label": "Manager Approval",
        "value": "manager_approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 0
      },
      {
        "label": "Set current stage state to:  [Error]",
        "value": "Set current stage state to:  [Error]",
        "type": "error",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": false,
        "order": 0
      },
      {
        "label": "Dept. Head Approval",
        "value": "Dept. Head Approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 1
      },
      {
        "label": "CIO Approval",
        "value": "CIO Approval",
        "type": "standard",
        "duration": "1970-01-03 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 2
      },
      {
        "label": "Order Fulfillment",
        "value": "Order Fulfillment",
        "type": "standard",
        "duration": "1970-01-05 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 3
      },
      {
        "label": "Backordered",
        "value": "Backordered",
        "type": "standard",
        "duration": "1970-01-15 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 4
      },
      {
        "label": "Deployment",
        "value": "Deployment",
        "type": "standard",
        "duration": "1970-01-02 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 5
      },
      {
        "label": "Request Cancelled",
        "value": "Request Cancelled",
        "type": "standard",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 6
      },
      {
        "label": "Completed",
        "value": "complete",
        "type": "standard",
        "duration": "1970-01-01 00:00:00",
        "states": {
          "pending": "Pending - has not started",
          "inprogress": "In progress",
          "skipped": "Skipped",
          "complete": "Completed",
          "error": "Error"
        },
        "flow": "30f3d26187e92300e0ef0cf888cb0b91",
        "alwaysShow": true,
        "order": 7
      }
    ]

    FlowAPI – getOutputs(String contextId)

    Gibt die Ausgaben einer abgeschlossenen Aktion oder eines abgeschlossenen Subflows zurück.

    Sie können die Rückgabewerte der Methoden startAction() undstartSubflow() als Parameter contextId verwenden.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Tabelle : 21. Parameter
    Name Typ Beschreibung
    contextId Zeichenfolge Die sys_id der Aktion oder des Subflows, deren Ausgaben Sie abrufen möchten.
    Tabelle : 22. Ergebnisse
    Typ Beschreibung
    Objekt Objekt, das die Aktions- oder Subflow-Ausgaben enthält.

    Dieses Beispiel startet einen globalen Subflow namens test_subflow, wartet auf den Abschluss des Flows und ruft dann seine Ausgabewerte ab. Normalerweise führt ein einzelnes Skript nicht einen Flow aus und ruft dann seine Ausgabewerte ab. Da ein Flow vor dem getOutputs() -Aufruf möglicherweise nicht abgeschlossen wird, wird in diesem Beispiel eine Wartezeit verwendet. Normalerweise hat entweder ein anderes Skript oder Flow Designer den Flow bereits ausgeführt. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    (function() {
    
      try {
        // Gather inputs to call flow
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task
        inputs['ah_comment'] ='Test Comment' ; // String
    
        // Call flow
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
    
        // Wait for the flow to finish running
    
        // Get flow outputs
        var outputs = sn_fd.FlowAPI.getOutputs(contextId);
        var output1 = outputs['output1'];
        return output1;
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();
    

    FlowAPI – getRunner()

    Gibt ein ScriptableFlowRunner -Generator-Objekt für einen Flow oder eine Aktion zurück, die Sie ausführen möchten.

    Tabelle : 23. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 24. Ergebnisse
    Typ Beschreibung
    ScriptableFlowRunner Generatorobjekt, das zum Ausführen einer Flow Designer -Aktion, eines Flow oder eines Subflow verwendet wird.

    In diesem Beispiel wird ein Flow synchron ausgeführt.

    
    (function() {
      try {
    
        var inputs = {}; 
    
        inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';  // Pass the record's sys_id in as input.  
    
        var result = sn_fd.FlowAPI.getRunner()  // Create a ScriptableFlowRunner builder object.
          .action('global.markapproved')        // Run the global scope action named markapproved.
          .inForeground()
          .inDomain('TOP/ACME')                 // Run the action from the TOP/ACME domain.                               
          .withInputs(inputs)
          .run();                               // Run the action and return a FlowRunnerResult object.
    
        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
        var domainUsed = result.getDomainId();  // Retrieve the Domain ID from the result.
        var flowName = result.getFlowObjectName();
        var flowObjectType = result.getFlowObjectType();
    
        var outputs = result.getOutputs();            // Retrieve any outputs from the action execution.
        var newApprovalStatus = outputs['approval'];  // Echo back the approval status for verification.
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();
       

    FlowAPI – hasApprovals(String scopedFlowName)

    Überprüft, ob ein Flow innerhalb eines bestimmten Bereichs Aktionen vom Typ „Um Genehmigung bitten“ enthält.

    Die Methode hasApprovals() bestimmt, ob ein Flow innerhalb eines bestimmten Bereichs Aktionen vom Typ „Um Genehmigung bitten“ enthält. Diese Methode überprüft auch, ob Aktionen vom Typ „Um Genehmigung bitten“ innerhalb des Flows unter „Wenn Flow-Logikblöcke“ verschachtelt sind. Weitere Informationen finden Sie unter „Um Genehmigung bitten“-Aktionen.

    Tabelle : 25. Parameter
    Name Typ Beschreibung
    scopedFlowName Zeichenfolge Umfang und interner Name des auszuführenden Flow. Beispiel: global.flow_name. Suchen Sie das Feld Interner Name in der Liste der Flow Designer -Flows.
    Tabelle : 26. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Gibt einen der folgenden Zeichenfolgenwerte zurück:
    • IMMER: Der Flow enthält eine Aktion „Um Genehmigung bitten“, die nicht in einem bedingten If -Flow-Logikblock verschachtelt ist.
    • BEDINGT: Der Flow enthält eine Aktion „Um Genehmigung bitten“, die in einem bedingten If -Flow-Logikblock verschachtelt ist.
    • NEIN: Der Flow enthält keine Aktionen vom Typ „Um Genehmigung bitten“.
    • UNBEKANNT: Es ist ein Compilerfehler aufgetreten, und das System kann nicht bestimmen, ob der Flow Aktionen vom Typ „Um Genehmigung bitten“ enthält.

    Im folgenden Beispiel wird überprüft, ob der Flow „example_flow“ innerhalb des globalen Bereichs Aktionen vom Typ „Um Genehmigung anfordern“ enthält, und das Ergebnis wird protokolliert.

    (function() {
    	
      try {
        var result = sn_fd.FlowAPI.hasApprovals('global.example_flow');
        gs.log('Result: ' + result);
      }
    
      catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI – restartFlowFromContext(String ContextId, Map bereitgestelltInputs)

    Startet einen Flow, Subflow oder eine Aktion neu, die im Hintergrund ausgeführt wurde. Sie können neue Eingaben angeben oder sie auslassen, um die zuvor bereitgestellten Eingaben wiederzuverwenden.

    Tabelle : 27. Parameter
    Name Typ Beschreibung
    contextId Zeichenfolge Die sys_id des Flow, Subflow oder der Aktion, die Sie neu starten möchten. Dieser Flow, Subflow oder diese Aktion muss im Hintergrund ausgeführt worden sein und über einen zugeordneten sysevent-Datensatz verfügen.
    bereitgestellteEingaben Objekt Optional. Kartenobjekt, das die Name-Wert-Paare enthält, die Ersatzeingaben für den Flow, Subflow oder die Aktion definieren. Wenn Sie für diesen Parameter weglassen oder einen NULL-Wert angeben, wird der Flow, Subflow oder die Aktion mit den zuvor angegebenen Eingaben ausgeführt.
    Tabelle : 28. Ergebnisse
    Typ Beschreibung
    ScriptableFlowRunnerResultsScoped Objekt, das die Ausführungsdetails einer Flow Designer -Aktion, eines Flow oder eines Subflow enthält.

    Startet einen Beispiel-Flow mit einem datensatzbasierten Auslöser für die Incident-Tabelle neu. Der ursprüngliche Flow verwendete den Beispiel-Incident INC0008112 als Eingabe. Wenn der Flow neu gestartet wird, wird stattdessen der Beispiel-Incident INC0008111 als Eingabe verwendet.

    (function() {
      try {
    
        var flowContextID = '4216396ffd7d11107edcf07204c30fd5';     // sys_id of sys_flow_context record
        var oldIncidentRecord = '552c48888c033300964f4932b03eb092'; // sys_id of INC0008112
        var newIncidentRecord = 'a83820b58f723300e7e16c7827bdeed2'; // sys_id of INC0008111
        var inputs = {};
        var gr = new GlideRecord('incident'); // Create new incident object
    
        gr.get(newIncidentRecord);            // Get GlideRecord object for INC0008111
    
        inputs['current'] = gr;               // Set new Incident record as input
        inputs['table_name'] = 'incident';    // Set table name to Incident
    
        var result = sn_fd.FlowAPI.getRunner()            // Create a ScriptableFlowRunner builder object.
          .restartFlowFromContext(flowContextID, inputs); // Restart flow with new inputs.
    
        var contextId = result.getContextId();  // Retrieve the context ID from the result
        var dateRun = result.getDate();
    
        gs.info(contextId + ' ' + dateRun);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    
    })();
    

    FlowAPI – scheduleCancel(String contextId, String reason, IntegerdelaySeconds)

    Planen Sie ein Systemereignis in der Flow-Engine-Warteschlange, um einen Flow abzubrechen, der sich in Bearbeitung befindet, als unterbrochen betrachtet wird oder nach einer Verzögerung wartet.

    Tabelle : 29. Parameter
    Name Typ Beschreibung
    contextId Zeichenfolge Sys_id des Ausführungsdetail-Datensatzes für den Flow, Subflow oder die Aktion. Der Ziel-Flow, -Subflow oder die Aktion muss sich im Status „In Bearbeitung“, „Vermutlich unterbrochen“ oder „Warten“ befinden. Greifen Sie auf die Ausführungsdetails zu, indem Sie in Flow Designerzur Registerkarte Flow-Ausführungen navigieren, oder übergeben Sie die sys_id des von der Methode zurückgegebenen Kontextdatensatzes.
    Hinweis:
    Es kann zu einer geringfügigen Verzögerung des Abbruchs kommen, wenn der Zielkontext auf einem anderen Knoten der Instanz ausgeführt wird. Kontexte, die auf demselben Knoten ausgeführt werden, werden sofort abgebrochen. Kontexte, die auf einem anderen Knoten ausgeführt werden, müssen zuerst warten, bis der Abbruch an den entsprechenden Knoten weitergeleitet wird.
    Grund Zeichenfolge Grund für den Abbruch des Flow, Subflow oder der Aktion. Wird im Feld Nachricht der Tabelle „Flow-Engine-Protokolleinträge“ [sys_flow_log] angezeigt.
    VerzögerungSekunden Ganzzahl Optional. Anzahl der Sekunden, die gewartet werden soll, bevor ein Abbruchereignis in der Flow-Engine-Warteschlange verarbeitet wird. Wenn Sie diesen Parameter weglassen, verwendet die Methode den Standardwert von 1 Sekunde.

    Sie können diesen Parameter verwenden, um die Auswirkungen auf die Leistung zu vermeiden, wenn der Abbruch von Tausenden von Flow-Kontexten gleichzeitig geplant wird. Anstatt alle Stornierungen gleichzeitig auszuführen, planen Sie einen Batch von Flow-Stornierungen mit Verzögerung. Alternativ können Sie die Verzögerung als Zeitüberschreitungswert für einen asynchronen Flow verwenden.

    Tabelle : 30. Ergebnisse
    Typ Beschreibung
    Keine

    In diesem Beispiel wird der Rückgabewert der startFlow()- Methode verwendet, um den Abbruch von Flows mit langer Ausführungszeit zu planen.

    (function() { 
    
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('number', 'INC0000050'); 
    now_GR.query(); 
    now_GR.next(); 
    
          try { 
              var inputs = {}; 
              inputs['current'] = now_GR; // GlideRecord of table: 
              inputs['table_name'] = 'incident'; 
    
              // Starts the flow asynchronously.
              var contextId = sn_fd.FlowAPI.startFlow('global.myFlow', inputs); 
    
          } catch (ex) { 
              var message = ex.getMessage(); 
              gs.error(message); 
          } 
    })();
    
     
    // Call the scheduleCancel() method using the context Id returned from the startFlow() method
    sn_fd.FlowAPI.scheduleCancel(contextId, 'Flow took too long to execute.', 60);

    In diesem Beispiel wird der Abbruch von Flows mit dem Namen „Test-Flow“ geplant.

    var now_GR = new GlideRecord("sys_flow_context");
    now_GR.addQuery("name", "Test Flow");
    now_GR.query();
    
    while (now_GR.next()) {
    sn_fd.FlowAPI.scheduleCancel(now_GR.getUniqueValue(), 'Canceling Test Flows', 60);
    } 

    In diesem Beispiel wird der Parameter „delaySeconds“ verwendet, um Flow-Abbruchaufträge in Batches auszuführen. Verwenden Sie Batches, um Tausende von Flow-Kontexten abzubrechen.

    var delaySeconds = 1;
    
    for (var i; i < sys_flow_context.length; ++i) {
      if (i % 100 === 0) {
        delaySeconds = delaySeconds + 60;
      }
      var contextId = sys_flow_context[i];
      var reason = "Example reason";
      sn_fd.FlowAPI.scheduleCancel(contextId, reason, delaySeconds);
    }

    FlowAPI – setEncryptedOutput(Zeichenfolge „password“)

    Erstellt password2-Werte innerhalb eines Skriptschritts.

    Ermitteln Sie einen verschlüsselten password2-Wert, der von einem GlideRecord zurückgegeben wird. Dadurch kann das System den Wert als maskiertes Passwort anstelle einer verschlüsselten Zeichenfolge anzeigen.

    Tabelle : 31. Parameter
    Name Typ Beschreibung
    Passwort Zeichenfolge Verschlüsselter password2-Wert.
    Tabelle : 32. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Verschlüsselter password2-Wert, der von der Engine als Passwortwert erkannt wird.

    In diesem Beispiel wird der Wert eines password2-Felds aus einem Benutzerdatensatz zurückgegeben und in einer Variablen gespeichert. Diese Variable wird an die Methode „setEncryptedOutput“ übergeben, die mit „sn_fd.GlideActionUtil.setEncryptedOutput“ angerufen wird. Die Instanz erkennt den zurückgegebenen Wert als Passwort.

    (function execute(inputs, outputs) {
      // ...code...
      var now_GR = new GlideRecord('sys_user');
      now_GR.addQuery('first_name' , 'Abel');
      now_GR.query();
      now_GR.next();
      var pwVal = now_GR.getValue('pw2');
      outputs['usedSetEncrypted'] = sn_fd.GlideActionUtil.setEncryptedOutput(pwVal);
      outputs['justSetDirectly'] = pwVal;
    })(inputs, outputs);

    FlowAPI – startAction(String name, Map inputs)

    Führt eine Aktion asynchron von einem serverseitigen Skript aus.

    Führen Sie eine Aktion aus einer Business Rule, einer Skripteinbindung oder einem anderen serverseitigen Skript aus. Aktionen, die mit dieser Methode ausgeführt werden, werden asynchron ausgeführt, sodass Skripts mit dieser Methode keinen Zugriff auf Ausgaben haben, die von der Aktion erstellt werden. Verwenden Sie executeAction, um eine Aktion synchron auszuführen und auf die erzeugten Ausgaben zuzugreifen.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Hinweis:
    Diese Methode führt die Aktion als Benutzer aus, der die Sitzung initiiert.
    Tabelle : 33. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Bereich und der Name der auszuführenden Aktion, z. B. global.action_name.
    inputs Karte Name-Wert-Paare, die Aktionseingaben definieren. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung.
    Tabelle : 34. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Sys-ID des Kontextdatensatzes für die Aktion. Greifen Sie auf den Kontextdatensatz zu, indem Sie in Flow Designerzur Registerkarte Flow-Ausführungen navigieren, eine Flow-Ausführung auswählen und auf Kontextdatensatz öffnenklicken.

    Dieses Beispiel verwendet „sn_fd.FlowAPI.startAction“, um eine Aktion mit dem Namen „add_comment“ in dem Bereich „sn_itsm_spoke“ auszuführen. Das inputs-Objekt enthält einen Zieldatensatz und einen Kommentar, der diesem Datensatz hinzugefügt werden soll. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    (function() {
      try {
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task 
        inputs['ah_comment'] ='Test Comment' ; // String 
    
        var contextId = sn_fd.FlowAPI.startAction('sn_itsm_spoke.add_comment', inputs);	
    			
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    })();

    FlowAPI – startActionQuick(String name, Map inputs)

    Führt eine Aktion asynchron von einem serverseitigen Skript aus, ohne Ausführungsdetails oder andere zugehörige Datensätze zu erstellen. Verbessern Sie die Leistung, indem Sie den Overhead für die Aufzeichnung eliminieren. Verwenden Sie diese API, um die Geschwindigkeit der Verarbeitung großer Mengen, z. B. mehrerer Ausführungen pro Sekunde, in einer Produktionsumgebung zu erhöhen.

    Berichterstellung und Datensätze generiert
    Diese Methode erstellt unabhängig von den Flow Designer -Einstellungen keine Ausführungsdetails und Kontextdatensätze.
    Warten auf Support
    Diese Methode unterstützt das Anhalten der Aktion zum Warten auf Bedingungen nicht. Schritte, die für Wartebedingungen wie „Um Genehmigung bitten“ oder „Warten auf Bedingung“ angehalten werden, werden nicht unterstützt.
    MID-Server-Unterstützung
    Diese Methode unterstützt nicht das Anhalten einer Aktion, die von einem MID Server ausgeführt werden soll.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Tabelle : 35. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Umfang und interner Name der auszuführenden Aktion. Beispiel: global.action_name. Suchen Sie das Feld Interner Name in der Liste der Flow Designer -Aktionen.
    Eingaben Karte Name-Wert-Paare, die Aktionseingaben definieren. Sie finden die verfügbaren Aktionseingaben und erforderlichen Datentypen unter Eingaben in der Aktionsgliederung. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung. Beispiel: {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Tabelle : 36. Ergebnisse
    Typ Beschreibung
    void
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        sn_fd.FlowAPI.startActionQuick('global.update_record_test', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
        }
    	
    })();

    FlowAPI – startFlow(String name, Map inputs)

    Führt einen Flow von einem serverseitigen Skript aus.

    Führen Sie einen Flow aus einer Business Rule, einer Skripteinbindung oder einem anderen serverseitigen Skript aus. Mit dieser Methode ausgeführte Flows werden asynchron ausgeführt.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Hinweis:
    Diese Methode führt den Flow als Benutzer aus, der in den Flow-Eigenschaften angegeben ist.
    Tabelle : 37. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Bereich und der Name des auszuführenden Flow, z. B. global.flow_name.
    inputs Karte Name-Wert-Paare, die Auslösereingaben definieren. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung.
    Tabelle : 38. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Sys-ID des Kontextdatensatzes für den Flow. Greifen Sie auf den Kontextdatensatz zu, indem Sie in Flow Designerzur Registerkarte Flow-Ausführungen navigieren, eine Flow-Ausführung auswählen und auf Kontextdatensatz öffnenklicken.

    Dieses Beispiel verwendet „sn_fd.FlowAPI.startFlow“, um einen globalen Flow mit dem Namen „test_flow“ auszuführen. Der Code erstellt eine Variable „inputs“, die Eingaben enthält, die für den Flow erforderlich sind. In diesem Fall den aktuellen Datensatz und die Tabelle für den Datensatz. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    (function() {
     
      var now_GR = new GlideRecord('incident'); 
      now_GR.addQuery('number', 'INC0009009'); 
      now_GR.query(); 
      now_GR.next();
    
      try {
        var inputs = {};
        inputs['current'] = now_GR; // GlideRecord of table: Incident
        inputs['table_name'] = 'incident';
    
        var contextId = sn_fd.FlowAPI.startFlow('global.test_flow', inputs);	
    	
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);  
      }
    })();

    FlowAPI – startFlowQuick(String name, Map inputs)

    Führt einen Flow asynchron von einem serverseitigen Skript aus, ohne Ausführungsdetails oder andere zugehörige Datensätze zu erstellen. Verbessern Sie die Leistung, indem Sie den Overhead für die Aufzeichnung eliminieren. Verwenden Sie diese API, um die Geschwindigkeit der Verarbeitung großer Mengen, z. B. mehrerer Ausführungen pro Sekunde, in einer Produktionsumgebung zu erhöhen.

    Berichterstellung und Datensätze generiert
    Diese Methode erstellt unabhängig von den Flow Designer -Einstellungen keine Ausführungsdetails und Kontextdatensätze.
    Als Systembenutzer ausführen
    Diese Methode führt den Flow als Systembenutzer aus. Es wird nicht unterstützt, den Flow so festzulegen, dass er als Benutzer ausgeführt wird, der die Sitzung initiiert, oder die Identität eines Benutzers annimmt.
    Warten auf Support
    Diese Methode unterstützt nicht das Anhalten des Flows, um auf Bedingungen zu warten. Aktionen oder Flow-Logik, die für Wartebedingungen wie „Um Genehmigung bitten“, „Warten auf Bedingung“ oder „Warten auf eine Dauer“ angehalten werden, werden nicht unterstützt.
    MID-Server-Unterstützung
    Diese Methode unterstützt nicht das Anhalten eines Flows, der von einem MID Server ausgeführt werden soll.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Tabelle : 39. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Umfang und interner Name des auszuführenden Flow. Beispiel: global.flow_name. Suchen Sie das Feld Interner Name in der Liste der Flow Designer -Flows.
    Eingaben Karte Name-Wert-Paare, die Auslösereingaben definieren. Sie finden die verfügbaren Auslösereingaben und erforderlichen Datentypen im Abschnitt „Auslöser“ des Flow. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung. Beispiel: {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Tabelle : 40. Ergebnisse
    Typ Beschreibung
    void
    (function() {
    	
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('ed92e8d173d023002728660c4cf6a7bc');
    
        var inputs = {};
        inputs['current'] = grIncident;
        inputs['table_name'] = 'incident';
    		
        sn_fd.FlowAPI.startFlowQuick('global.test_quick_flow', inputs);
    		
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    	}
    	
    })();

    FlowAPI – startSubflow(String name, Map input)

    Führt einen Subflow von einem serverseitigen Skript aus.

    Führen Sie einen Subflow aus einer Business Rule, einer Skripteinbindung oder einem anderen serverseitigen Skript aus. Subflows, die mit dieser Methode ausgeführt werden, werden asynchron ausgeführt. Skripts, die diese Methode enthalten, haben keinen Zugriff auf vom Flow erstellte Ausgaben. Verwenden Sie executeSubflow, um einen Subflow synchron auszuführen und auf die erzeugten Ausgaben zuzugreifen.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Hinweis:
    Diese Methode führt den Flow als Benutzer aus, der in den Flow-Eigenschaften angegeben ist.
    Tabelle : 41. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Der Bereich und der Name des auszuführenden Subflow, z. B. global.subflow_name.
    inputs Zuordnung Name-Wert-Paare, die Subflow-Eingaben definieren. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung.
    Tabelle : 42. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Sys-ID des Kontextdatensatzes für den Subflow. Greifen Sie auf den Kontextdatensatz zu, indem Sie in Flow Designerzur Registerkarte Flow-Ausführungen navigieren, eine Flow-Ausführung auswählen und auf Kontextdatensatz öffnenklicken.

    In diesem Beispiel wird sn_fd.FlowAPI.startSubflow verwendet, um einen globalen Flow namens test_subflow auszuführen. Der Code ist in einer try/catch-Anweisung eingeschlossen, um alle Fehler zu erfassen, die bei der Ausführung des Flow auftreten können.

    (function() {
      try {
        var inputs = {};
        inputs['ah_task'] = myTaskRecord; // GlideRecord of table: task 
        inputs['ah_comment'] ='Test Comment' ; // String 
    
        var contextId = sn_fd.FlowAPI.startSubflow('global.test_subflow', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
      }
    	
    })();

    FlowAPI – startSubflowQuick(String name, Map inputs)

    Führt einen Subflow asynchron von einem serverseitigen Skript aus, ohne Ausführungsdetails oder andere zugehörige Datensätze zu erstellen. Verbessern Sie die Leistung, indem Sie den Overhead für die Aufzeichnung eliminieren. Verwenden Sie diese API, um die Geschwindigkeit der Verarbeitung großer Mengen, z. B. mehrerer Ausführungen pro Sekunde, in einer Produktionsumgebung zu erhöhen.

    Berichterstellung und Datensätze generiert
    Diese Methode erstellt unabhängig von den Flow Designer -Einstellungen keine Ausführungsdetails und Kontextdatensätze.
    Als Systembenutzer ausführen
    Diese Methode führt den Flow als Systembenutzer aus. Es wird nicht unterstützt, den Flow so festzulegen, dass er als Benutzer ausgeführt wird, der die Sitzung initiiert, oder die Identität eines Benutzers annimmt.
    Warten auf Support
    Diese Methode unterstützt nicht das Anhalten des Flows, um auf Bedingungen zu warten. Aktionen oder Flow-Logik, die für Wartebedingungen wie „Um Genehmigung bitten“, „Warten auf Bedingung“ oder „Warten auf eine Dauer“ angehalten werden, werden nicht unterstützt.
    MID-Server-Unterstützung
    Diese Methode unterstützt nicht das Anhalten eines Flows, der von einem MID Server ausgeführt werden soll.
    Hinweis:
    Diese API wird durch ScriptableFlowRunner – Scopedersetzt, wodurch die vorhandenen Methoden zum Erstellen von Objekten und Ausführen von Flow Designer -Flows und -Aktionen veraltet sind. Verwenden Sie die getRunner()- Methode in der FlowAPI -Klasse, um ein ScriptableFlowRunner-Objekt zurückzugeben, und verwenden Sie die zugehörigen Methoden. Verwenden Sie die ScriptableFlowRunner- Methoden, wenn Sie die Domänentrennung unterstützen müssen.
    Tabelle : 43. Parameter
    Name Typ Beschreibung
    Name Zeichenfolge Umfang und interner Name des auszuführenden Subflows. Beispiel: global.subflow_name. Suchen Sie das Feld Interner Name in der Liste der Subflows Flow Designer.
    Eingaben Zuordnung Name-Wert-Paare, die Subflow-Eingaben definieren. Sie finden die verfügbaren Subflow-Eingaben und erforderlichen Datentypen unter Eingaben im Subflow. Verwenden Sie den Eingabenamen, nicht die Eingabebezeichnung. Beispiel: {'table':'incident','sys_id':'a39d8e3cf0212300964feeefe80ff0ed'}.
    Tabelle : 44. Ergebnisse
    Typ Beschreibung
    void
    (function() {
    
      try {
        var grIncident = new GlideRecord('incident');
        grIncident.get('57af7aec73d423002728660c4cf6a71c');
    
        var inputs = {};
        inputs['variable'] = grIncident;
    
        sn_fd.FlowAPI.startSubflowQuick('global.test_quick_run_subflow', inputs);
    
      } catch (ex) {
        var message = ex.getMessage();  
        gs.error(message);
        }
    	
    })();