НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2794] Реализовать системную событийную шину EventBus📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Новые возможности | 2026.3 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: Нет
Завершено: 08.09.2026 12:51
Цель Реализовать системную событийную шину EventBus для ИРБИС 128: единый механизм фиксации событий, transactional outbox, inbox, подписок, доставок, повторов, dead-letter, идемпотентности и диагностики событийных операций.
Контекст
EventBus является новым системным runtimeмодулем. Его не нужно смешивать с существующим предметным модулем мероприятий Event. EventBus не знает структуру задач, обращений или других доменных записей: модуливладельцы публикуют события и предоставляют schemas, payload profiles, handlers и resolvers.
Что Нужно Сделать
Ввести модель EventType: ключ события, владелец, версия schema, класс выполнения, retention, masking policy и правила совместимости версий.
Ввести модель EventRecord: event id, type, version, source module, object reference, actor, occurred at, trace id, idempotency key, payload, payload profile и технический статус обработки.
Реализовать publication API для синхронной фиксации критичных событий вместе с доменным действием через transactional outbox.
Реализовать outbox/inbox: событие не должно теряться при сбое доставки, повторе запроса или перезапуске worker-а.
Реализовать subscriptions: модуль или транспорт может подписаться на событие по типу, владельцу, object reference, scope и policy.
Реализовать delivery attempts: статус, время, канал, handler, результат, ошибка, next retry, количество попыток, trace id.
Реализовать retry/backoff и deadletter для событийных доставок. Deadletter должен быть видимым, диагностируемым и поддерживать безопасный ручной повтор.
Реализовать idempotency registry для защиты от повторов UI/API/webhook/Queue и повторной доставки одного и того же события.
Реализовать payload masking: секреты, персональные данные и скрытые поля не должны попадать в публичный вывод, логи и диагностические отчеты.
Реализовать интеграцию с Queue для тяжелых обработчиков, с TraceContext для диагностики, с Security для прав просмотра и с HealthCheck для проверки готовности конфигурации.
Предусмотреть providerконтракт для модулейвладельцев: регистрация типов событий, schemas, handlers, payload profiles, validation и TestA fixtures.
EventBus хранит факт события и управляет доставкой, но не выполняет доменную бизнеслогику за модульвладелец.
EventBus не является очередью произвольных задач: тяжелое выполнение должно идти через Queue.
EventBus не заменяет стандартную историю действий 907 и не является пользовательской лентой; такие представления строятся отдельными потребителями.
Критичное событие изменения состояния надежно фиксируется вместе с доменным действием или действие считается незавершенным.
Необязательная доставка не откатывает уже сохраненную запись, а уходит в retry или dead-letter.
Повтор одного и того же внешнего или пользовательского действия не создает дубликаты событий.
Администратор видит состояние outbox, inbox, delivery attempts и dead-letter с безопасной диагностикой.
Модуль-владелец может добавить новый тип события без изменения ядра EventBus.
-
Первый кодовый срез системной событийной шины EventBus.
Сделано:
Границы: EventBus не содержит доменную логику Tasks/Workflow, не заменяет Queue и транспортные модули.
Проверка: TestA EventBus safe-read: total=8, passed=8, failed=0.
[I128-2803] Рабочее место задач и внутренний API
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2805] SLA, командные очереди и ранжирование задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2806] Системные треды и публичные коммуникации Collaboration
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2807] История значимых полей FieldHistory
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2808] Защита публичных каналов AbuseProtection
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2809] Сохраненные и материализованные фильтры WorkflowFilter
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2810] Миграция VirtualRef в промышленный контур Tasks
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2811] Заявительский портал TaskPortal
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2818] Реализовать наблюдаемость Observability для промышленных модулей
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2820] Реализовать общесистемную автоматизацию Automation
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2821] Реализовать рабочие доски WorkflowBoard для workflow-записей
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2822] Реализовать календарные представления WorkflowCalendar для workflow-записей
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2824] Расширить NewsFeed для ленты проектной активности workflow-проектов
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2827] Расширить I128FMail как входящий почтовый канал задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2830] Реестр API-контрактов и профилей внешней интеграции
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2832] Политики bidirectional sync и conflict resolution в модуле API
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2838] AI-операции задач в модуле Tasks
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2839] Реализовать WorkflowApproval для формальных согласований workflow-переходов
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2840] Реализовать WorkflowDesigner как единую административную студию настройки workflow-проектов
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2793] Ввести TraceContext для сквозной трассировки операций
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2792] Зафиксировать runtime-контракт EventBus, Queue и TraceContext
Статус: Завершено | Автор: Ilya Mikhaylenko