2012-10-26 45 views
1

我想將偵聽程序添加到在Eclipse中運行的特定作業(我沒有設計或編寫)。 我知道我可以使用Job.getJobManager訪問Job Manager。在IJobManager內部有方法find,但它需要一個家庭對象。收聽預定作業

Eclipse FAQ也假設你知道家庭對象。我如何才能找到給定工作經理中使用的家庭對象的當前列表?

或者是我唯一的選擇註冊JobChangeListener並篩選出我感興趣的工作?

回答

1

如果您可以對作業添加較小的更改,請使用OSGI事件在它們之間進行通信。 Asume,你有一個這樣的工作:

public class SomeJob extends Job { 
    public static final JOB_EVENT_NAME = "some distinct name"; 
    private IEventBroker eventBroker; 
    public SomeJob(IEventBroker eventBroker) { 
     super("SomeJob"); 
     this.eventBroker = eventBroker; 
    } 
    protected IStatus run(IProgressMonitor monitor) { 
     ... 
     eventBroker.post(JOB_EVENT_NAME, some data); 
     ... 
    } 
} 

與之相連的事件監聽RCP應用程序啓動它(eventBroker是IEventBroker並且可以@ Inject'ed):

new CheckAccessLevelJob(eventBroker).schedule(); 
eventBroker.subscribe(SomeJob.JOB_EVENT_NAME, new EventHandler() { 
    public void handleEvent(Event event) { 
     event.getProperty(IEventBroker.DATA); 
    } 
}); 
+0

可惜我不能碰我需要聽的工作。我沒有寫他們,我沒有來源 – stwissel

+1

順便說一句,大多數工作不使用家庭。因此,您可以使用null系列對象找到它們:Platform.getJobManager()。find(null)。 – Oroboros102