Scripts d'exécution d'étapes

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 2 minutes de lecture
  • Dans un enregistrement de configuration d’étape, le champ de script d’exécution d’étape détermine ce qu’effectue une étape avec cette configuration lorsqu’elle s’exécute.

    Entrées des étapes

    Les variables d’entrée d’une étape sont déterminées par la liste connexe des entrées dans l’enregistrement de configuration de l’étape. Le inputs paramètre executeScript() permet au script d’accéder à ces variables. Par exemple, si la liste connexe des entrées contient deux enregistrements, var1 et var2, le script peut référencer var1 avec l’expression inputs.var1 et peut référencer var2 avec inputs.var2.

    Sorties des étapes

    Les variables de sortie d’une étape sont déterminées par la liste connexe Sorties dans l’enregistrement de configuration de l’étape. Le outputs paramètre executeScript() permet au script d’accéder à ces variables. Par exemple, si la liste connexe Sorties contient deux enregistrements, out1 et out2, le script peut référencer out1 avec l’expression outputs.out1 et out2 avec outputs.out2.

    Résultat de l'étape

    Le stepResult paramètre permet d’accéder à une API qui contrôle la réussite ou l’échec de l’étape. Elle détermine également le message que l’étape écrit dans le journal.

    La méthode stepResult.setSuccess() entraîne la réussite de l’étape. La méthode stepResult.setFailed() entraîne l’échec de l’étape.

    La méthode stepResult.setOutputMessage() définit le message à écrire dans le journal lorsque l’étape réussit ou échoue. Il faut un paramètre : la chaîne à écrire dans le journal. Si le script appelle stepResult.setOutputMessage() plusieurs fois, le jeu de valeurs le plus récent remplace toute valeur précédente.

    Script d’exécution de l’étape de requête d’enregistrement

    
        (function executeStep(inputs, outputs, stepResult) {
             if (gs.nil(inputs.table)) {
                stepResult.setOutputMessage(gs.getMessage("The '{0}' input variable was not specified",
                   'table'));
             stepResult.setFailed();
              return;
        }
        var query = new GlideRecord(inputs.table);
        query.addEncodedQuery(inputs.field_values);
        query.query();
        if (!query.next()) {
             stepResult.setOutputMessage(gs.getMessage("No records matching query:\n{0}",
                 inputs.field_values));
              stepResult.setFailed();
        } else {
             stepResult.setSuccess();
             outputs.table = inputs.table;
             outputs.first_record = query.getUniqueValue();
             stepResult.setOutputMessage(gs.getMessage("Found {0} {1} records matching query:\n{2}",
                                                      [query.getRowCount(),
                                                       inputs.table,
                                                       inputs.field_values]));
        }
        }(inputs, outputs, stepResult));
        
       

    Configurations d’étapes scriptées personnalisées

    
        ((function executeStep(inputs, outputs, stepResult, timeout) {
    	// Waits up to the timeout for some asynchronous logic to finish
    	// This script checks for completion once a second for up to 60 seconds
    	var counter = 1;
    	// Try for up to 60 seconds
    	while (counter <= timeout) {
    		// If the asynchronous logic is finished, return "true" to pass the step
    		// isMyAsyncLogicFinished() can be replaced with any asynchronous event that needs to be tested
    		if (isMyAsyncLogicFinished()) {
    			stepResult.setOutputMessage("Success!");
    			stepResult.setSuccess();
    			return;
    		}
    		// Wait one second, and log the total number of seconds waited
    		gs.info("Waited " + counter + " seconds for asynchronous logic to finish");
    		sn_atf.AutomatedTestingFramework.waitOneSecond();
    		counter++;
    	}
    	// If this point is reached, the retry loop ran out of tries; return false to fail the step
    	stepResult.setOutputMessage("FAILURE: Timed out after waiting for " + timeout + " seconds");
    	stepResult.setFailed();
    }(inputs, outputs, stepResult, timeout));
        
       
    Remarque :
    L’exemple ci-dessus peut également être utilisé pour Exécuter un script côté serveur en remplaçant stepResult.setSuccess() et stepResult.setFailed() par return true et return false.