- Модуль: rpa
- Путь к файлу: ~/bitrix/modules/rpa/lib/integration/bizproc/taskmanager.php
- Класс: BitrixRpaIntegrationBizprocTaskManager
- Вызов: TaskManager::getItemFaces
public function getItemFaces(int $typeId, int $itemId): array
{
$result = [
'completed' => [],
'running' => [],
'all' => [],
];
$documentId = DocumentItem::makeComplexId($typeId, $itemId);
$workflowIds = WorkflowStateTable::getIdsByDocument($documentId);
if (!$workflowIds)
{
return $result;
}
$ids = [];
$taskIterator = CBPTaskService::GetList(
['MODIFIED' => 'DESC'],
['@WORKFLOW_ID' => $workflowIds],
false,
['nTopCount' => 50],
['ID']
);
while ($task = $taskIterator->fetch())
{
$ids[] = $task['ID'];
}
if (!$ids)
{
return $result;
}
$taskUsers = CBPTaskService::getTaskUsers($ids);
$taskUsers = array_values($taskUsers);
$taskUsers = count($taskUsers) > 1 ? array_merge(...$taskUsers) : reset($taskUsers);
if ($taskUsers)
{
foreach ($taskUsers as $user)
{
if ($user['STATUS'] === CBPTaskUserStatus::Waiting)
{
$result['running'][] = (int)$user['USER_ID'];
}
else
{
$result['completed'][] = (int)$user['USER_ID'];
}
}
}
$result['completed'] = array_unique($result['completed']);
$result['running'] = array_unique($result['running']);
$result['all'] = array_unique(array_merge($result['completed'], $result['running']));
return $result;
}