WorkflowFilter


НАЧАЛО >> Workflow >> Модули Workflow >> WorkflowFilter📄 Скачать в DOCX


Модуль WorkflowFilter хранит сохраненные фильтры списков workflow-записей. Фильтр описывает поисковое выражение, ограничения по статусам, правила обработки HTTP-параметров страницы, возможность материализации тяжелых выборок и контракты подписок.

1. Запись WORKFLOWFILTER

Поле Назначение
920 тип записи WORKFLOWFILTER
1^A ключ workflow
1^B ключ фильтра
1^C название фильтра
1^D активность
1^E тип записи v920
1^F режим списка
1^G ограничивать проектом
1^H разрешить HTTP-параметр status
1^I префикс текстового поиска
1^J описание фильтра
1^K область видимости: system, project, shared, personal
1^L версия фильтра
1^M включить материализацию фильтра
1^N срок свежести материализованного среза в секундах
1^O разрешить подписки на фильтр
2^A базовое поисковое выражение
2^C коды статусов
3^A имя HTTP-параметра
3^B поисковый префикс
3^C название параметра
3^D тип значения: string, integer, date, user, status
3^E обязательность параметра
3^F признак множественного значения
3^G максимальная длина значения
3^H значение по умолчанию
3^I размещение в UI: primary, advanced, hidden
3^J тип UI-контрола: text, select, user, date
3^K источник вариантов Module:section
3^L placeholder
3^M политика регистра значения вариантов: lower или upper

2. Запись WORKFLOWFILTERSLICE

WORKFLOWFILTERSLICE хранит материализованный срез фильтра. Срез принадлежит WorkflowFilter; пересчет выполняется через Queue, инвалидация должна инициироваться через EventBus, а пользовательские подписки остаются настройкой ProfileManager.

Поле Назначение
920 тип записи WORKFLOWFILTERSLICE
1^A ключ workflow
1^B ключ фильтра
1^C ключ среза
1^D ключ проекта
1^E тип записи v920
1^F версия фильтра, по которой построен срез
1^G время обновления среза
1^H trace id пересчета
1^I диагностическое состояние: fresh, empty, stale, refreshing, error
1^J принудительный признак устаревания
1^K количество результатов
1^L идентификатор задачи Queue
1^M активность среза
1^N диагностическое сообщение
2^A список MFN результата

3. Режим списка

Режим определяет общий сценарий использования фильтра:

Режим Назначение
worker рабочие списки сотрудников
user пользовательские списки

Конкретный состав записей задается поисковым выражением, статусами и параметрами.

4. HTTP-параметры

Поле 3 позволяет описать дополнительные параметры URL. Для каждого параметра задается имя, поисковый префикс, тип значения, обязательность, поддержка нескольких значений, максимальная длина, значение по умолчанию и UI-метаданные. WorkflowFilter нормализует параметры до построения поискового выражения и отклоняет значения, которые не проходят описание фильтра.

Для select-контролов 3^K может указывать источник вариантов в формате Module:section. 3^M применяется источником вариантов, если нужно отображать значения из одного системного справочника, но сохранять их в индексе в ожидаемом регистре, например lower для TASKTYPE=.

Специальные параметры:

Параметр Назначение
src текстовый поиск по префиксу из 1^I
status ограничение статусом из разрешенного набора 2^C

5. Материализация

Если 1^M=1, фильтр может иметь материализованные срезы. WorkflowFilter хранит метаданные среза, определяет свежесть по версии фильтра, TTL и диагностическому состоянию, но не выполняет долгий пересчет внутри HTTP-запроса. Фоновое выполнение принадлежит Queue, доставка событий инвалидации принадлежит EventBus, эксплуатационная диагностика должна публиковаться через HealthCheck.

6. Impact-анализ

WorkflowFilter предоставляет where-used и impact-анализ перед удалением фильтра. Удаление блокируется, если фильтр используется схемой фильтров или представлением. Материализованные срезы считаются зависимыми runtime-данными и не блокируют удаление сами по себе.

7. Использование

Типовые методы:

Метод Назначение
CreateFilter() создать фильтр
GetFilters() получить фильтры workflow
GetFilterByKey() найти фильтр
GetSafeRequestParameters() нормализовать и проверить HTTP-параметры фильтра
BuildFilterSrc() построить поисковое выражение списка
ExplainFilter() объяснить итоговый SRC, параметры, диагностику и политику материализации
CountFilter() посчитать записи по фильтру
ExecuteFilter() выполнить фильтр с пагинацией
PreviewFilter() выполнить preview фильтра для администратора или тестового пользователя
CreateMaterializedSlice() создать объект материализованного среза
GetMaterializedSliceFreshness() определить свежесть среза
GetFilterWhereUsed() получить места использования фильтра
GetFilterImpactAnalysis() получить влияние изменения или удаления фильтра
CanDeleteFilter() проверить возможность удаления фильтра
GetFilterSelectList() сформировать список выбора