2011-10-13 2 views
3

안녕하세요, 저는 cron 표현식을 기반으로 클래스의 메서드를 실행하는 응용 프로그램을 만들고 있습니다. 그 봄 석영 내 봄 - 파일에 모든 물건을 구성해야 할 일을 잘하고 일을 cron 표현을 기반으로 실행하고있다,하지만 지금은 자바 클래스 기반의 특정 작업의 다음 실행을 일시 중단하고 싶습니다 UI에서 사용자를 선택할 때 그런 다음이 방법이 있습니까 ??석영 스케쥴러에서 작업을 일시 중지하는 방법은 무엇입니까?

나는 모든 실행중인 작업의 세부 사항을 컨텍스트로 얻을 수 있습니까? 그렇다면 작업을 필터링하고 다음 실행을 위해 해당 작업을 일시 중단 할 수 있습니다.

+0

건너 뛰고 싶은 비즈니스 조건이 무엇입니까? 있어요? 그렇다면 조건을 작업 논리로 모델링하십시오 (if (condition) then else skip ...) – blob

+0

답장을위한 blob에 감사드립니다. 나는 cronExpression을 기반으로 매주 월요일 또는 매분마다 cron 식을 통해 일정을 계획하고 있습니다. 다음 번에만 실행을 건너 뛰고 싶다면 어떻게 할 수 있습니까? –

+0

스케줄러에서 작업을 제거하고 사용자가 다시 활성화 할 때 readd를 실행하십시오. – ZeissS

답변

4

나는 코드를 다음의 사용에 의해 일을 가지고

stdScheduler는 scheduleFactoryBean입니다

String groupnames[] = stdScheduler.getJobGroupNames(); 
for (String groupName : groupnames) { 
    String[] jobNames = stdScheduler.getJobNames(groupName); 
    for (String jobName : jobNames) { 
      if (jobName.equals("jobName")) { 
        stdScheduler.pauseJob(jobName, groupName); 
      } 
    } 
}   
7

SchedulerFactoryBean을 주사하십시오. 석영 Scheduler을 얻으려면 getScheduler 메서드를 사용하고 rescheduleJob 또는 석영 API의 다른 메서드를 사용하여 작업을 수행하십시오.

3

우리는 코드에서 언급 한 루프의 수를 줄이기 위해 stdScheduler.pauseJob (JobKey jobKey) 방법을 사용할 수 있습니다 위

+0

우리는 그냥 jobName을 사용할 수 있으므로 루프를 반복해야한다고 생각합니다. 다른 방법이 있습니까? –

관련 문제