Puedes usar Value Based Assignment con un
marcador paralelo o una tarea con
Self Service Value Based Assignment.
Tu proceso sera uno de estos:
selectNextUserProcess.png (18.33 KiB) Viewed 5962 times
Primero, crea un DynaForm con un grid para seleccionar los usuarios que seran asignados a la próxima tarea.
SelectUsersForm.png (25.36 KiB) Viewed 5962 times
El grid as asociado con la variable "usersNextTask" y contiene 3 campos:
- checkbox con la ID "assign"
- textbox con la ID "fullName"
- hidden con la ID "userId"
Segundo, crea el trigger para poblar el grid con los usuarios disponibles para la proxima tarea. Si la proxima tarea es Value Based Assignment con un marcador paralelo, debes usar este codigo:
Code: Select all$taskTitle = 'Value Based Assignment & Parallel Marker';
$aTasks = PMFGetUidFromText($taskTitle, 'TAS_TITLE', @@PROCESS);
if (count($aTasks) == 0) {
throw new Exception("Error: Task '$taskTitle' is not found.");
}
$taskId = $aTasks[0];
@=usersNextTask = array();
$d = new Derivation();
$aUsers = $d->getAllUsersFromAnyTask($taskId);
$rowNo = 1;
foreach ($aUsers as $userId) {
$aUserInfo = userInfo($userId);
$fullName = $aUserInfo['firstname'].' '.$aUserInfo['lastname'].' ('.$aUserInfo['username'].')';
@=usersNextTask[$rowNo.''] = array(
'assign' => '0',
'userId' => $userId,
'fullName' => $fullName,
'fullName_label'=> $fullName,
);
$rowNo++;
}
Si la proxima tarea es Self Service Value Based Assignment, debes usar este codigo:
Code: Select all//set to the name of the group whose users will be selected to assign to the task
$groupTitle = 'Work Team';
@=usersNextTask = array();
$aGroups = PMFGetUidFromText($groupTitle, 'GRP_TITLE');
if (count($aGroups) == 0) {
throw new Exception("Error: Group '$groupTitle' is not found.");
}
G::LoadClass("groups");
$g = new Groups();
$aUsers = $g->getUsersOfGroup($aGroups[0]);
$rowNo = 1;
foreach ($aUsers as $aUser) {
$fullName = $aUser['USR_FIRSTNAME'].' '.$aUser['USR_LASTNAME'].' ('.$aUser['USR_USERNAME'].')';
@=usersNextTask[$rowNo.''] = array(
'assign' => '0',
'userId' => $aUser['USR_UID'],
'fullName' => $fullName,
'fullName_label' => $fullName
);
$rowNo++;
}
Este trigger debe ser ejecutado antes del DynaForm con el grid.
Tercero, crea otro trigger que sera ejecutado despues del DynaForm para llenar la variable utilizada para asignar los usuarios en la próxima tarea:
Code: Select all//set to ID of forms with grid to select users:
$formId = '81367063558ffead25bea69035264010';
@=selectedUsers = array();
if (!isset(@=usersNextTask)) {
G::SendMessageText("Select at least one user to assign to the next task.", "WARNING");
PMFRedirectToStep(@@APPLICATION, @%INDEX, 'DYNAFORM', $formId);
}
foreach (@=usersNextTask as $aUser) {
if ($aUser['assign'] == '1') {
@=selectedUsers[] = $aUser['userId'];
}
}
if (count(@=selectedUsers) == 0) {
G::SendMessageText("Select at least one user to assign to the next task.", "WARNING");
PMFRedirectToStep(@@APPLICATION, @%INDEX, 'DYNAFORM', $formId);
}
4. Establece que @@selectedUsers sera la variable utilizada en la próxima tarea. Si la proxima tarea es Self Service Value Based Assignment, debes asignar los usuarios a la tarea. Si es Value Based Assignment con un marcador paralelo, tienes que asignar los usuarios al grupo que esta indicado en el trigger.
Aca es un proceso que puedes bajar para probarlo:
(57.42 KiB) Downloaded 347 times