bizproc · bizproc 26.800.0 Заметное

bizproc 26.800.0: у шаблона появился источник происхождения, а ProcessStarter стал final

4 мин чтения

Бизнес-процессы готовят почву под шаблоны, которые создаёт не человек: в таблице шаблонов появилась колонка «откуда он взялся», запуск процессов вынесен в абстрактный класс, а сам ProcessStarter закрыт от наследования. В батче едет bizprocdesigner 26.400.0.

CREATE_SOURCE: откуда взялся шаблон

Новый enum Bitrix\Bizproc\Api\Enum\Template\CreateSource с двумя значениями и колонка CREATE_SOURCE varchar(32) NULL DEFAULT 'USER' в b_bp_workflow_template:

        use Bitrix\Bizproc\Api\Enum\Template\CreateSource;

CreateSource::User;      // завёл человек в дизайнере
CreateSource::Scenario;  // создан сценарием

    

Зачем — становится понятно из остального релиза: в модуле активно развивается генерация шаблонов AI-агентами (Internal\AI\Agent\Generator, системные ноды bitrix_ai_boss_report, bitrix_ai_project_pulse, CLI bizproc:ai-agent-reverse). Сгенерированный шаблон нужно уметь отличать от пользовательского — чтобы, например, перегенерировать его при обновлении и не затереть при этом то, что человек правил руками. Без метки источника такое решение принять невозможно.

Поле проброшено в ORM WorkflowTemplateTable, а copyTemplate() получил совместимый аргумент CreateSource $source = CreateSource::User.

Про базу важно: колонка добавлена в install/db/{mysql,pgsql}/install.sql, но отдельного ALTER в диффе нет. На живом портале этот SQL-батч колонку не допишет — она приедет отдельным механизмом обновления или при чистой установке. Если пишете свой код против CREATE_SOURCE, проверяйте наличие поля, а не полагайтесь на факт обновления.

Запуск процессов: рефакторинг с ломающим краем

Сценарии запуска вынесены из ProcessStarter в новый AbstractProcessStarter, а сам ProcessStarter стал final и наследует его. Имя класса осталось на месте, все публичные методы — тоже, так что вызовы не пострадают. Наследоваться от ProcessStarter больше нельзя. Если у вас был свой стартер поверх штатного — переезжайте на AbstractProcessStarter.

Заодно появился REST-сценарий запуска: StarterService::getStarterForManualRestDocumentScenario(), getProcessStarterForManualRestDocumentScenario(), getAutomationStarterForManualRestDocumentScenario() плюс Scenario::onRest. То есть документ, пришедший из REST, теперь стартует процесс своим путём, а не притворяется ручным запуском.

Рядом — связь между процессами: ParentWorkflowDto, BaseTypeStarter::setParentWorkflow(), Starter::setParentWorkflow(), ProcessStarterStacker, ScenarioProcessStarter. Активность «запустить процесс» (startworkflowactivity) теперь стартует через StarterService и передаёт ParentWorkflowDto — то есть дочерний процесс знает своего родителя. Ручной старт из bizproc.workflow.start/ajax.php тоже переведён на WorkflowTemplateService + StarterService вместо прямого CBPDocument::StartWorkflow(). Логика запуска перестаёт быть размазанной по компонентам и активностям.

Что сломается

  • ProcessStarter стал final — наследники не соберутся.
  • Internal\AI\Agent\Generator\AgentConfig\ConditionConfig::__construct$object и $joiner поменялись местами, $object теперь обязательный и идёт первым. Позиционный вызов со старым порядком перепутает аргументы молча.
  • Integration\AiAgent\Template и SetupTemplate потеряли processBeforeAction. Проверка фичи AI-агентов уехала внутрь экшенов (isRestartAvailable / isFillAvailable). Наследники, которые рассчитывали на хук контроллера, останутся без этой проверки — то есть без ошибки, но и без ограничения. Такое молчаливое ослабление проверки хуже фатала: обнаружится не сразу.
  • В батче дизайнера: NodeCatalogItemDto::__construct получил обязательный ?int $contentBlockColor перед $properties. Позиционные new NodeCatalogItemDto(...) разъедутся.

