我的情况依赖于知道工作何时完成。
基本上,单身经理会跟踪一堆工作及其日程安排。假设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
被重新初始化并且现在已经被管理者所知。
周围有办法吗?您如何通知经理实体其预定的工作已完成?
答案 0 :(得分:2)
我最终将工作名称传回给经理
EventScheduleManager.getInstance().eventComplete
(jobExecutionContext.getJobDetail().getName());
经理本身维持Map<String,ScheduledEvent>
从那里拿走了
答案 1 :(得分: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);
}
}
答案 2 :(得分:0)
据我所知,他们对基于工作流程的工作的建议(你必须保证一个工作跟随另一个)是让第一个工作为其继任者创建一个条目,以便在完成时立即执行。