Flow – Scoped (veraltet)

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 3 Minuten Lesedauer
  • Die Flow -API stellt Methoden zum Ausführen aktivierter Flow Designer -Flows bereit.

    Diese API ist veraltet und wurde durch die APIs ScriptableFlowRunner – Scoped und ScriptableFlowRunnerResult – Scopedersetzt.

    Die Flow -API kann nur in Serverskripts verwendet werden.

    Verwenden Sie den Namespace sn_fd, um auf die Flow -API zuzugreifen.

    Bevor Sie mit einem Flow über die Flow -API interagieren, müssen Sie den Flow zuerst in der Flow Designer -Schnittstelle erstellen und aktivieren. Da die Flow -API nur mit vorgefertigten Flows interagiert, gibt es keinen Konstruktor für die Klasse.

    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.

    Scoped Flow – startAsync(String scopeName.flowName, Map flowInputs)

    Ignoriert den Auslöser und führt einen aktivierten Flow asynchron aus.

    Asynchrone Aufrufe sind nicht-blockierend, sodass der Client anderen Code im Skript ausführen kann, ohne auf den Abschluss des Flow warten zu müssen.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    scopeName.flowName Zeichenfolge Der Anwendungsbereich für den Flow und der interne Name des auszuführenden Flows. Wenn scopeName nicht enthalten ist, wird der Bereich des aktuell angemeldeten Benutzers verwendet. Rufen Sie den internen Namen des Flows mit der Spalte Interner Name auf der Flow Designer-Zielseite ab.
    flowInputs Zuordnung Name-Wert-Paare im Format <String, Objekt>, die datensatzbasierte Flow-Eingaben definieren.
    Um einen Flow mit einem datensatzbasierten Auslöser aufzurufen, verwenden Sie das Format:
    var flowInputs = {};
    flowInputs['current'] = glideRecord;
    flowInputs['table_name'] = glideRecord.getTableName();

    Das GlideRecord-Objekt muss als „current“ bezeichnet werden.

    Um einen Flow mit einem Servicekatalog-Auslöser aufzurufen, verwenden Sie das Format:
    var flowInputs = {};
    flowInputs['request_item'] = glideRecord;
    flowInputs['table_name'] = glideRecord.getTableName();

    Das GlideRecord-Objekt muss als „request_item“ bezeichnet werden.

    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    Objekt PlanResponse-Objekt, das die folgenden Eigenschaften enthält:
    • contextId: sys_id des Ausführungsdetail-Datensatzes für den ausgeführten Flow. Rufen Sie die Ausführungsdetails auf, indem Sie zur Registerkarte „Flow-Ausführungen“ in Flow Designer navigieren und nach sys_id filtern.
    Eine Ausnahme tritt auf, wenn der Flow:
    • Nicht im angegebenen Anwendungsbereich vorhanden ist oder der Name des Flows oder Bereichs falsch geschrieben wurde.
    • Nicht aktiviert ist.
    • Überschreitet das von der Systemeigenschaft com.glide.hub.flow_engine.indirect_recursion_limit festgelegte Rekursionslimit. Der Standardwert ist drei.
    //Example 1: Run a flow with a record-based trigger
    (function startFlowAsync() {
    
    	try {
    		// You MUST fetch the GlideRecord that will be passed to the flow
    		var glideRecordInput = new GlideRecord('sys_user');
    		glideRecordInput.get('62826bf03710200044e0bfc8bcbe5df1');
    
    		var flowInputs = {};
    		flowInputs['current'] = glideRecordInput;
    		flowInputs['table_name'] = glideRecordInput.getTableName();
    
    		var result = sn_fd.Flow.startAsync('global.recordtriggeredflow', flowInputs);
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();
    
    //Example 2: Run a flow with a schedule-based trigger
    (function startFlowAsync() {
    
    	try {
    		var result = sn_fd.Flow.startAsync('global.scheduletriggeredflow');
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();
    
    //Example 3: Run a flow with a Service Catalog trigger
    (function startFlowAsync() {
    
    	try {
    		// You MUST fetch the GlideRecord that will be passed to the flow
    		var glideRecordInput = new GlideRecord('sc_req_item');
    		glideRecordInput.get(aeed229047801200e0ef563dbb9a71c2);
    
    		var flowInputs = {};
    		flowInputs['request_item'] = glideRecordInput;
    		flowInputs['table_name'] = glideRecordInput.getTableName();
    
    		var result = sn_fd.Flow.startAsync('global.catalogtriggeredflow', flowInputs);
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();
    
    //Example 4: Run a flow with a MetricBase trigger
    (function startMetricBaseFlowAsync() {
    
    	try {
    
    		var oilLevelTriggerRecord = new GlideRecord('oil_levels');
    		oilLevelTriggerRecord.get('a4b3622bc72113007b237f48cb97635f');
    
    		var metricTriggerDefinition = new GlideRecord('sys_metric_trigger_definition');
    		metricTriggerDefinition.get('21f2eae7c72113007b237f48cb976352');
    
    		var event_time = oilLevelTriggerRecord.getValue('sys_created_on');
    		var level = 4;
    
    		var metricBaseFlowInputs = {};
    		//The record that triggered the metric event
    		metricBaseFlowInputs['current'] = oilLevelTriggerRecord;
    		//The MetricBase Trigger Definition record
    		metricBaseFlowInputs['metric'] = metricTriggerDefinition;
    		//The time that the 'record' reached a specific metric event level and triggered this flow
    		metricBaseFlowInputs['event_time'] = event_time;
    		//The target event level to reach in order for a metric flow to trigger
    		metricBaseFlowInputs['level'] = level;
    
    		var result = sn_fd.Flow.startAsync('global.metricbasedtriggeredflow', metricBaseFlowInputs);
    
    		//The Sys ID of a flow execution (contextId)
    		var contextId = result.contextId;
    
    	} catch (ex) {
    		var message = ex.getMessage();
    		gs.error(message);
    	}
    
    })();