Search
    Preparing search index...

    Краткое описание SDK и архитектуры

    SDK предоставляет набор инструментов и API для интеграции и кастомизации системы, позволяющий работать с её функционалом без необходимости доступа к исходному коду.

    Основу SDK составляют три ключевых компонента:

    • Набор объектов (классов, их инстансов, функций, констант и др.), экспортируемых из различных модулей приложения, и доступных конечному потребителю через глобальный объект window;
    • Набор TypeScript-типов для всех экспортируемых объектов;
    • Автоматически генерируемую документацию типов из исходных кодов.

    Данный ресурс содержит описание типов всех объектов, экспортированных в SDK, а так же следующие важные документы:

    Для работы с SDK полезно иметь представление об основных понятиях, концепциях и структурах данных, используемых в приложении, а именно:

    • Точки расширения;
    • Модели;
    • Сервисы приложения.
    • Сторы;
    • Менеджеры;

    Точки расширения

    Точки расширения (User Exits, UE) являются основным механизмом расширения функциональности приложения посредством SDK и представляют собой строго определенные места в системе, выполняемые при наступлении определенного события, которые возможно расширять/дополнять.

    Пример реализации точки расширения во внешнем модуле:

    export default {
    userExits: [
    {
    type: 'RightHeaderItem',
    moduleId: 'uniqueId',
    active:true,
    system: false,
    resolver: () => true,
    meta: {
    order: 1,
    },
    component() {
    return (
    window.Universe.Vendor.React.createElement(
    window.Universe.Platform.Uikit.Button,
    {intent: window.Universe.Platform.Uikit.INTENT.DANGER},
    Locale.i18n.t('HeaderButton>text')
    )
    );
    },
    }
    ]
    };

    Модели

    В общем виде модель является реактивным объектом, который:

    • Описывает данные — хранит структурированную информацию о предметной области (например, пользователь, запись, атрибут);
    • Управляет состоянием — хранит оригинальное состояние модели, отслеживает изменения данных;
    • Проверяет консистентность — реализует валидацию данных;
    • Синхронизирует данные с UI — observer-компоненты подписываются на @observable поля и @computed геттеры моделей — при их изменении MobX автоматически запускает перерисовку.

    Модели в приложении выступают связующим звеном между данными, интерфейсом и бизнес-логикой, обеспечивая согласованность во всём приложении.

    Все модели приложения наследуются от абстрактной модели Universe.Platform.Model.AbstractModel

    Сервисы приложения

    Сервисы приложения — это набор готовых синглтон классов, управляющих ключевыми функциями системы и предоставляющих API для работы с ними. Каждый сервис отвечает за конкретную предметную область: безопасность, маршрутизация, точки расширения и тд.

    Примеры сервисов приложения:

    Сторы

    Сторы - это контейнеры данных определенных предметных областей, построенные на MobX. Они отвечают за:

    • Хранение состояния — хранение данных предметной области (например: данные пагинации, данные сущностей);
    • Инкапсуляцию бизнес-логики — управление, обработка и связь данных (например: управление пагинацией или загрузкой);
    • Синхронизацию с UI — observer-компоненты подписываются на @observable поля и @computed геттеры сторов — при их изменении MobX автоматически запускает перерисовку.

    Интерфейсы основных сторов приложения расположены в пакете Universe.Platform.Store

    Менеджеры

    Менеджеры — это классы, отвечающие за загрузку, хранение и управление определенными типами данных. Они предоставляют удобный API для работы с данными, их преобразования и синхронизации с сервером.

    Роль в архитектуре

    • Инкапсуляция логики работы с данными — менеджеры скрывают детали загрузки и преобразования.
    • Переиспользование — общий интерфейс позволяет легко добавлять новые менеджеры.
    • Синхронизация с UI — observer-компоненты подписываются на @observable поля и @computed геттеры менеджеров — при их изменении MobX автоматически запускает перерисовку.

    Все менеджеры приложения наследуются от абстрактного Universe.Platform.Model.AbstractManager