# Список модулей

Система представляет собой многомодульное приложение, выполненное с использованием технологии OSGi на платформе JaBricks. Согласно данной технологии главным «стержнем» системы является фреймворк (framework) – это бандл, который может подключить другие бандлы в общую систему. Бандл представляет собой jar-модуль с определенными настройками, указанными в манифесте (META-INF/MANIFEST.MF). Модули (бандлы) системы могут общаться друг с другом только через фреймворк, используя механизм «публикации-подписки». Если известна структура (интерфейс и методы) бандла, то программист может из одного бандла вызывать методы другого. Бандл можно стартовать динамически через фреймворк без перезагрузки всего приложения.

Платформа JaBricks включает базовые модули, библиотеки и утилиты, позволяющие формировать многомодульное приложение из различных бандлов. Справочник «Список модулей», представленный на скриншоте, содержит перечень модулей, где главный модуль приложения, созданный с использованием фреймворка, подключает к системе остальные модули. Физически модули системы размещаются в директории modules; справочник же показывает главному модулю какие бандлы можно использовать в системе. Большинство модулей используют объекты БД (таблицы, процедуры функции и т.д) для хранения и представления информации системы. Связь бандлов с БД представлена в справочнике Серверные объекты модулей.

Интерфейс справочника включает таблицу со списком модулей, панель инструментов и панель редактирования справа.

## Панель редактирования

На панеле редактирования размещаются компоненты описания выделенной в таблице записи (модуля), либо формирования новой записи. Выделенные жирным шрифтом компоненты обязательные к заполнению.

Наименование модуля
Наименование модуля, т.е. jar-файл – это обязательное для заполнения поле. Однако, поле заполняется не вручную. Необходимо кнопкой открыть стандартное окно выбора файла, где следует выбрать модуль. Размер файла и Дата изменения связаны с выбранным модулем.

Symbolic name
Каждый модуль имеет 3 параметра GAV, обозначающих GroupId, ArtifactId, Version. Объединение GroupId и ArtifactId обозначают как Symbolic name. Обязательное для заполнения поле.

Раздел приложения
Модули объединяются по группам, именуемыми Разделами приложения. Это чисто условно, поскольку часто модуль можно отнести к разным разделам. Обязательное для заполнения поле.

Заголовок
Интерфейсные модули, которые отображаются на вкладке главного модуля, имеют заголовки. Заголовок – это не обязательный параметр модуля; утилиты и библиотеки, используемые разными модулями, не имеют заголовка.

Старт модуля
Модуль может иметь опцию, определяющую тип старта. Утилиты и библиотеки не имеют такой опции, поскольку они используются разработчиками, знакомыми с их интерфейсами и методами. В качестве примера можно посмотреть на описание утилиты бухгалтерского учета util-accounting, либо на библиотеку бухгалтерских форм accounting-forms.

Системные модули могут иметь опцию start, согласно которой главный модуль приложения при старте сразу же их запускает. Такие модули могут обеспечивать другие модули необходимой информацией. В качестве примера можно выделить модули фреймворка, которые решают задачи логирования и реализации механизма Публикация/Подписка.

Интерфейсные модули, занимающиеся представлением и обработкой определенной информации, могут стартовать динамически, т.е. по требованию. Такие модули связаны с определенным пунктом главного меню, либо с какой-нибудь кнопкой или ссылкой других модулей. Для старта динамически необходимо выбрать опцию dynamic.

Один из модулей приложения должен быть главным с опцией main. Данный модуль является «дирижером» всего оркестра. Именно данный модуль формирует основное окно системы, предоставляет место (вкладки) интерфейсным модулям при их старте. Для вызова интерфейсных модулей главный бандл формирует меню.

В системе предполагается только один главный модуль, который можно изменить. При смене главного модуля, либо при добавлении нового модуля в качестве главного, будет открыто окно с подтверждением выполнения данной операции.

Активность
Флаг активности разрешает главному модулю включить бандл в систему.

### Панель инструментов

Панель инструментов располагается в титульной панели справа; интерфейс представлен на следующем скриншоте.

Панель инструментов включает :

- кнопку создания нового модуля ;
- текстовый компонент фильтра;
- кнопку фильтрации ;
- кнопку сброса фильтра ;
- кнопку открытия Справочной страницы .

Кнопкой выполняется подготовка к созданию новой записи в справочнике для его подключения к системе. При этом очищаются компоненты панели редактирования и сбрасывается выделение записи в таблице.

## Фильтр

Фильтр включает текстовый компонент (шаблон) и две кнопки. Кнопка сброса фильтра сначала деактивирована. При нажатии на кнопку фильтрации в таблицу загружаются только модули, Наименование или Symbolic name или Раздел приложения которых удовлетворяет значению в шаблоне. При этом, кнопка сброса фильтра активируется, позволяя отменить фильтрацию записей.

## Сохранение и удаление

Кнопками управления (Добавить, Сохранить, Удалить) запись модуля сохраняется/удаляется в справочнике. При нажатии на кнопку добавления формируется запись с новым модулем в системе. Перед добавлением/обновлением записи программа проверяет полноту заполнения формы и отсутствие дублирование записи.

На заметку. Файл модуля регитсрируется в системе (записывается в базу данных) администратором (пользователем с соответствующими правами). После его подключения к системе остальные пользователи получают к нему доступ через базу данных.