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