听预定的工作

时间:2012-10-26 08:03:34

标签: eclipse eclipse-rcp

我想在Eclipse中运行一个特定作业(我没有设计或编写)的监听器。 我知道我可以使用Job Manager访问Job.getJobManager。在IJobManager里面有方法find,但它需要一个家庭对象。

Eclipse FAQ也假设你知道家庭对象。如何找到给定作业管理器中使用的当前系列对象列表?

或者我是唯一选择注册JobChangeListener并过滤掉我感兴趣的工作的选项?

1 个答案:

答案 0 :(得分: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);
    }
});