Application Settings

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

Установка

Для автоматической установки через Jmix Marketplace следуйте инструкциям в разделе Дополнения.

Для ручной установки добавьте следующие зависимости в ваш build.gradle:

implementation 'io.jmix.appsettings:jmix-appsettings-flowui-starter'
implementation 'io.jmix.appsettings:jmix-appsettings-starter'

Важное примечание для приложений в режиме меню Single mode

Если ваше приложение использует режим меню Single mode, вам следует вручную добавить пункты меню после установки дополнения.

  1. Откройте Дизайнер меню в Jmix Studio.

  2. Перейдите на вкладку Structure.

  3. Доступные пункты меню отображаются на левой панели.

    add menu items
  4. Чтобы добавить пункты:

    • Выберите нужные пункты и нажмите кнопку > кнопка (Add Selected).

    • Или перетащите их с левой панели в текущую структуру меню справа.

Этот шаг необходим, потому что приложения в режиме Single mode не выполняют автоматическое слияние меню дополнений с существующей структурой.

Пример использования

Представьте, что у вас есть сущность Customer и простая бизнес-логика:

  • Новые клиенты должны получать грейд по умолчанию (например, Bronze/Gold/Platinum) и страну по умолчанию, которые бизнес-пользователи могут изменять во время выполнения.

  • Также есть текст уведомления, который может быть использован в пользовательском интерфейсе или отчетах.

  • Все эти значения должны быть изменяемыми без перезапуска приложения.

Это можно реализовать в два этапа.

Этап 1. Определите сущность настроек

Создайте сущность, которая расширяет класс io.jmix.appsettings.entity.AppSettingsEntity:

@JmixEntity
@Table(name = "CUSTOMER_SETTINGS")
@Entity
public class CustomerSettings extends AppSettingsEntity {

    @AppSettingsDefault("B")
    @Column(name = "DEFAULT_GRADE")
    private String defaultGrade;

    @Column(name = "COUNTRY")
    private String country;

    @Column(name = "NOTIFICATION_TEXT")
    private String notificationText;

    // getters and setters

После этого в приложении в разделе Application settings бизнес-пользователи смогут редактировать defaultGrade, country и notificationText.

app settings menu view

Этап 2. Используйте настройки в бизнес-логике

Для получения настроек в коде приложения используйте бин AppSettings. Например, на экране редактирования клиента при инициализации сущности вы можете установить значения по умолчанию на основе настроек:

@Autowired
private AppSettings appSettings;

@Subscribe
public void onInitEntity(InitEntityEvent<Customer> event) {
    CustomerSettings customerSettings = appSettings.load(CustomerSettings.class);
    CustomerGrade defaultGrade = customerSettings.getDefaultGrade();

    Customer customer = event.getEntity();
    customer.setCountry(customerSettings.getCountry());
    customer.setGrade(defaultGrade);
}

После этого:

  • Когда бизнес-пользователь обновляет значение грейда по умолчанию с Bronze на Gold, все новые клиенты будут инициализированы с этим значением.

  • Когда бизнес-пользователь указывает страну по умолчанию, все новые клиенты будут инициализированы с этим значением.

app settings initialize entity

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