Skip to content

UiSharedState #7

@burningrain

Description

@burningrain

Для согласования состояний ui-plugin-ов помимо отправки событий возникнут моменты, когда будет необходимо сохранять состояние, которое необходимо передавать между различными ui-plugin-ами. Предполагается решать эту проблему с помощью еще одного модуля (н-р, назовем его SharedState), через который будет происходить чтение/запись некоторых ui-данных.

Требования:

  • изменение в ui-plugin-е не должно требовать пересборки этого модуля (SharedState)
  • возможность перелезть на другую бд нам не важна. ui-plugin-ы не будут использоваться в недесктопной версии приложения (по причине тесной связи с javafx-классами).
  • завязывать модели на этот модуль строго не рекомендуется.

Решение:
Это означает, что решения типа jooq не подходят. Предпочтительна разработка от бизнес-логики, а не базы. Также это означает, что по причине слабой, но зависимости ui-plugin-ов друг от друга (сильную не делаем, чтобы один плагин не вешал другой) между ними может возникать несочетаемость. Это тоже надо учитывать при разработке ui-plugin-а.

  1. Новые entity будут подкладываться к SharedState через osgi-fragments, и находиться в пакете с конкретно-заданном названием
  2. Накатка базы create-update происходит каждый раз при старте модуля SharedState. Модуль находит все entity в конкретном пакете и по ним накатывает бд.
  3. Наружу выставляется api, которое скрывает часть работы с бд. Т.е. все entity и часть функционала для запросов.

Необходимо рассмотреть за и против в плане:

  • реляционное решение: "hibernate+h2/hypersonic" или подобное
  • нереляционное: "Xodus от JetBrains" или подобное

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions