Scripts de execução da etapa
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));
stepResult.setSuccess()” e stepResult.setFailed() por retornar verdadeiro e retornar falso.