Schrittausführungsskripte
In einem Schritt-Konfigurationsdatensatz bestimmt das Feld für das Schrittausführungsskript, was ein Schritt mit dieser Konfiguration bei seiner Ausführung bewirkt.
Schritteingaben
Die Eingabevariablen für einen Schritt werden von der zugehörigen Liste der Eingaben im Schritt-Konfigurationsdatensatz bestimmt. Der Parameter inputs für executeScript() gibt dem Skript Zugriff auf diese Variablen. Wenn zum Beispiel die zugehörige Eingabenliste zwei Datensätze, var1 und var2, enthält, kann das Skript var1 mit dem Ausdruck inputs.var1 und var2 mit inputs.var2 referenzieren.
Schrittausgaben
Die Ausgabevariablen für einen Schritt werden von der zugehörigen Ausgabenliste im Schritt-Konfigurationsdatensatz bestimmt. Der Parameter outputs für executeScript() gibt dem Skript Zugriff auf diese Variablen. Wenn zum Beispiel die zugehörige Ausgabenliste zwei Datensätze, out1 und out2, enthält, kann das Skript out1 mit dem Ausdruck outputs.out1 und out2 mit outputs.out2 referenzieren.
Schrittergebnis
Der Parameter stepResult bietet Zugriff auf eine API, die steuert, ob der Schritt erfolgreich ist oder nicht. Er bestimmt auch die Meldung, die der Schritt in das Protokoll schreibt.
Die Methode stepResult.setSuccess() bewirkt, dass der Schritt erfolgreich ist. Die Methode stepResult.setFailed() bewirkt, dass der Schritt fehlschlägt.
Die Methode stepResult.setOutputMessage() legt die Meldung fest, die in das Protokoll geschrieben wird, wenn der Schritt erfolgreich ist oder fehlschlägt. Es ist ein Parameter erforderlich: die Zeichenfolge, die in das Protokoll geschrieben werden soll. Wenn das Skript stepResult.setOutputMessage() mehr als einmal aufruft, überschreibt der neueste Wertsatz jeden vorherigen Wert.
Schrittausführungsskript „Datensatzabfrage“
(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));
Benutzerdefinierte geskriptete Schrittkonfigurationen
((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()” und stepResult.setFailed() durch return true und return falseersetzt werden.