3

我的情况依赖于知道工作何时完成。

基本上,单身经理会跟踪一堆工作及其日程安排。假设 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重新初始化并且现在由经理知道。

有办法解决吗?您将如何通知经理实体其安排的工作已完成?

4

3 回答 3

2

我最终将工作名称传回给经理

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

经理自己坚持Map<String,ScheduledEvent>从那里拿走它

于 2012-11-13T22:13:12.893 回答
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);
    }
}
于 2012-11-12T23:02:34.867 回答
0

据我了解,他们对基于工作流的作业(您必须保证一个跟随另一个)的建议是让第一个作业为其继任者创建一个条目,以便在完成后立即执行。

于 2012-11-12T22:31:07.963 回答