Перейти к основному содержанию
`Ctrl`+`K`

# Конфигуратор

Системное приложение «Конфигуратор» предназначено для автоматизации и ускорения выполнения рутинных задач по разработке проекта:

- создание нового проекта;

- создание нового модуля;

- работа с классами:

  - создание;

  - редактирование;

- работа с выборками:

  - создание;

  - редактирование;

- управление разметкой выборок:

  - редактор карточки;

  - редактор фреймов;

- управление подсистемой распространения изменений;

- управление технической документацией сущностей и методов проекта.

Конфигуратор предназначен для работы на локальном компьютере разработчика.

Конфигуратор взаимодействует с IDE Intellij Idea через специальный плагин.

Конфигуратор поддерживает систему контроля версий SVN.

## Запуск

Для запуска конфигуратора выполните следующие действия:

1. Запустите сервер Global:
   Выполните скрипт `C:\Global3se\start.bat` или запустите отладку в IDE Intellij Idea.

2. Откройте в браузере адрес `http://localhost:8080/`.

3. Введите логин, пароль, базу данных.

4. Разверните настройки подключения.

5. Установите флажок «Конфигуратор».

6. Войдите в систему.

## Первичная настройка

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

- логин svn;

- пароль svn;

- url svn.

Настройки сохраняются в поддиректорий конфигурации сервера Global: `C:\Global3se\application\config\cfg`

- `vcs.dat` – настройка SVN;

- `project.dat` – настройка проектов.

Если удалить эти файлы, мастер настройки автоматически запустится заново.

## Создание нового проекта

Запустите мастер создания проектов: `Проекты > Новый проект`.

### Общие настройки

- Системное имя проекта - внутреннее имя проекта, обычно совпадает с наименованием директории проекта (пример: `intern199`).

- Локальный путь до проекта - ворневая директория, в которой будет создан проект.
  Пример: `C:\SVN\ASSource\database\pgIntern\...`

### Настройки для локального режима

В локальном режиме работы требуется указать:

- параметры соединения с БД;

- шаблон проекта:

  - или путь к архиву с шаблоном проекта;

  - или каталог с существующим проектом.

### Настройки для работы через svn

Для режима работы через систему контроля версий предусмотрена расширенная конфигурация при которой надо задать параметры:

- Путь в репозитории: каталог в SVN, в который будет сохранен проект.
  Пример: `ASSource/database/pgIntern/...`

### Настройки Sbt-plugin

Sbt-plugin является расширением к системе сборки sbt (scala build tool). При настройке рекомендуется не использовать пункт «trunk-версия», а оставить предложенную версию, которая является максимальной на момент создания проекта.

### Настройки Базы данных

- Url: указывается тип драйвера и параметры подключения.
  Пример:`jdbc:postgresql://v39:5432/intern199`;

- пользователь: имя пользователя для подключения к БД;

- пароль: пароль для подключения к БД.

  Примечание

  Параметры подключения к БД можно узнать у куратора проекта или системного администратора.

### Подключаемые модули

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

### Завершение создания проекта.

1. По завершению конфигурации выполните операцию «Создать проект».
   При этом:

   - В случае работы с svn, в репозитории системы контроля версий будет создана структура каталогов проекта (каталог хранения проекта приложения, каталог хранения проектных модулей).

   - Отобразится диалог конфигурации сервера для запуска проекта .

2. Завершите конфигурацию сервера.

3. Импортируйте проект в IntelliJ IDEA.

## Модули

Интерфейс для работы с модулями проекта расположен на панели инструментов главного меню.

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

## Создание модуля

Операция позволяет создать новый модуль и подключить его к проекту.

1. На панели инструментов выполните операцию `Подключить модули > Создать новый модуль`

2. Введите:

   1. системное имя - имя модуля в нижнем регистре;

   2. наименование модуля;

   3. Проектный модуль (только для режима SVN)
      Если установить этот признак, то модуль будет создан внутри каталога проекта в подкаталоге module, и не будет доступен к подключению в других проектах. Если признак не установить, то модуль будет создан в основном каталоге модулей (`ASSource/module`) и будет доступен к подключению в других проектах.

3. Подключите модули, от которых будет зависеть создаваемый модуль.

## Обозреватель проекта

Обозреватель проекта — это отдельное окно в интерфейсе системы, которое отображает иерархическое дерево сущностей проекта. Через него можно:

- Открыть любую выборку.

- Просмотреть состав выборки (сущности, операции и другие элементы).

- Редактировать свойства операций.

Сущности в обозревателе проекта:

- классы;

- выборки;

- прикладная бизнес-логика (Api);

- пакеты прикладной бизнес-логики (Pkg).

Для открытия необходимо перейти в `Сущности - Обозреватель проекта`.

### Дерево сущностей

В дереве отображаются сущности, сгруппированные по каталогам. Для классов отображаются в качестве потомков их базовая выборка и Api.

Дерево отображается в двух режимах, которые переключаются флагами на панели фильтров:

- Логическая структура - каталоги для сущностей определяются так: если в метаданных класса, выборки или пакета указан тег `logicFolder`, то каталогом этой сущности будет указанное значение, иначе физический каталог. Пример значения: `logicFolder = "audit.test"`

