Scripts de execução da etapa

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 2 min. de leitura
  • Em um registro de configuração de etapa, o campo de script de execução de etapa determina o que uma etapa com essa configuração faz quando é executada.

    Entradas de etapa

    As variáveis de entrada para uma etapa são determinadas pela lista relacionada de entradas no registro de configuração da etapa. O parâmetro inputs para executeScript() concede ao script acesso a essas variáveis. Por exemplo, se a lista relacionada de entradas contiver dois registros, var1 e var2, o script poderá fazer referência a var1 com a expressão inputs.var1 e poderá fazer referência a var2 com inputs.var2.

    Saídas de etapa

    As variáveis de saída para uma etapa são determinadas pela lista relacionada de saídas no registro de configuração da etapa. O parâmetro outputs para executeScript() concede ao script acesso a essas variáveis. Por exemplo, se a lista relacionada de saídas contiver dois registros, out1 e out2, o script poderá fazer referência a out1 com a expressão outputs.out1 e poderá fazer referência a out2 com outputs.out2.

    Resultado da etapa

    O parâmetro stepResult fornece acesso a uma API que controla se a etapa é aprovada ou reprovada. Ele também determina a mensagem que a etapa grava no log.

    O método stepResult.setSuccess() faz com que a etapa seja bem-sucedida. O método stepResult.setFailed() causa falha na etapa.

    O método stepResult.setOutputMessage() define a mensagem a ser gravada no log quando a etapa é bem-sucedida ou falha. É necessário um parâmetro: a cadeia de caracteres a ser gravada no log. Se o script chamar stepResult.setOutputMessage() mais de uma vez, o conjunto de valores mais recente substituirá qualquer valor anterior.

    Script de execução da etapa de consulta de registro

    
        (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));
        
       

    Configurações de etapa com script personalizado

    
        ((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));
        
       
    Nota:
    O exemplo acima também pode ser usado para executar o script do lado do servidor, substituindo stepResult.setSuccess()” e stepResult.setFailed() por retornar verdadeiro e retornar falso.