ステップ実行スクリプト

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:4分
  • ステップ設定レコードでは、ステップ実行スクリプトフィールドによって、この設定のステップが行う実行内容が決定します。

    ステップ入力

    ステップへの入力変数は、ステップ設定レコード内の入力関連リストによって決定されます。executeScript()inputs パラメーターにより、スクリプトはこれらの変数にアクセスできます。たとえば、入力関連リストに 2 つのレコード var1var2 が含まれる場合、スクリプトは inputs.var1 という表現で var1 を、inputs.var2var2 を参照できます。

    ステップ出力

    ステップへの出力変数は、ステップ設定レコード内の出力関連リストによって決定されます。executeScript()outputs パラメーターにより、スクリプトはこれらの変数にアクセスできます。たとえば、出力関連リストに 2 つのレコード out1out2 が含まれる場合、スクリプトは outputs.out1 という表現で out1 を、outputs.out2out2 を参照できます。

    ステップ結果

    stepResult パラメーターは、ステップの成功/失敗を制御する API へのアクセスを提供します。また、ステップがログに書き込むメッセージも決定されます。

    メソッド stepResult.setSuccess() はステップを成功させます。メソッド stepResult.setFailed() はステップを失敗させます。

    メソッド stepResult.setOutputMessage() は、ステップが成功または失敗したときにログに書き込まれるメッセージを設定します。1 つのパラメーター、ログに書き込む文字列が必要です。スクリプトが stepResult.setOutputMessage() を複数回呼び出すと、最新の値セットで以前の値が上書きされます。

    レコードのクエリーステップ実行スクリプト

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

    カスタムスクリプト化されたステップの構成

    
        ((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()” と stepResult.setFailed()return truereturn falseに置き換えて使用することもできます。