Любой продукт Creatio представляет собой определенный набор пакетов.
Пакет Creatio — это совокупность конфигурационных элементов, которые реализуют блок функциональности. Физически пакет представляет собой папку, содержащую определенный набор вложенных папок и файлов.
Классификация пакетов
Типы пакетов:
-
— предустановленные пакеты. Являются частью приложения и по умолчанию устанавливаются в рабочее пространство. Недоступны для изменения.
Виды предустановленных пакетов:
- Пакеты с базовой функциональностью (например, Base, NUI).
- Пакеты сторонних разработчиков.
Устанавливаются из *.zip-архивов с помощью Creatio IDE или с помощью утилиты WorkspaceConsole.
- — пользовательские пакеты. Cозданы другими пользователями системы и заблокированы для изменения в системе контроля версий. Недоступны для изменения.
- — пользовательские пакеты. Созданы текущим пользователем либо загружены из системы контроля версий. Доступны для изменения.
Для расширения или изменения функциональности необходимо установить пакет с требуемой функциональностью. Разработка дополнительной функциональности и модификация существующей выполняется исключительно в пользовательских пакетах.
Основные пакеты приложения
К основным пакетам приложения можно отнести пакеты, которые обязательно присутствуют во всех продуктах.
Название пакета | Описание |
---|---|
Base | Базовые схемы основных объектов, разделов системы и связанных с ними схем объектов, страниц, процессов и т. д. |
Platform | Модули и страницы мастера разделов, дизайнеров реестра и итогов и т. п. |
Managers | Клиентские модули менеджеров схем. |
NUI | Функциональность, связанная с пользовательским интерфейсом системы. |
UIv2 | |
DesignerTools | Схемы дизайнеров и их элементов. |
ProcessDesigner | Схемы дизайнера процессов. |
Пакет Custom
В процессе работы мастер разделов или мастер деталей создает схемы, которые необходимо сохранить в пользовательский пакет. В только что установленном приложении нет пакетов, доступных для изменения, а в предустановленные пакеты невозможно внести изменения. Для этого предназначен специальный предустановленный пакет Custom. Он позволяет добавлять схемы как вручную, так и с помощью мастеров.
Особенности пакета Custom:
- Пакет Custom невозможно добавить в систему контроля версий. Поэтому его схемы можно перенести на другую рабочую среду только при помощи функциональности экспорта и импорта пакетов.
- В отличие от других предустановленных пакетов, пакет Custom невозможно выгрузить в файловую систему при помощи утилиты WorkspaceConsole.
- В пакете Custom установлены зависимости от всех предустановленных пакетов приложения. При создании или установке пользовательского пакета в пакет Custom автоматически добавляется зависимость от пользовательского пакета. Таким образом пакет Custom всегда должен быть последним в иерархии пакетов.
- В зависимости пользовательских пакетов невозможно добавить пакет Custom.
Рекомендуемые варианты использования пакета Custom:
- Не предполагается перенос изменений в другую рабочую среду.
В процессе работы мастер разделов или мастер деталей не только создает различные схемы, но и привязывает данные к текущему пакету. Для пакета Custom не предусмотрено использование стандартного механизм импорта пакетов. Поэтому если текущим пакетом является пакет Custom, то перенести привязанные данные в другой пользовательский пакет можно только с помощью запросов к базе данных. Мы настоятельно не рекомендуем использовать этот способ, поскольку изменения могут повлиять на структуру базы данных, что приведет к неработоспособности приложения.
При значительной доработке пользовательской функциональности необходимо создать пользовательский пакет с использованием системы контроля версий.
- Изменения выполняются при помощи мастеров или вручную, при этом объем изменений небольшой.
- Нет необходимости использовать систему контроля версий.
Пользовательский пакет
Чтобы выполнять разработку в пользовательском пакете, необходимо в системной настройке Текущий пакет (код CurrentPackageId) указать имя пользовательского пакета.
Структура пакета
При фиксации пакета в системе контроля версий в хранилище пакета создается папка с именем пакета.
Структура папки с именем пакета:
- Папка branches.
Назначение — хранение версий текущего пакета. Версия пакета — отдельная вложенная папка, имя которой совпадает с номером версии пакета в системе (например, 7.18.0).
- Папка tags.
Назначение — хранение меток. Метки в системе контроля версий — это "снимок" проекта в определенный момент времени, статическая копия файлов, необходимая для фиксации этапа разработки.
Рабочая копия пакета сохраняется локально в файловой системе. Путь для хранения пакетов задается в конфигурационном файле ConnectionStrings.config в атрибуте connectionString элемента defPackagesWorkingCopyPath.
Структура папки пакета в файловой системе:
- Папка Schemas — содержит схемы пакета.
- Папка Assemblies — содержит внешние сборки, привязанные к пакету.
- Папка Data — содержит данные, привязанные к пакету.
- Папка SqlScripts — содержит SQL-сценарии, привязанные к пакету.
- Папка Resources — содержит локализованные ресурсы пакета.
- Папка Files — содержит файловый контент пакета.
- Файл descriptor.json — хранит метаданные пакета в формате JSON. К метаданным пакета относятся идентификатор, наименование, версия, зависимости и т. д.
Зависимости и иерархия пакетов
Разработка приложения Creatio базируется на основных принципах проектирования программного обеспечения, в частности, принципа отсутствия повторений (DRY).
В архитектуре Creatio этот принцип реализован с помощью зависимостей пакетов. Каждый пакет содержит определенную функциональность приложения, которая не должна повторяться в других пакетах. Чтобы такую функциональность можно было использовать в другом пакете, необходимо пакет, содержащий эту функциональность, добавить в зависимости пакета, в котором она будет использована.
Виды зависимостей:
- Чтобы текущий пакет наследовал всю функциональность приложения, в качестве родительского пакета необходимо выбрать пакет, который в иерархии находится следующим после пакета Custom.
- Чтобы текущий пакет наследовал функциональность пакета, в качестве родительского пакета необходимо выбрать пакет, функциональность которого необходимо наследовать.
Пакет может иметь несколько зависимостей. Например, в пакете С установлены зависимости от пакетов А и D. Таким образом, вся функциональность пакетов А и D доступна в пакете С.
Зависимости пакетов формируют иерархические цепочки. Это означает, что в пакете доступна не только функциональность дочернего пакета, но и функциональность всех пакетов, для которых дочерний пакет является родительским. Ближайшей аналогией иерархии пакетов является иерархия наследования классов в объектно-ориентированном программировании. Так, например, в пакете Е доступна функциональность не только пакета C, от которого он зависит, но и функциональность пакетов А, В и D. А в пакете F доступна функциональность пакетов B и D.
Иерархия пакетов приложения
Иерархия и зависимости пакетов отображены на диаграмме зависимостей пакетов. Чтобы открыть диаграмму:
- Перейдите в раздел Конфигурация (Configuration).
- В выпадающем списке Действия (Actions) панели инструментов в группе Пакеты (Packages ) выберите Диаграмма зависимостей пакетов (Package dependencies diagram).
Диаграмма зависимостей будет открыта в новой вкладке.
Если кликнуть по узловому элементу диаграммы с именем пакета, то в виде анимированных стрелок отобразятся связи с другими пакетами. Например, в продукте SalesEnterpise пакет SalesEnterpriseSoftkey_Obsolete зависит только от пакета SalesEnterpise и всех его родительских пакетов. Также пакет SalesEnterpriseSoftkey_Obsolete является родительским для пакета Custom.
Добавление зависимостей пакета
Зависимости можно добавить в пользовательский пакет при создании пакета или уже после него.
Чтобы добавить зависимости:
- Перейдите на страницу пакета.
- На вкладке Зависимости (Dependencies) на детали Зависит от пакетов (Depends on packages) нажмите кнопку Добавить (Add).
- В появившемся окне справочника пакетов выберите необходимый пакет и нажмите кнопку Выбрать (Select).
После этого выбранный пакет будет отображен в списке зависимостей текущего пакета, а при добавлении новой зависимости он будет скрыт из справочника пакетов.
После создания пакет автоматически добавляется в зависимости предустановленного пакета Custom.
Список зависимостей в метаданных пакета
Список зависимостей хранится в метаданных пакета, которые можно посмотреть в свойстве DependsOn объекта, определенного в файле descriptor.json.
Свойство DependsOn — массив объектов, в которых указывается имя пакета, его версия и уникальный идентификатор, по которому можно определить пакет в базе данных приложения. Файл descriptor.json создается приложением для каждой версии пакета.
Привязка данных к пакету
При переносе изменений между рабочими средами часто возникает необходимость вместе с разработанной функциональностью предоставлять некоторые данные. Это может быть, например, наполнение справочников, новые системные настройки, демонстрационные записи раздела и т. д.
При создании раздела с помощью мастера к пакету автоматически привязываются данные, необходимые для регистрации и корректной работы раздела.
Привязать необходимые данные к пакету, содержащему разработанную функциональность, можно в разделе Конфигурация (Configuration).
1. Создать пакет
- Перейдите в дизайнер системы по кнопке .
- В блоке Конфигурирование разработчиком (Admin area) перейдите по ссылке Управление конфигурацией (Advanced settings).
- В области работы с пакетами нажмите кнопку .
2. Заполнить свойства пакета
При нажатии на кнопку будет отображена карточка пакета, в которой необходимо заполнить свойства пакета.
Свойства пакета:
- Название (Name) — название пакета (обязательное свойство). Не может совпадать с названием существующих пакетов.
- Описание (Description) — описание пакета, например, расширенная информация о функциональности, которая будет реализована в пакете.
- Хранилище системы контроля версий (Version control system repository) — название хранилища системы контроля версий, в котором будут фиксироваться изменения пакета (обязательное свойство). Хранилища, которые находятся в перечне хранилищ конфигурации, но не помечены как активные, не попадут в выпадающий список доступных хранилищ.
- Версия (Version) — версия пакета (обязательное свойство). Версия пакета может содержать цифры, символы латинского алфавита и знаки "." и "_". Добавляемое значение должно начинаться с цифры или буквы. Все элементы пакета имеют ту же версию, что и сам пакет. Указываемая версия пакета не обязательно должна совпадать с фактической версией приложения.
Содержимое свойств пакета будет сохранено в метаданных пакета.
Кроме указанных выше свойств, метаданные пакета содержат информацию о зависимостях (свойство DependsOn) и информацию о разработчике (Maintainer). Значение свойства Maintainer устанавливается с помощью системной настройки Издатель (код Maintainer).
3. Определить зависимости пакета
Чтобы текущий пакет наследовал функциональность приложения, необходимо определить зависимости пакета.
Чтобы добавить зависимости пакета:
- В карточке пакета нажмите кнопку Создать и добавить зависимости (Create and add dependencies).
- На вкладке Зависимости (Dependencies) в детали Зависит от пакетов (Depends on packages) установите необходимые зависимости. Чтобы текущий пакет наследовал всю функциональность приложения, в качестве родительского пакета необходимо выбрать пакет, который в иерархии находится следующим после пакета Custom.
4. Проверить зависимости пакета Custom
В пакете Custom должны быть установлены зависимости от всех пакетов приложения. Поэтому необходимо удостовериться в том, что в нем установлена зависимость от созданного пакета.
1. Создать раздел
В нашем примере в мастере разделов предварительно был создан раздел Книги (Books). Поля раздела представлены в таблице.
Создание раздела подробно рассмотрено в статье Создать новый раздел.
2. Добавить в раздел демонстрационные записи
Чтобы добавить записи в реестр раздела Книги (Books):
- В разделе Контакты (Contacts) добавьте запись и заполните поле ФИО (Full name) значением "David Flanagan".
- В разделе Контакты (Contacts) добавьте запись и заполните поле ФИО (Full name) значением "Andrew Troelsen".
- В разделе Контрагенты (Accounts) добавьте запись и заполните поле Название (Name) значением "Apress".
- Добавьте книгу JavaScript: The Definitive Guide: Activate Your Web Pages:
- Перейдите в раздел Книги (Books).
- Нажмите Добавить (New).
- Заполните поля карточки книги:
- Название (Name) — "JavaScript: The Definitive Guide: Activate Your Web Pages".
- ISBN — "978-0596805524".
- Автор (Author) — выберите "David Flanagan".
- Издатель (Publisher) — выберите "Apress".
- Стоимость (Price) — "33.89".
- Аналогичным образом добавьте книгу Pro C# 7: With .NET and .NET Core.
Реестр раздела Книги (Books) представлен на рисунке ниже.
3. Привязать к пакету данные
Поскольку записи раздела Книги (Books) связаны с записями раздела Контакты (Contacts) по колонке UsrAuthor, то сначала необходимо привязать к пакету сведения об авторах.
Чтобы выполнить привязку данных к пакету:
- Выполните привязку контактов:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет.
- На панели инструментов рабочей области нажмите кнопку Добавить (Add) и выберите в списке вид конфигурационного элемента Данные (Data).
- Заполните свойства страницы привязки данных:
- Название (Name) — "ContactsInBooks".
- Объект (Object) — "Контакт" ("Contact").
- Тип установки (Installation type) — "Установка" ("Installation").
- На вкладке Прикрепленные данные (Bound data) выберите записи, которые в колонке ФИО (Full name) содержат значения "David Flanagan" и "Andrew Troelsen".
- Сохраните данные.
- Выполните привязку контрагента:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет.
- На панели инструментов рабочей области нажмите кнопку Добавить (Add) и выберите в списке вид конфигурационного элемента Данные (Data).
- Заполните свойства страницы привязки данных:
- Название (Name) — "AccountsInBooks".
- Объект (Object) — "Контрагент" ("Account").
- Тип установки (Installation type) — "Установка" ("Installation").
- На вкладке Прикрепленные данные (Bound data) выберите запись, которая в колонке Название (Name) содержит значение "Apress".
- Сохраните данные.
- Выполните привязку книг:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет.
- На панели инструментов рабочей области нажмите кнопку Добавить (Add) и выберите в списке вид конфигурационного элемента Данные (Data).
- Заполните свойства страницы привязки данных:
- Название (Name) — "Books".
- Объект (Object) — "UsrBooks".
- Тип установки (Installation type) — "Установка" ("Installation").
- На вкладке Прикрепленные данные (Bound data) выберите записи, которые в колонке Название (Name) содержат значения "JavaScript: The Definitive Guide: Activate Your Web Pages" и "Pro C# 7: With .NET and .NET Core".
- Сохраните данные.
4. Проверить привязки данных
В результате выполнения примера к пользовательскому пакету будут привязаны данные разделов "Книги" ("Books"), "Контакты" ("Contacts"), "Контрагенты" ("Accounts").
Теперь пакет полностью готов для переноса между рабочими средами с помощью механизма экспорта и импорта пакетов Creatio IDE. После установки пакета в другую рабочую среду все привязанные записи отобразятся в соответствующих разделах.