---
sourceDocument: Criar ou modificar aplicações do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/application-development

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Criar ou modificar aplicações do Xanadu

ft:clusterId :

    - cadev

bundleId :

    - cadev

workflow :

    - Creator


---

# Scripts de execução da etapa

# Scripts de execução da etapa {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 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, <var class="keyword varname">var1</var> e <var class="keyword varname">var2</var>, o script poderá fazer referência a <var class="keyword varname">var1</var> com a expressão `inputs.var1` e poderá fazer referência a <var class="keyword varname">var2</var> 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, <var class="keyword varname">out1</var> e <var class="keyword varname">out2</var>, o script poderá fazer referência a <var class="keyword varname">out1</var> com a expressão `outputs.out1` e poderá fazer referência a <var class="keyword varname">out2</var> 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 {#atf-config-script__example_rnc_ldn_qpb}


        ((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`.

