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