Flow – Bereichsbezogen (veraltet)

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 3 Minuten Lesedauer
  • Die Flow -API bietet Methoden zum Ausführen von aktivierten Workflow-Studio -Flows.

    Diese API ist veraltet und wird durch die APIs ScriptableFlowRunner : Bereichsbezogen und ScriptableFlowRunnerResult : Bereichsbezogenersetzt.

    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 Schnittstelle Workflow-Studio erstellen und aktivieren. Da die Flow API nur mit vorgefertigten Flows interagiert, gibt es keinen Konstruktor für die Klasse.

    Hinweis:
    Um die Leistung der Instanz 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 Anwenderoberfläche Workflow-Studio.

    Flow – startAsync(String scopeName.flowName, Zuordnung 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 Workflow-Studio-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 Workflow-Studio 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 durch die 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);
    	}
    
    })();