단계 실행 스크립트

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기4분
  • 단계 구성 기록에서 단계 실행 스크립트 필드는 이 구성을 사용하는 단계가 실행될 때 수행하는 작업을 결정합니다.

    단계 입력

    단계에 대한 입력 변수는 단계 구성 기록의 입력 관련 목록에 의해 결정됩니다. executeScript()inputs 대한 매개변수는 이러한 변수에 대한 스크립트 액세스를 제공합니다. 예를 들어, 입력 관련 목록에 var1var2라는 두 개의 기록이 포함된 경우 스크립트는 표현식 inputs.var1var1을 참조하고 inputs.var2var2를 참조할 수 있습니다.

    단계 출력

    단계의 출력 변수는 단계 구성 기록의 출력 관련 목록에 의해 결정됩니다. 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로 대체하여 서버 측 스크립트 실행에 사용할 수도 있습니다.