EventArhitecture - hope4b/onto GitHub Wiki

Архитектура событий

Требования

  1. Реализовать возможность конфигурируемой подписки независимых модулей на события для их последующей обработки
  2. На одно и то же событие может быть подписано несколько модулей-обработчиков

Домен "Общие элементы" (Core)

Домен "Диаграмма"

Представление объекта (Representation)

Объект изменен

Событие: OBJECT_UPDATED

Используется:

API id: string name: string comment: string type: "ENTITY||NOTE" size: { x: number y: number } color: { color: string } catalogCode: { code: string } coordinates: { x: number y: number } showComment: boolean nodeId: string

Логика Модуль обеспечивающий обработку события получив на вход информацию по представлению

  1. для представлений у которых type = "NOTE" к объектам у которых нет связей с другими узлами ищет в пространстве в котором было создано представление объект с установленным шаблоном (есть связь INSTANCE_OF к узлу MetaEntity) и именем полностью равном api.name при сравнении в верхнем регистре.
  2. Если такой объект найден проверить что на диаграмме уже нет представления найденного объекта 2.1 в случае успеха
    2.1.1 подготовить и опубликовать событие updated/representation где сформировав нужный объект и дополнительно установить идентификатор найденного объекта:
  • api.nodeId - идентификатор найденного объекта 2.1.2 Созданный раннее объект с типом NOTE удалить 2.2 в случае не успеха ничего не происходит
⚠️ **GitHub.com Fallback** ⚠️