Совместимые расширения (аргументы с дефолтом в конец): deleteAction(..., bool $deleteChatbots = false), startTemplate(..., ?int $userId = null), SetupTemplateService::fill(..., bool $skipAccessValidation = false, bool $applyDefaults = false), trySyncSection(..., bool $force = false).

Deprecated

Public\Activity\Trigger\ContextFields\TimemanStopWorktimeTrigger помечен @deprecated, замена — \Bitrix\Timeman\Integration\Bizproc\StopWorktimeTrigger. Логика переезжает в модуль, которому она принадлежит.

Мелочи с последствиями

  • Дефолт опции workflow_dblock сменился с 'N' на 'Y', рядом появилась workflow_dblock_hold. Это блокировка на уровне БД при работе с процессом — включённая по умолчанию, она меняет поведение под нагрузкой. Если у вас были странности с параллельным исполнением процессов, здесь может быть и решение, и новая причина ждать блокировку.
  • Опция очистки хранилища переименована: search_cleanup_daysstorage_items_cleanup_days. Старое имя перестанет читаться.
  • CBPGetUserActivity: ReserveUserParameter больше не обязателен в validateProperties().
  • CBPHelper::stripUserPrefix() перестал падать на не-строках; группа ua резолвится через StructureHelper из humanresources.
  • Регион cn для AI-агентов закрыт через Public\Service\AiAgent\RegionAvailabilityService; агенты bitrix_ai_day_planner и bitrix_booking_ai_call скрыты везде (AiAgentVisibility / HiddenAiAgentsRegistry).
  • Новый агент SyncAiAgentNodesAgent::runAgent() раз в сутки и событие humanresources:OnAiReportsEnabledEventHandler::onAiReportsEnabled.

Что делать

  1. Ищите наследников ProcessStarter — переводить на AbstractProcessStarter.
  2. Ищите наследников контроллеров AI-агентов, полагавшихся на processBeforeAction, — проверку нужно вернуть явно.
  3. Проверьте опцию workflow_dblock на нагруженном портале.
  4. Переименуйте search_cleanup_days в своих настройках.

Читайте дальше

bizproc 26.1000.0 Безопасность Свежее

bizproc 26.1000.0: активности научились проверять права на целевой документ, ScopeTokenService удалён

Самый содержательный из трёх подряд релизов бизнес-процессов. Появились публичные контракты, по которым активность резолвит «над каким документом я работаю» и **проверяет права на него**. Удалён `ScopeTokenService`, версия API активностей поднята с 2 до 3, у хранилища появились лимиты.

5 мин
bizproc 26.900.0 Заметное Свежее

bizproc 26.900.0: установщик на миграциях и защита от unSign с мусором на входе

Релиз без единого изменения публичного API — `api.diff` пустой. Всё интересное в установщике: модуль переехал на `UpdateSystem\Migration`. Плюс пачка проверок типов там, где раньше подписанные значения из запроса шли в разбор как есть.

3 мин
seo 26.100.0 Заметное Свежее

seo 26.100.0: админку Google Webmaster вырезали, VK включается по зоне портала

Релиз про сокращение того, что перестало работать. Раздел Google Webmaster Tools в админке убран целиком, deprecated-метод Яндекса удалён, интеграции с VK теперь отключаются по региону портала. Плюс установщик переведён на миграции ядра.

3 мин
sender 26.300.0 Безопасность Свежее

sender 26.300.0: тестер писем больше не пускает произвольные ключи в компилятор

Главное в этом релизе — не новые классы, а два фильтра. AJAX тестовой отправки письма перестал складывать в конфигурацию сообщения всё, что пришло в запросе, а редирект по ссылке из рассылки перестал таскать внутренний параметр на внешние домены. Обе правки маленькие, обе — про то, что раньше можно...

4 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти