Зависимости пакетов
Glossary Item Box
Общие сведения
Разработка приложения Creatio базируется на основных принципах проектирования программного обеспечения, в частности, принципа отсутствия повторений (DRY). В архитектуре Creatio этот принцип был применен к механизму пакетов и реализован с помощью зависимостей пакетов друг от друга. Каждый пакет содержит определенную функциональность приложения, которая не должна повторяться в других пакетах. Для того чтобы такую функциональность можно было использовать в любом другом пакете, необходимо пакет, содержащий эту функциональность, добавить в зависимости пакета, в котором она будет использована.
Зависимости и иерархия пакетов
Пакет может иметь несколько зависимостей. Например, в пакете С (рис. 1) установлены зависимости от пакетов А и D. Таким образом, вся функциональность пакетов А и D доступна в пакете С.
Рис. 1. — Зависимости и иерархия пакетов
Зависимости пакетов формируют иерархические цепочки. Это означает, что в пакете доступна не только функциональность пакета, добавленного в зависимости текущего, но и функциональность всех пакетов, от которых зависит пакет, добавленный в зависимости текущего. Ближайшей аналогией иерархии пакетов является иерархия наследования классов в объектно-ориентированном программировании. Так, например, в пакете Е (рис. 1) доступна функциональность не только пакета C, от которого он зависит, но и функциональность пакетов А, В и D. А в пакете F доступна функциональность пакетов B и D.
Добавление зависимостей пакета
Зависимости можно добавить только в пользовательский пакет и только после его создания. Для этого необходимо в карточке пакета на детали [Зависит от пакетов] ([Depends on packages]) (рис. 2) нажать на кнопку [Добавить] ([Add]) (1). В появившемся диалоге справочника пакетов необходимо выбрать нужный пакет (2) и нажать на кнопку [OK] (3).
Рис. 2. — Добавление зависимости в пользовательский пакет
После этого выбранный пакет будет отображен в списке зависимостей текущего пакета, а при добавлении новой зависимости он будет скрыт из справочника пакетов (рис. 3).
Рис. 3. — Добавленный пакет-зависимость
После создания пакета он автоматически добавляется в зависимости предустановленного пакета [Custom] (рис. 4).
Рис. 4. — Вкладка, отображающая зависящие пакеты
Список зависимостей в метаданных
Список зависимостей пакета хранится в его метаданных в свойстве DependsOn объекта, определенного в файле descriptor.json. Свойство DependsOn является массивом объектов, в которых указывается имя пакета, его версия и уникальный идентификатор, по которому можно определить пакет в базе данных приложения. Файл descriptor.json создается приложением для каждой версии пакета. Пример файла descriptor.json:
{ "Descriptor": { "UId": "51b3ed42-678c-4da3-bd16-8596b95c0546", "PackageVersion": "7.8.0", "Name": "UsrDependentPackage", "ModifiedOnUtc": "\/Date(1522653150000)\/", "Maintainer": "Customer", "DependsOn": [ { "UId": "e14dcfb1-e53c-4439-a876-af7f97083ed9", "PackageVersion": "7.8.0", "Name": "SalesEnterprise" } ] } }
Иерархия пакетов приложения
Иерархию и зависимости пакетов приложения удобно исследовать, используя диаграмму зависимостей пакетов. Эта диаграмма расположена на вкладке [Зависимости пакетов] ([Package Dependencies]) раздела [Конфигурация] (рис. 5).
Рис. 5. — Фрагмент диаграммы иерархии зависимостей пакетов
Если кликнуть по узловому элементу диаграммы с именем пакета, то с помощью анимированных стрелок отобразятся связи с пакетами, которые зависят от выбранного, и от которых зависит выбранный пакет. Например, для продукта SalesEnterpise, пакет [UsrDependentPackage] зависит только от пакета [SalesEnterpise] и всех его зависимостей (Рис. 4). Также от него зависит пакет [Custom].
Основные пакеты приложения
К основным пакетам приложения можно отнести пакеты, которые обязательно присутствуют во всех продуктах. Краткий перечень таких пакетов приведен в таблице 1.
Табл. 1. — Основные пакеты приложения
Название пакета | Содержимое |
---|---|
Base | Базовые схемы основных объектов, разделов системы и связанных с ними схем объектов, страниц, процессов и др. |
Platform | Модули и страницы мастера разделов, дизайнеров реестра и итогов и т. п. |
Managers | Клиентские модули менеджеров схем. |
NUI | Функциональность, связанная с пользовательским интерфейсом системы. |
UIv2 | Функциональность, связанная с пользовательским интерфейсом системы. |
DesignerTools | Схемы дизайнеров и их элементов. |
ProcessDesigner | Схемы дизайнера процессов. |