Page 1 of 1

Obtener nombre de la siguiente Tarea PM 3

Posted: Thu Jun 23, 2016 1:31 pm
by andrewtwo
Hola con el siguiente código obtengo el nombre de la tarea, pero solo sirve si ingresé a la tarea actual y yo necesito identificarla antes de ingresar a la tarea


Ensaye las notificaciones también me funcionan pero no indica la siguiente tarea en el caso como podría añadir que se envié la tarea que se le asigno en el caso usando la notificaciones o propiedades de la tarea

si uso un trigger debo entrar a la tara actual para identificarla y yo necesito conocerla desde antes
//Nombre de la Tarea
$taskId = @@TASK;
$atask = executeQuery("SELECT T.TAS_UID, C.CON_VALUE
FROM TASK T
INNER JOIN CONTENT C ON C.CON_ID = T.TAS_UID
WHERE T.TAS_UID = '$taskId'
AND C.CON_CATEGORY = 'TAS_TITLE'");
@@TASK = $atask[1]["CON_VALUE"];
Muchas gracias por la ayuda

Re: Obtener nombre de la siguiente Tarea PM 3

Posted: Thu Jun 23, 2016 8:50 pm
by amosbatto
Puedes usar este código para procesos BPMN:
Code: Select all
//PMFNextActivities returns a list of the next activities in a process
//$uid: the unique ID of a task, subprocess or gateway
//$aActivities: An array of activities for calling the function recursively. Do not include. 
function PMFNextActivities($uid, $aActivities=array()) {
	$query = "SELECT * FROM BPMN_FLOW WHERE FLO_ELEMENT_ORIGIN='$uid'";
	$aFlows = executeQuery($query);
	
	if (!is_array($aFlows))
		die("Error in query: $query");
	
	foreach ($aFlows as $aFlow) {
		if ($aFlow['FLO_ELEMENT_DEST_TYPE'] == 'bpmnActivity') {
			$title = Content::load('TAS_TITLE', '', $aFlow['FLO_ELEMENT_DEST'], '');
			$actId = $aFlow['FLO_ELEMENT_DEST'];
			$aActivities[$actId] = $title;
		}
		elseif ($aFlow['FLO_ELEMENT_DEST_TYPE'] == 'bpmnGateway') {
			$aActivities2 = PMFNextActivities($aFlow['FLO_ELEMENT_DEST'], $aActivities);
			$aActivities = array_merge($aActivities, $aActivities2);
			$aActivities = array_unique($aActivities);
		}
	}
	return $aActivities;
}

$aNext = PMFNextActivities(@@TASK);
@@nextTaskTitle = array_values($aNext)[0];
@@nextTaskUid = array_keys($aNext)[0];
Si hay varias tareas despues de la tarea actual:
Code: Select all
$aNext = PMFNextActivities(@@TASK);
@@taskTitle1 = array_values($aNext)[0];
@@taskTitle2 = array_values($aNext)[1];
@@taskTitle3 = array_values($aNext)[2];

Re: Obtener nombre de la siguiente Tarea PM 3

Posted: Thu Jun 23, 2016 9:10 pm
by andrewtwo
Muchisimas gracias amosbatto, lo revisaré

Saludos

Re: Obtener nombre de la siguiente Tarea PM 3

Posted: Fri Jun 24, 2016 4:20 pm
by amosbatto
He creado algunas funciones para ayudar usuarios con el mismo problema en versiones futuras de PM. Ver:
http://bugs.processmaker.com/view.php?id=20773

Re: Obtener nombre de la siguiente Tarea PM 3

Posted: Tue Aug 02, 2016 5:59 pm
by andrewtwo
Hola no funciona, ya lo verifique

Saludos