• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/robotservice.php
  • Класс: BitrixTasksScrumServiceRobotService
  • Вызов: RobotService::updateRobotsOfLastSprint
public function updateRobotsOfLastSprint(int $groupId, array $stageIdsMap): bool
{
	try
	{
		$projectDocumentType = BizprocDocumentTask::resolveScrumProjectTaskType($groupId);
		$currentDocumentType = ['tasks', BizprocDocumentTask::class, $projectDocumentType];

		$helper = new BitrixBizprocCopyIntegrationHelper($currentDocumentType);

		$robotIds = $helper->getWorkflowTemplateIds();
		$triggerIds = $helper->getTriggerIds();

		foreach ($robotIds as $robotId)
		{
			$queryResult = CBPWorkflowTemplateLoader::getList([], ['ID' => $robotId]);
			if ($fields = $queryResult->fetch())
			{
				if (array_key_exists($fields['DOCUMENT_STATUS'], $stageIdsMap))
				{
					$fields['DOCUMENT_STATUS'] = $stageIdsMap[$fields['DOCUMENT_STATUS']];

					if (is_array($fields['TEMPLATE']))
					{
						foreach ($fields['TEMPLATE'] as &$activity)
						{
							$activity = $this->updateChangeStageActivity($activity, $stageIdsMap);
						}
					}

					CBPWorkflowTemplateLoader::update($robotId, $fields, true);
				}
			}
		}

		foreach ($triggerIds as $triggerId)
		{
			$queryResult = TriggerTable::getList(['filter' => ['=ID' => $triggerId]]);
			if ($fields = $queryResult->fetch())
			{
				if (array_key_exists($fields['DOCUMENT_STATUS'], $stageIdsMap))
				{
					$fields['DOCUMENT_STATUS'] = $stageIdsMap[$fields['DOCUMENT_STATUS']];

					TriggerTable::update($triggerId, $fields);
				}
			}
		}

		return true;
	}
	catch (Exception $exception)
	{
		$this->errorCollection->setError(
			new Error($exception->getMessage(), self::ERROR_COULD_NOT_UPDATE_ROBOTS)
		);

		return false;
	}
}