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