단계 실행 스크립트

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 4분
  • 단계 구성 기록에서 단계 실행 스크립트 필드는 이 구성으로 단계가 실행될 때 수행하는 작업을 결정합니다.

    단계 입력

    단계에 대한 입력 변수는 단계 구성 기록의 입력 관련 목록에 의해 결정됩니다. executeScript() 매개변수는 inputs 스크립트에 이러한 변수에 대한 액세스 권한을 부여합니다. 예를 들어 입력 관련 목록에 var1var2라는 두 개의 기록이 포함되어 있는 경우 스크립트는 inputs.var1 표현식으로 var1을 참조할 수 있으며 inputs.var2를 사용하여 var2를 참조할 수 있습니다.

    단계 출력

    단계에 대한 출력 변수는 단계 구성 기록의 출력 관련 목록에 의해 결정됩니다. executeScript() 매개변수는 outputs 스크립트에 이러한 변수에 대한 액세스 권한을 부여합니다. 예를 들어 출력 관련 목록에 out1out2라는 두 개의 기록이 포함되어 있는 경우 스크립트는 outputs.out1 표현식으로 out1을 참조하고 outputs.out2를 사용하여 out2를 참조할 수 있습니다.

    단계 결과

    stepResult 이 매개변수는 단계의 통과 또는 실패 여부를 제어하는 API에 대한 액세스를 제공합니다. 또한 단계가 로그에 기록하는 메시지를 결정합니다.

    stepResult.setSuccess() 메서드는 단계가 성공하도록 합니다. stepResult.setFailed() 메서드는 단계를 실패시킵니다.

    stepResult.setOutputMessage() 메서드는 단계가 성공하거나 실패할 때 로그에 쓰도록 메시지를 설정합니다. 하나의 매개변수, 즉 로그에 쓸 문자열이 필요합니다. 스크립트가 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로 바꾸어 서버 측 스크립트 실행에도 사용할 수 있습니다.