Je viens de réaliser que je crois avoir répondu à la mauvaise question d'abord, je vais le laisser ci-dessous pour la postérité. Encore une fois je suppose que je regarde la bonne API. Ajouter un champ à UFkJob:
public class UfkJob implements IScheduledJob {
String jobName = null;
public void execute(ISchedulingService service) {
if (... && jobName != null) {
/* here i want to remove the current running job */
ISchedulingService service = (ISchedulingService) getScope().getContext().getBean(ISchedulingService.BEAN_NAME);
service.removeScheduledJob(jobName);
}
public void setJobName(String name){
this.jobName = name;
}
}
puis lorsque vous planifiez le travail:
ISchedulingService service = (ISchedulingService) getScope().getContext().getBean(ISchedulingService.BEAN_NAME);
UfkJob job = new UfkJob();
job.setJobName(service.addScheduledJobAfterDelay(5000, job, 200));
ou vous pouvez toujours avoir l'horaire de travail lui-même:
public class UfkJob implements IScheduledJob {
String jobName;
ISchedulingService service;
public UfkJob(ISchedulingService service){
this.service = service;
this.jobName = service.addScheduledJobAfterDelay(5000, this, 200);
}
public void execute(ISchedulingService service) {
if (...) {
service.removeScheduledJob(jobName);
}
}
}
//Your calling code
...
new UfkJob((ISchedulingService) getScope().getContext().getBean(ISchedulingService.BEAN_NAME));
----- Ma réponse originale ci-dessous, je crois que pour la mauvaise question ----
Je ne suis pas sûr si je regarde les documents de l'API pour le bibliothèque droite, mais votre appel de méthode:
service.addScheduledJobAfterDelay(5000,new UfkJob(),200);
est défini comme:
addScheduledJobAfterDelay (int intervalle , emploi IScheduledJob, int retard) Planifier un emploi pour l'exécution périodique qui commencera après la délai spécifié.
La clé étant "exécution périodique". Il ressemble à ce que vous recherchez est:
addScheduledOnceJob (longue timedelta, emploi IScheduledJob) Planifier un emploi pour exécution unique à l'avenir.
donc votre appel serait:
service.addScheduledOnceJob(5000, new UfkJob());
qui exécuterait le UfkJob une seule fois 5 secondes après l'appel de méthode.