НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2809] Сохраненные и материализованные фильтры WorkflowFilter📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Новые возможности | 2026.3 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: Нет
Завершено: 08.09.2026 13:50
Нужно выделить WorkflowFilter как самостоятельный универсальный механизм сохраненных, проектных, общих, личных и материализованных фильтров workflowзаписей. Фильтр должен быть единым источником выборки для WorkflowView, dashboardсчетчиков, подписок, досок, календарей, портальных списков и внутренних очередей.
Задачи Tasks и заявительский портал TaskPortal требуют списков активных задач, личных обращений, задач на приемку, FAQ/knowledge views, просроченных задач, очередей команды и других выборок. Эти выборки не должны реализовываться отдельными SQL/PFT/pageфрагментами в каждом модуле. Логика фильтрации должна быть общей, rightsaware и пригодной для materialized slices.
WorkflowFilter является частью семейства Workflow, но его scope достаточно самостоятелен: определение фильтра, исполнение, параметры, права, materialized slices, counters, subscriptions, whereused и impact analysis. Поэтому его нужно вести отдельной Jiraзадачей, а не прятать внутри общей задачи WorkflowScreen/WorkflowView.
Нужно реализовать запись WorkflowFilter с ключом, названием, описанием, областью видимости, project/workflow binding, типом записи, параметрами, правами и признаком системности.
Фильтр должен описывать query по workflow-состоянию, типу записи, проекту, полям, участникам, датам, статусам API, правам и безопасным параметрам URL или формы. Фильтр должен возвращать только записи, доступные текущему пользователю.
Нужно реализовать общий API исполнения фильтра, пригодный для WorkflowView list/card, dashboard-счетчиков, подписок, WorkflowBoard, WorkflowCalendar, TaskPortal и внутренних очередей Tasks.
Нужно поддержать системные, проектные, общие и личные фильтры. Личный фильтр не должен становиться source of truth для проектного view. Персональные preference, избранное, порядок, фильтр по умолчанию и последние параметры должны храниться в ProfileManager, а не внутри WorkflowFilter.
Нужно реализовать materialized slices для тяжелых фильтров. Slice должен хранить версию фильтра, время пересчета, trace id, diagnostic state и признак устаревания. Пересчет тяжелых slices должен выполняться через Queue, а invalidation может запускаться через EventBus.
Нужно реализовать preview результата для администратора с учетом прав тестового пользователя, where-used по views, boards, calendars, subscriptions, menu и dashboards, а также impact analysis при изменении или удалении фильтра.
Нужно реализовать policy подписки на фильтр. WorkflowFilter определяет возможность подписки и исполняет выборку, EventBus отвечает за доставку, Queue за расписание, ProfileManager за пользовательскую привязку подписки.
WorkflowFilter владеет определением фильтра, исполнением выборки, safe parameters, materialized slices, counters, where-used, impact analysis и policy подписки.
WorkflowFilter не рисует страницы, не хранит пользовательские preference, не доставляет уведомления, не планирует фоновые задания и не содержит taskspecific бизнеслогику. Эти части остаются у WorkflowView, ProfileManager, EventBus, Queue и доменных модулей.
Можно создать системный фильтр и выполнить его через общий API с учетом прав текущего пользователя.
WorkflowView может использовать WorkflowFilter для списка и карточки без собственного частного механизма выборки.
Тяжелый фильтр может иметь materialized slice, пересчет через Queue и понятное состояние freshness.
Preview администратора показывает результат с учетом прав тестового пользователя и объясняет ограничения выборки.
Удаление или изменение фильтра показывает where-used и блокируется, если фильтр используется опубликованным view, board, calendar или subscription.
Личные preference фильтра хранятся вне WorkflowFilter и не расширяют права пользователя.
TestA должен проверять системный фильтр, проектный фильтр, личный фильтр, права, safe URL parameters, materialized slice, invalidation, where-used, запрет удаления используемого фильтра и интеграцию с WorkflowView.
Help должен описывать настройку фильтров, параметры, права, materialized slices, preview, where-used, подписки и диагностику производительности.
-
Задача I128-2809.
Что сделано:
Границы:
Проверки:
[I128-2810] Миграция VirtualRef в промышленный контур Tasks
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2811] Заявительский портал TaskPortal
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2814] Расширить ProfileManager для пользовательских настроек TaskPortal
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2821] Реализовать рабочие доски WorkflowBoard для workflow-записей
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2822] Реализовать календарные представления WorkflowCalendar для workflow-записей
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2840] Реализовать WorkflowDesigner как единую административную студию настройки workflow-проектов
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2790] Расширить Workflow* для промышленного контура задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2791] Расширить WorkflowScreen/WorkflowView для публичных ws-форм и представлений
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2793] Ввести TraceContext для сквозной трассировки операций
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2794] Реализовать системную событийную шину EventBus
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2795] Расширить Queue как runtime фоновых заданий, retry и расписаний
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2797] Расширить Security для проектных прав, полей, действий и аудита доступа
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2798] Реализовать HealthCheck для workflow-проектов и задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2799] Подготовить TestA-контракты системных JSON и end-to-end сценариев
Статус: Завершено | Автор: Ilya Mikhaylenko