- Tue Jul 07, 2015 12:01 pm
#783643
Estimados,
Estamos teniendo un requerimiento bastante particular, y no logro resolverlo:
Todas nuestras tareas tienen regla de designanción en AUTO SERVICIO, así los usuarios pueden agarrar las tareas que ellos quieras.
El problema es que a veces, agarran una tarea y se dan cuenta que no es para ellos, por lo cual tenemos que volver a dejarla en AUTO SERVICIO. Para ello, creamos un botón en los dynaforms que setea una variable @@REPEAT.
La solución fácil sería agregar un condicional en cada tarea, para verificar la variable @@REPEAT y de ser necesario, ejecutar nuevamente la misma tarea. El problema viene en que queremos realizar este procedimiento vía TRIGGER, así no modificamos el Mapa del Proceso.
EN CONCRETO: Trigger que desarrollamos, pero que no vuelve a la misma tarea sino que avanza a la siguiente:
También probé con los servicios SOAP, pero al hacer un new SoapClient, el trigger deja de ejecutarse.
Gracias
Estamos teniendo un requerimiento bastante particular, y no logro resolverlo:
Todas nuestras tareas tienen regla de designanción en AUTO SERVICIO, así los usuarios pueden agarrar las tareas que ellos quieras.
El problema es que a veces, agarran una tarea y se dan cuenta que no es para ellos, por lo cual tenemos que volver a dejarla en AUTO SERVICIO. Para ello, creamos un botón en los dynaforms que setea una variable @@REPEAT.
La solución fácil sería agregar un condicional en cada tarea, para verificar la variable @@REPEAT y de ser necesario, ejecutar nuevamente la misma tarea. El problema viene en que queremos realizar este procedimiento vía TRIGGER, así no modificamos el Mapa del Proceso.
EN CONCRETO: Trigger que desarrollamos, pero que no vuelve a la misma tarea sino que avanza a la siguiente:
Code: Select all
Hay alguna forma de utilizar la función PMFDerivateCase para que vuelva a la misma tarea que se está ejecutando, y no a la siguiente? Probé utilizar DEL_PREVIOUS en vez de DEL_INDEX, pero directamente no hace nada.if (@@REPEAT == 'Si') {
$caseId = @@APPLICATION;
$userLogged = @@USER_LOGGED;
$index = @%INDEX;
$query = "SELECT AD.DEL_INDEX, AD.DEL_PREVIOUS, U.USR_USERNAME FROM APP_DELEGATION AD, USERS U ".
"WHERE AD.APP_UID = '{$caseId}' AND AD.DEL_THREAD_STATUS='OPEN' AND " .
"AD.USR_UID = U.USR_UID AND AD.DEL_INDEX = {$index}";
$threads = executeQuery($query);
if (is_array($threads) and count($threads) > 0) {
foreach ($threads as $thread) {
$sql = "SELECT USR_PASSWORD FROM USERS WHERE USR_USERNAME = '{$thread['USR_USERNAME']}'";
$task_user = executeQuery($sql,'rbac');
if (is_array($task_user) and count($task_user) > 0) {
$pass = 'md5:' . $task_user[1]['USR_PASSWORD'];
PMFDerivateCase($caseId, $thread['DEL_INDEX']);
die();
}
}
}
}
También probé con los servicios SOAP, pero al hacer un new SoapClient, el trigger deja de ejecutarse.
Gracias