- Физическая структура - каталоги для сущностей определяются их расположением внутри проекта. Например, для scala-пакета `ru.bitec.app.btk.audit.test` каталогом будет: `audit.test`

Основная закладка для всех сущностей — это «Описание», которое формируется на основе документации, которая хранится в исходном коде. Подробнее см. главу «Документирование».

### Создание новых сущностей

Реализовано создание основных сущностей:

- Класс - создает odm-файл;

- Выборка - создает avi и avm файлы;

- Пакет - создает Pkg и pkg.xml файлы;

- Описание каталога - создает package-info.java в указанном каталоге.

### Тегирование

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

Настройка доступных тегов осуществляется в главном меню `Настройка > Теги обозревателя проекта`

Для установки тегов сущности используется операция `Дополнительно > Редактировать теги`

### Документирование

Для сущностей на закладке «Описание» собирается их документация, хранящаяся в исходном коде.

Документация пишется в формате markdown.

Формирование описания по типам сущностей:

#### Класс

Документация для класса хранится в odm файле. В теге `documentation`, который доступен для:

- класса;

- атрибута.

#### Выборка

Документация для выборки хранится в Avm файле. В тег `documentation`, который доступен для:

- выборки;

- отображения;

- атрибута.

#### Api

Документация хранится в scala doc в файле Api-класса, ссылка на документацию ScalaDoc

#### Pkg

Документация хранится в:

- теге `documentation` файла pkg.xml;

- scala doc Pkg-класса, ссылка на документацию ScalaDoc.

#### Каталог

Документация хранится в package-info.java, расположенном в каталоге на диске в scala-ветке. Документация в нем так же пишется в markdown.

#### Модуль

Документация хранится в `package-info.java`, расположенном корневом каталоге scala-ветки.

### Интеграция с IntelliJ IDEA

Интеграция осуществляется через плагин для IDEA.

Позволяет открывать файлы в IDEA, которые соответствуют записям в дереве обозревателя. Для некоторых сущностей есть возможность открывать дополнительные файлы. Если не открыт текущий проект в IDEA, то будет выдано сообщение, что проект не найден.

При открытии проекта в IDEA запускается json-rpc сервер, который получает порт для прослушивания и сохраняет в структуре проекта файл `.idea/ideasocket/<номер порта>.lock`, при этом блокируя этот файл. Конфигуратор при отправлении команды на открытие файла сканирует эту директорию на наличие заблокированных файлов и получает порт, в который требуется отправлять данные.

Для открытия файла в IDE используется операция «Открыть в IDE».

Открываемые файлы по типам сущностей:

- Класс - открывает odm-файл;

- Выборка - открывает Avi-файл.
  Дополнительная подоперация позволяет открыть avm;

- Api - открывает Api-файл;

- Pkg - открывает Pkg.scala.
  Дополнительная подоперация позволяет открыть pkg.xml.

## Разработка конфигуратора

Код конфигуратора содержится в отдельном модуле. Для разработки этого модуля необходимо его настроить в режим разработки.

Конфигурация модуля происходит в файле `global3.config.xml` через тэги:

- `database` - конфигурация базы данных с именем «{DB_ALIAS}.CFG», где DB_ALIAS - имя базы, к которой идет подключение.

- `sbt` настройка модуля, содержащего исходный код конфигуратора.

### Конфигурация базы данных

Если конфигурация отсутствует, она создаётся автоматически по алгоритму:

1. Скопировать конфигурацию «{DB_ALIAS}» в «{DB_ALIAS}.CFG».

2. Заменить имя sbt на значения `cfg`:

       <metaManager sbtName="cfg"/>

### Конфигурация SBT

Если конфигурация sbt отсутствует, формируется конфигурация по умолчанию.

Шаблон конфигурации:

    <sbt name="cfg"
         jarFolder="%GLOBAL3_HOME%\server\configurator\applib\\"
         binaryFolder="%GLOBAL3_HOME%\server\configurator\appbin\\"
         sourceMode="Jar"
         lazyLoad="true">
    </sbt>

где:

- `GLOBAL3_HOME` - переменная окружения, указывающая на расположения дистрибутива. Данная переменная задается автоматически при старте сервера.

#### Конфигурация sbt для разработчика

Для разработки необходимо переопределить конфигурацию sbt по шаблону:

    <sbt name="cfg"
         source="{PATH_TO_CFG}\configurator\application\"
         sourceMode="Dev"
         lazyLoad="true">
    </sbt>

#### Алгоритм формирования для режима системной разработки

Для перехода в режим разработки:

- Задайте переменную окружения `G3_ISDEV` = `1`.

- Задайте переменную окружения `G3_SHARE` = «путь к jar архивам конфигуратора».

Шаблон генерации конфигурации в режиме системной разработки:

    <sbt name="cfg"
        jarFolder="%G3_SHARE%\cfgapplib"
        binaryFolder="%G3_SHARE%\cfgappbin"
        sourceMode="Jar"
        lazyLoad="true">
    </sbt>