Rich UI 작업 스케줄러

Rich UI 작업 스케줄러는 특정한 시간(밀리초) 이후 사용자 정의된 함수를 호출할 수 있는 타이머입니다. 여러 작업을 스케줄하고 런타임 조건에 대한 응답에서 이를 취소할 수 있습니다.

사용자 작업공간에서 다음 예를 시도할 수 있습니다.
import com.ibm.egl.rui.widgets.Button;
import egl.javascript.Job; 

handler MyHandler type RUIhandler { initialUI = [stopButton],
                                    onConstructionFunction = initialization }

   stopButton Button{text="Stop!", onclick ::= pleaseStop};	
   doThis Job{runFunction = myRunFunction};

   function initialization()
      doThis.repeat(1000);
   end

   function myRunFunction()
      sysLib.writeStdOut(currentTime());
   end

   function pleaseStop(e event in)
      doThis.cancel();
   end
end
이 기능은 다음 import 문을 입력하는 데 필요합니다.
   import egl.javascript.Job; 

위젯 유형에 사용할 수 있는 Ctrl-Shift-O 메커니즘으로 해당 명령을 추가할 수는 없습니다.

두 정의가 관계를 명확하게 할 수 있습니다.
  • 실행 함수는 작업이 스케줄될 때 호출되는 함수입니다. 이 예에서 실행 함수는 myRunFunction입니다.
  • 현재 함수는 타이머가 실행되는 중에 실행되는 함수입니다.
작업 스케줄러는 Job이라는 이름의 EGL 외부 유형을 기반으로 하는 변수입니다. 변수를 선언할 때 다음 특성을 설정할 수 있습니다.
이름
작업 스케줄러를 식별하기 위해 EGL 디버거에서 사용됩니다. 이 특성을 생략하면 name 값이 변수 이름이 됩니다.
runFunction
매개변수와 리턴 값이 없는 실행 함수를 식별합니다.
작업 스케줄러를 사용하여 다음 함수를 호출할 수 있습니다.
schedule (int milliseconds)
특정 시간(밀리초) 동안 타이머를 즉시 설정하고, 이를 통해 이후에 실행 함수가 호출됩니다. 타이머가 해제되거나 현재 함수가 종료되면(어느 쪽이 마지막에 발생했는지 상관 없음) 가장 빠른 시간에 호출이 발생합니다. milliseconds를 생략하면 현재 함수가 종료되는 즉시 가장 빠른 시간에 호출이 발생합니다.
repeat (int milliseconds)
특정 시간(밀리초)에 대해 타이머를 즉시 설정하고 이로 인해 실행 함수가 반복 호출됩니다.

실행 함수가 시작될 때마다 타이머가 재설정됩니다. 첫 번째를 포함하여 각 실행 함수 호출을 위한 규칙은 타이머가 해제되거나 현재 함수가 종료되면(어느 쪽이 마지막에 발생했는지 상관 없음) 가장 빠른 시간에 호출이 발생하는 것입니다.

cancel()
작업에 대한 이후 호출을 취소합니다.

실행 함수 호출은 다른 함수의 실행을 인터럽트하지 않습니다. 예를 들어 작업이 스케줄되는 시간과 실행 함수 호출이 가능한 시간 사이에서 사용자는 단추를 클릭하여 이벤트 핸들러를 스케줄할 수 있습니다. 이 경우 작업 함수 호출은 최소한 이벤트 핸들러가 소유한 종속 함수(있는 경우)를 호출하고 종료할 때까지 기다립니다.

이러한 방식으로 JOB 유형의 변수를 여러 개 작성하여 여러 작업을 스케줄하고 동일한 실행 함수를 호출할 수 있습니다. 어떤 경우에도 주어진 시간에 한 함수만 실행할 수 있으며 실행이 완료됩니다.

동일한 변수를 사용하여 작업을 다시 스케줄하는 경우 이전의 변수 사용은 취소됩니다.