• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/lib/restservice.php
  • Класс: BitrixBizprocRestService
  • Вызов: RestService::updateWorkflowTemplate
static function updateWorkflowTemplate($params, $n, $server)
{
	if(!$server->getClientId())
	{
		throw new AccessException("Application context required");
	}

	self::checkAdminPermissions();
	$params = array_change_key_case($params, CASE_UPPER);

	$fields = (isset($params['FIELDS']) && is_array($params['FIELDS'])) ? $params['FIELDS'] : null;

	if (!$fields)
	{
		throw new RestException("No fields to update.");
	}

	$tpl = WorkflowTemplateTable::getList(array(
		'select' => ['ID', 'SYSTEM_CODE', 'NAME', 'DESCRIPTION', 'AUTO_EXECUTE', 'MODULE_ID', 'ENTITY', 'DOCUMENT_TYPE'],
		'filter' => ['=ID' => (int) $params['ID']],
	))->fetch();

	if (!$tpl)
	{
		throw new RestException("Workflow template not found.");
	}

	if ($tpl['SYSTEM_CODE'] !== self::generateTemplateSystemCode($server))
	{
		throw new RestException("You can update ONLY templates created by current application");
	}

	if (isset($fields['NAME']))
	{
		self::validateTemplateName($fields['NAME']);
		$tpl['NAME'] = $fields['NAME'];
	}

	if (isset($fields['DESCRIPTION']))
	{
		$tpl['DESCRIPTION'] = (string) $fields['DESCRIPTION'];
	}

	if (isset($fields['AUTO_EXECUTE']))
	{
		self::validateTemplateAutoExecution($fields['AUTO_EXECUTE']);
		$tpl['AUTO_EXECUTE'] = (int) $fields['AUTO_EXECUTE'];
	}

	if (isset($fields['TEMPLATE_DATA']))
	{
		$data = self::prepareTemplateData($fields['TEMPLATE_DATA']);

		return CBPWorkflowTemplateLoader::ImportTemplate(
			$tpl['ID'],
			[$tpl['MODULE_ID'], $tpl['ENTITY'], $tpl['DOCUMENT_TYPE']],
			$tpl['AUTO_EXECUTE'],
			$tpl['NAME'],
			$tpl['DESCRIPTION'],
			$data,
			$tpl['SYSTEM_CODE']
		);
	}
	else
	{
		return CBPWorkflowTemplateLoader::Update($tpl['ID'], [
			'NAME' => $tpl['NAME'],
			'DESCRIPTION' => $tpl['DESCRIPTION'],
			'AUTO_EXECUTE' => $tpl['AUTO_EXECUTE'],
		]);
	}
}