. 다시 한 번 전제로 올바른 API를 살펴 보겠습니다. UFkJob에 필드를 추가
public class UfkJob implements IScheduledJob {
String jobName = null;
public void execute(ISchedulingService service) {
if (... && jobName != null) {
/* here i want to remove the current running job */
ISchedulingService service = (ISchedulingService) getScope().getContext().getBean(ISchedulingService.BEAN_NAME);
service.removeScheduledJob(jobName);
}
public void setJobName(String name){
this.jobName = name;
}
}
및 다음 작업 예약 :
ISchedulingService service = (ISchedulingService) getScope().getContext().getBean(ISchedulingService.BEAN_NAME);
UfkJob job = new UfkJob();
job.setJobName(service.addScheduledJobAfterDelay(5000, job, 200));
또는 당신은 항상 작업 일정 자체 수 :
public class UfkJob implements IScheduledJob {
String jobName;
ISchedulingService service;
public UfkJob(ISchedulingService service){
this.service = service;
this.jobName = service.addScheduledJobAfterDelay(5000, this, 200);
}
public void execute(ISchedulingService service) {
if (...) {
service.removeScheduledJob(jobName);
}
}
}
//Your calling code
...
new UfkJob((ISchedulingService) getScope().getContext().getBean(ISchedulingService.BEAN_NAME));
을 ----- 내 원래 대답은 아래에, 나는 잘못된 질문에 대한 믿음 ----
내가 API 문서를보고 있다면 잘 모르겠다. 바로 도서관, 그러나 당신의 메서드 호출 :
service.addScheduledJobAfterDelay(5000,new UfkJob(),200);
는 다음과 같이 정의된다 : ( 지연 INT, 간격, IScheduledJob 작업을 INT)
addScheduledJobAfterDelay 사후이 시작됩니다주기적인 실행을위한 작업을 예약 지정된 지연.
"정기 실행"키입니다.
addScheduledOnceJob가 (긴 timeDelta, IScheduledJob 작업) 미래에 하나의 실행을 위해 작업 일정 : 당신이 찾고있는 것은 같은데.
그래서 전화는 다음과 같습니다 오초 메서드 호출 후 UfkJob에게 한 시간을 실행할 것
service.addScheduledOnceJob(5000, new UfkJob());
합니다.