1

Eclipse で実行されている特定のジョブ (設計も作成もしていません) にリスナーを追加したいと考えています。Job.getJobManagerを使用してJob Managerにアクセスできることはわかっています。IJobManager 内にはfindメソッドがありますが、ファミリ オブジェクトが必要です。

EclipseのFAQも、ファミリー オブジェクトを知っていることを前提としています。特定のジョブ マネージャで使用されているファミリ オブジェクトの現在のリストを見つけるにはどうすればよいですか?

または、 JobChangeListenerを登録して、興味のあるジョブを除外する唯一のオプションですか?

4

1 に答える 1

1

ジョブに小さな変更を加えることができる場合は、OSGI イベントを使用してジョブ間で通信します。あなたがそのような仕事をしていると仮定します:

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 することができます)。

new CheckAccessLevelJob(eventBroker).schedule();
eventBroker.subscribe(SomeJob.JOB_EVENT_NAME, new EventHandler() {
    public void handleEvent(Event event) {
        event.getProperty(IEventBroker.DATA);
    }
});
于 2012-10-30T09:25:53.787 に答える