From 752e65a57f95cf1c1b46b752de2accd7f6777be3 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Tue, 3 Mar 2015 16:32:11 -0400 Subject: [PATCH] PM-1691 "0016872: Event execution times are not being..." SOLVED Issue: 0016872: Event execution times are not being generated correctly Cause: Se esta mandando un numero real (ej 955.33) a la funcion "strtotime" Solution: Se esta redondeando el numero con la funcion "round", para que de esa manera se mande un numero entero a la funcion "strtotime" Explanation: - En nuestro "Calendario" se tiene definido por default que son 8 horas de trabajo por dia (8 horas/dia) - En el proceso adjunto en el bug, se tiene definido lo siguiente: > ... > The time starts with task: Task2 > Estimated Task duration: 8 hours (esto se transforma a: 0.33333333333333 (8/24), segun la wiki) > Execution time: 0 days After interval ends > ... Estos valores mas el resto de campos son almacenados en la tabla "EVENT" - Ahora como ejemplo tenemos el siguiente caso: en fecha y hora "2015-03-03 13:49:52" se inicia un caso con el Task1 y es derivado al Task2, entonces se crea un registro en la tabla "APP_EVENT". El campo que es objeto de estudio es "APP_EVENT.APP_EVN_ACTION_DATE", el cual tiene un valor de "2015-03-03 16:29:52" - Entonces el analisis es el siguiente: 0.33333333333333 dias * 8 horas/dia = 2.6666666666666 horas Lo que quiere decir que el cron.php ejecutara/iniciara/revisara el caso el "2015-03-03 13:49:52" + "2.6666666666666 horas" osea el "2015-03-03 16:29:52" --- workflow/engine/classes/class.calendar.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/class.calendar.php b/workflow/engine/classes/class.calendar.php index 07939d4bd..e6e28c5b9 100755 --- a/workflow/engine/classes/class.calendar.php +++ b/workflow/engine/classes/class.calendar.php @@ -414,7 +414,7 @@ class calendar extends CalendarDefinition $hoursDuration -= (float)($secondRes/3600); //$dataLog[] = (float)($secondRes/3600); } else { - $newDate = date('Y-m-d H:i:s', strtotime('+' . (((float)$hoursDuration)*3600) . ' seconds', strtotime($newDate))); + $newDate = date("Y-m-d H:i:s", strtotime("+" . round(((float)($hoursDuration)) * 3600) . " seconds", strtotime($newDate))); //$dataLog[] = (float)($hoursDuration); $hoursDuration = 0; } @@ -797,4 +797,4 @@ class calendar extends CalendarDefinition } } -?> \ No newline at end of file +?>