bizprocdesigner 26.500.0: фильтр ноды приехал выключенным
Крупный UI-релиз редактора схем плюс новый тип конструкции — фильтр ноды. Ломающих изменений нет: все правки контроллера и DTO совместимы со старыми вызовами. Главное, что стоит знать заранее: фича спрятана за опцией и по умолчанию выключена.
Фильтр ноды
Новый экшен контроллера:
Activity::getNodeFilterMetadataAction(
string $activityType,
array $documentType = [],
bool $onlyDynamicEntities = false
): ?array
Отдаёт метаданные фильтра для конкретной активности. Два условия: у вызывающего должно быть право CreateWorkflow, а сама активность должна реализовывать NodeFilterMetadataProvider — контракт приехал в bizproc 26.1000.0 того же батча. То есть фильтровать умеет не любая нода, а та, которая объявила, по чему её можно фильтровать.
В перечисление типов конструкций добавлен ConstructionType::FILTER = 'filter', ConstructionDto::fromArray() его обрабатывает, а в JS появился UI (edit-filter-expression).
Включается всё это опцией модуля node_filter_available, дефолт — N:
\Bitrix\Main\Config\Option::set('bizprocdesigner', 'node_filter_available', 'Y');
Проверка — Internal\Config\Feature::isNodeFilterAvailable(). Если после обновления вы не находите фильтр в интерфейсе, это не баг.
Совместимые расширения
Ничего не удалено, но кое-что стоит учесть:
Activity::getSettingsControlsAction(..., array $options = [])— новый ключ$options['hideEditorComment']скрывает поле комментария редактора. То же и со стороны админки:bizproc_activity_settings.phpпри POSToptions.hideEditorComment=Yкомментарий не показывает и не сохраняет.LoadSettingsResponseDto— полеbool $filterSupported = false. Клиент по нему понимает, показывать ли UI фильтра для этой ноды.ConditionExpressionDto::$value— тип сменился с?stringнаmixed, а на$fieldнавешен#[NotEmpty]. Условие теперь может сравнивать не только строки, но поле обязано быть заполнено — валидация переехала из проверок в атрибут.FieldDto— опциональные?array $optionsи?array $settings.- Трейт
ConditionValueResolver::resolveConditionValue()— общий разбор значения условия, вынесен из дублирования.
Небольшая, но полезная замена внутри
getSettingsControlsAction берёт описание активности через ActivitySearcherService::searchByCode(), а не через CBPRuntime::getActivityDescription(). Поиск по коду вместо обхода рантайма — как правило, это про скорость открытия карточки настроек в дизайнере, где раньше на каждый клик поднималось описание всех активностей.
UI редактора
Основной объём релиза — JS редактора схемы (install/js/bizprocdesigner/editor/chart/src/): скелетон приложения на время загрузки (app-skeleton), Lottie-анимации иконок блоков, тултипы каталога, шапка настроек ноды, табы, bx-control, form-input-tracker. Плюс инспектор данных ноды и preview/rules layout для общих настроек, приехавшие ещё в 26.400.0.
Что делать
- Хотите фильтры нод — включите
bizprocdesigner/node_filter_available. - Пишете свои активности и хотите фильтр в дизайнере — реализуйте
NodeFilterMetadataProviderизbizproc. - Если разбираете
ConditionExpressionDto— учтите смену типаvalueнаmixed, строковых допущений в коде быть не должно.