Flux : inclus dans le champ d’application (déconseillé)

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 3 minutes de lecture
  • L’API de flux fournit des méthodes pour exécuter les flux activés Concepteur de flux .

    Cette API est déconseillée et remplacée par les ScriptableFlowRunner : inclus dans le périmètre API et ScriptableFlowRunnerResult : inclus dans le périmètre.

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

    Utilisez 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 Concepteur de flux . Étant donné que l’API de flux 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. Au lieu de cela, créez un enregistrement de tâche planifiée dans l’interface Concepteur de flux utilisateur.

    Flux inclus dans le périmètre : startAsync(String scopeName.flowName, Map 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 page de Concepteur de flux 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é « current ».

    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 de l’exécution pour le flux exécuté. Accédez aux détails de l’exécution en naviguant vers l’onglet Exécutions de flux et en Concepteur de flux 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 de 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);
    	}
    
    })();