Структура и состав пакетов
Glossary Item Box
Основные сведения о пакетах
Пакет bpm'online — это совокупность конфигурационных элементов (схем, данных, скриптов, дополнительных библиотек), которые реализуют определенный блок функциональности. Физически пакет представляет собой каталог, содержащий определенный набор подкаталогов и файлов.
Любой продукт представляет собой конечный набор пакетов. Чтобы расширить или изменить функциональность продукта, нужно установить пакет, в котором реализованы все необходимые изменения.
Пакеты bpm'online условно можно разделить на два вида:
- Предустановленные пакеты. Поставляются вместе с системой и устанавливаются в рабочее пространство по умолчанию. К таким относятся пакеты с базовой функциональностью (например, Base, NUI), пакеты, расширяющие функциональность системы (например, пакеты интеграции с 1С, телефонией и т.д.), а также пакеты, созданные сторонними разработчиками. Такие пакеты устанавливаются с помощью утилиты WorkspaceConsole из zip-архивов.
- Пользовательские пакеты — пакеты, создаваемые пользователями системы. Они могут быть привязаны к хранилищу SVN.
Конфигурационные элементы из предустановленных пакетов недоступны для изменения. Разработка дополнительной функциональности и модификация существующей выполняется исключительно в пользовательских пакетах.
Плоская структура пакетов в хранилище
В bpm'online используется плоская структура пакетов. Это означает, что предназначенные для хранения различных версий проекта каталоги branches и tags находятся внутри корневого каталога пакета (рис. 1). Таким образом, упрощенно каждый пакет можно представить в виде отдельного хранилища версий проекта разработки.
Рис. 1. — Ранее используемая структура хранилища версий и плоская структура пакетов bpm'online
В отличие от ранее используемой структуры хранилища, в пакетах bpm'online не используется каталог trunk. Это связано с тем, что приложение работает только с определенной версией пакета, указываемой во время его создания или установки из хранилища. Различные версии пакетов хранятся в каталоге branches.
Версия пакета
Одной из основных характеристик пакета является его версия.
Версия указывается при создании пакета в соответствующем поле карточки пакета (рис. 2). Версия пакета может содержать цифры, символы латинского алфавита, символы "." и "_". Версия пакета должна начинаться с цифрового или буквенного символа.
Рис. 2. — Версия пакета в карточке пакета
Также версия пакета хранится в его метаданных в свойстве PackageVersion объекта, определенного в файле descriptor.json. Файл descriptor.json создается приложением для каждой версии пакета. Пример файла descriptor.json:
{ "Descriptor": { "UId": "8bc92579-92ee-4ff2-8d44-1ca61542aa1b", "PackageVersion": "7.8.0", "Name": "UsrCustomPackage", "ModifiedOnUtc": "\/Date(1477652941000)\/", "Maintainer": "Customer", "Description": "Пакет пользователя", "DependsOn": [ { "UId": "e14dcfb1-e53c-4439-a876-af7f97083ed9", "PackageVersion": "7.8.0", "Name": "SalesEnterprise" } ] } }
Все элементы пакета имеют ту же версию, что и сам пакет.
Обновление приложения сводится к обновлению установленных в системе пакетов с функциональностью пакетов более новых версий.
Структура пакета
При фиксации пакета в систему контроля версий в хранилище пакета создается папка с именем пакета, а внутри нее — каталоги branches и tags (рис. 3).
Рис. 3. — Структура пакета в SVN
В папке branches хранятся все версии данного пакета. Каждая версия хранится в отдельной вложенной папке, имя которой совпадает с номером версии пакета в системе, например, 7.8.0.
Каталог tags предназначен для хранения меток. Метки в системе управления версиями — это "снимок" проекта в определенный момент времени, статическая копия файлов, необходимая для фиксации определенного важного этапа разработки.
Рабочая копия пакета сохраняется локально в файловой системе. Путь для хранения пакетов задается в конфигурационном файле ConnectionStrings.config в атрибуте connectionString элемента defPackagesWorkingCopyPath:
<add name="defPackagesWorkingCopyPath" connectionString="TEMP\APPLICATION\WORKSPACE\TerrasoftPackages" />
По этому пути создается папка с именем пакета. Ее внутренняя структура представлена на рисунке 4.
Рис. 4. — Структура папки пакета в файловой системе
В каталоге Schemas хранятся схемы пакета. Привязанные к пакету внешние сборки, данные и SQL-сценарии содержатся, соответственно, в каталогах Assemblies, Data и SqlScripts. Все текстовые ресурсы пакета, переведенные на разные языки, вынесены в отдельный каталог Resources.
В файле descriptor.json хранятся метаданные пакета в формате JSON — его идентификатор, наименование, версия, зависимости и т.д.
Файл CommitLocker — это служебный файл, который используется в механизме блокировки пакета.