2012-11-12 32 views
2

我有一種情況需要知道作業何時完成。石英調度程序,知道作業何時完成

基本上,一個單身經理跟蹤一堆工作和他們的時間表。假設強度B按照A,當A執行調度刪除B的工作,並重排它在時間上更接近於A.

我遇到的問題是,通知管理器時工作完成

public class Action extends ScheduledEvent implements Job { 

    public Action() { 
    } 

    protected Action(String name, MomentInTime momentInTime, FireEventFrequency repeatFrequency) throws SchedulerException { 
     super(momentInTime, repeatFrequency); 
    } 

    @Override 
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { 
     // Do some work 
     EventScheduleManager.getInstance().eventComplete(this); 

    } 
} 

我知道爲什麼發生是由於反思,並在調度時this重新初始化,現在經理已知。

有沒有辦法解決它?你如何通知經理實體它預定完成的工作?

回答

2

我結束了傳遞作業名回經理

EventScheduleManager.getInstance().eventComplete 
     (jobExecutionContext.getJobDetail().getName()); 

而且本身保持Map<String,ScheduledEvent>經理把它從那裏

0

據我所知,他們推薦的基於工作流程的作業(必須保證其中一個遵循另一個作業)是讓第一份作業爲其後繼者創建一個條目,以便在完成後立即執行。

+0

你可能提供一個例子嗎? – JAM

+3

現在不能這樣做。要上地鐵。 –

1

您可以創建一個包裝,是這樣的:

public class DoubleAction extends ScheduledEvent implements Job { 
    private final Job job1,job2; 

    public DoubleAction(Job job1, Job job2) { 
     this.job1=job1; 
     this.job2=job2; 
    } 

    @Override 
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { 
     job1.execute(jobExecutionContext); 
     job2.execute(jobExecutionContext); 
    } 
}