• Модуль: 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;
}