• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/controller/task.php
  • Класс: BitrixRpaControllerTask
  • Вызов: Task::doAction
public function doAction(): ?array
{
	$result = [];
	$formData = $this->getRequest()->getPostList()->getValues();

	$taskManager = Driver::getInstance()->getTaskManager();
	if(!$taskManager)
	{
		$this->addError(new Error(Loc::getMessage("RPA_CONTROLLER_TASK_NOT_FOUND")));
		return null;
	}
	$task = $taskManager->getTaskById($formData['taskId']);
	if ($task)
	{
		$eventHandlerKey = $this->subscribeOnTimelineAddEvent((int)$formData['taskId']);
		$userId = $this->getCurrentUser()->getId();
		if (CBPDocument::PostTaskForm($task, $userId, $formData, $errors))
		{
			$result = ['completed' => 'ok'];
		}
		else
		{
			$error = reset($errors);
			if ($error['code'] === CBPRuntime::EXCEPTION_CODE_INSTANCE_TERMINATED)
			{
				$result = ['completed' => 'ok', 'stageUpdated' => true];
			}
			else
			{
				$this->addError(new Error($error['message']));
				return null;
			}
		}

		if($this->createdTimeline)
		{
			$item = $this->createdTimeline->getItem();
			if($item)
			{
				$result['item'] = (new Item())->prepareItemData($item);
			}
			$result['timeline'] = $this->createdTimeline->preparePublicData();
		}
		$this->unSubscribeOnTimelineAddEvent($eventHandlerKey);

	}
	else
	{
		$this->addError(new Error(Loc::getMessage("RPA_CONTROLLER_TASK_NOT_FOUND")));
	}

	return $result;
}