Flux - Inclus dans le champ d’application (obsolète)

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 3 minutes de lecture
  • L’API Flow fournit des méthodes pour exécuter des flux activés Studio de workflow .

    Cette API est obsolète et remplacée par les ScriptableFlowRunner : dans le champ d’application API and ScriptableFlowRunnerResult : inclus dans l’étendue.

    L’API de flux ne peut être utilisée que dans les scripts serveur.

    Utiliser l’espace de noms sn_fd pour accéder à l’API de flux .

    Avant d’interagir avec un flux à l’aide de l’API de flux , vous devez d’abord créer et activer le flux dans l’interface Studio de workflow . Étant donné que l’API Flow n’interagit qu’avec des flux prédéfinis, il n’existe aucun constructeur pour la classe.

    Remarque :
    Pour optimiser les performances de l’instance, évitez d’appeler ces méthodes à partir d’un script de règle métier asynchrone. Créez plutôt un enregistrement de tâche planifiée dans l’interface Studio de workflow utilisateur.

    Flux : startAsync(String scopeName.flowName, mapper flowInputs)

    Ignore le déclencheur et exécute un flux activé de manière asynchrone.

    Les appels asynchrones ne sont pas bloquants, ce qui permet au client d’exécuter d’autres codes dans le script sans avoir à attendre la fin du flux.

    Tableau 1. Paramètres
    Nom Type Description
    scopeName.flowName Chaîne Le périmètre de l’application pour le flux et le nom interne du flux à exécuter. Si scopeName n’est pas inclus, le champ d’application de l’utilisateur actuellement connecté est utilisé. Récupérez le nom interne du flux à l’aide de la colonne Nom interne de la Studio de workflow page de destination.
    entrées de flux Carte Paires nom-valeur au format <chaîne, objet> qui définissent les entrées de flux basées sur les enregistrements.
    Pour appeler un flux avec un déclencheur basé sur les enregistrements, utilisez le format suivant :
    var flowInputs = {};
    flowInputs['current'] = glideRecord;
    flowInputs['table_name'] = glideRecord.getTableName();

    L’objet GlideRecord doit être nommé « actuel ».

    Pour appeler un flux avec un Catalogue de services déclencheur, utilisez le format suivant :
    var flowInputs = {};
    flowInputs['request_item'] = glideRecord;
    flowInputs['table_name'] = glideRecord.getTableName();

    L’objet GlideRecord doit être nommé « request_item ».

    Tableau 2. Renvoie
    Type Description
    Objet Objet PlanResponse contenant les propriétés suivantes :
    • contextId : sys_id de l’enregistrement des détails d’exécution du flux exécuté. Accédez aux détails de l’exécution en naviguant vers l’onglet Exécutions de flux et en Studio de workflow filtrant par sys_id.
    Une exception se produit lorsque le flux :
    • N’existe pas dans le périmètre de l’application spécifié, ou le nom du flux ou du périmètre a été mal orthographié.
    • N’est pas activé.
    • Dépasse la limite de récursivité définie par la com.glide.hub.flow_engine.indirect_recursion_limit propriété système. La valeur par défaut est trois.
    //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);
    	}
    
    })();