• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/lib/restservice.php
  • Класс: BitrixBizprocRestService
  • Вызов: RestService::startWorkflow
static function startWorkflow($params, $n, $server)
{
	$params = array_change_key_case($params, CASE_UPPER);

	if (empty($params['TEMPLATE_ID']))
	{
		throw new RestException('Empty TEMPLATE_ID', self::ERROR_WRONG_WORKFLOW_ID);
	}
	$templateId = (int)$params['TEMPLATE_ID'];
	$tplDocumentType = self::getTemplateDocumentType($templateId);

	if (!$tplDocumentType)
	{
		throw new RestException('Template not found', self::ERROR_WRONG_WORKFLOW_ID);
	}

	//hotfix #0120474
	$getParams = array_change_key_case($_GET, CASE_UPPER);
	if (isset($getParams['DOCUMENT_ID']) && is_array($getParams['DOCUMENT_ID']))
	{
		$params['DOCUMENT_ID'] = $getParams['DOCUMENT_ID'];
	}

	$documentId = self::getDocumentId($params['DOCUMENT_ID']);

	if (!$documentId)
	{
		throw new RestException('Wrong DOCUMENT_ID!');
	}

	$documentType = self::getDocumentType($documentId);

	if (!$documentType)
	{
		throw new RestException('Incorrect document type!');
	}

	if (!CBPHelper::isEqualDocument($tplDocumentType, $documentType))
	{
		throw new RestException('Template type and DOCUMENT_ID mismatch!');
	}

	self::checkStartWorkflowPermissions($documentId, $templateId);

	$workflowParameters = isset($params['PARAMETERS']) && is_array($params['PARAMETERS']) ? $params['PARAMETERS'] : [];

	$workflowParameters[CBPDocument::PARAM_TAGRET_USER] = self::getCurrentUserId();

	$errors = [];
	$workflowId = CBPDocument::startWorkflow($templateId, $documentId, $workflowParameters, $errors);

	if (!$workflowId)
	{
		throw new RestException($errors[0]['message']);
	}

	return $workflowId;
}