[gelöst] Job Queue Recurring Problem

20. August 2008 10:41

Hallo,
ich habe ein Problem bei der Ausführung eines wiederkehrenden Job Queue Eintrags.

Ich habe einen Report, der jede Stunde einmal ausgeführt werden sollte.
Ich habe nun einen Job Queue Eintrag erstellt, der den Report enthält und jeweis um 15 Minuten nach jeder vollen Stunde (sprich 1:15 am, 2:15 am,...) laufen soll.
Zu Beginn lief alles problemlos jedoch ab 11:15 pm (23:15) git es ein Problem.
Der Report wird laut den Log Entries (weit über 100) immer und immer wieder gestartet und scheinbar hat er Probleme damit, den nächsten Tag als neue Schedule Time anzugeben.

Ich habe folgende Felder die mit der Startzeit zu tun haben befüllt:
Earliest Start Date/Time: 08/20/08 1:15 am
Expiration Date/Time: leer
Recurring Job: Yes
Run on Mondays, Tuesdays, ... alle Yes
Starting Time: 12:00:00 am
Ending Time: 11:59:59 / hab es auch schon mit einen leeren Feld versucht.
No. of Minutes between: 60

Wenn ich die Run on Mondays,.. nicht aktiviere, dann stellt er mir das Feld Earliest Start Date/Time auf 06/01/2036 12:00. -> er läuft nie mehr.

Wie ihr schon an den Zeitangaben herauslesen könnt, ist es die US Version und die Windows Umgebung ist auf USA eingestellt.

Hat einer von euch vielleicht eine Idee was das sein könnte, oder eventuell das selbe Problem?

Danke für eure Hilfe
greetz
grer
Zuletzt geändert von grer am 25. August 2008 10:20, insgesamt 1-mal geändert.

Re: Job Queue Recurring Problem

25. August 2008 10:15

Hallo,

wie es aussieht gibt es leider einen Fehler in der Standardfunktion CalcNextRunTime() in der Codeunit 448 "Queue Dispacher".

Code:
// Alter Code
IF JobQueueEntry."No. of Minutes between Runs" > 0 THEN BEGIN
  NewRunTime := TIME + 60000 * JobQueueEntry."No. of Minutes between Runs";   
  IF (JobQueueEntry."Ending Time" = 0T) AND (NewRunTime >= 235900T) OR
     (JobQueueEntry."Ending Time" <> 0T) AND (NewRunTime > JobQueueEntry."Ending Time") THEN BEGIN 
    NewRunTime := JobQueueEntry."Starting Time";
    NoOfDays := 1;
  END; 
END ELSE BEGIN
  NewRunTime := DT2TIME(JobQueueEntry."Earliest Start Date/Time");
  NoOfDays := 1;
END;


Grer und ich haben die Funktion folgenderweise angepasst, damit funktioniert es jetzt wie gewollt. :wink:

Code:
// Neuer Code
IF JobQueueEntry."No. of Minutes between Runs" > 0 THEN BEGIN
  NewRunTime := TIME + 60000 * JobQueueEntry."No. of Minutes between Runs";
  IF (JobQueueEntry."Ending Time" = 0T) AND (NewRunTime < TIME) THEN
    NoOfDays := 1
  ELSE IF (JobQueueEntry."Ending Time" <> 0T) AND (NewRunTime > JobQueueEntry."Ending Time") THEN BEGIN
    NewRunTime := JobQueueEntry."Starting Time";
    NoOfDays := 1;
  END; 
END ELSE BEGIN
  NewRunTime := DT2TIME(JobQueueEntry."Earliest Start Date/Time");
  NoOfDays := 1;
END;


Nachdem wir diesbezueglich nicht so viel Informationen gefunden haben, nehme ich an, dass die Job Queue fast nicht verwendet wird.

Gruesse
feri