Любой продукт Creatio представляет собой определенный набор пакетов.
Пакет Creatio — это совокупность конфигурационных элементов, которые реализуют блок функциональности. Физически пакет представляет собой папку, которая определяет набор вложенных папок и файлов.
Классификация пакетов
-
Простые пакеты:
-
— предустановленные пакеты. Являются частью приложения и по умолчанию устанавливаются в рабочее пространство. Недоступны для изменения.
Виды предустановленных пакетов:
- Пакеты с базовой функциональностью (например, Base, NUI).
- Пакеты сторонних разработчиков.
Устанавливаются из *.zip-архивов с помощью Creatio IDE или с помощью утилиты WorkspaceConsole.
- — пользовательские пакеты. Cозданы другими пользователями системы и заблокированы для изменения в системе контроля версий. Недоступны для изменения.
- — пользовательские пакеты. Созданы текущим пользователем либо загружены из системы контроля версий. Доступны для изменения.
-
- Пакет-проект — пакет, который позволяет разрабатывать функциональность, как обычный C#-проект. Подробнее читайте в статье Пакет-проект.
- Пакет-сборка — пакет, исходный и автогенерируемый код которого компилируется в отдельную сборку. В Creatio IDE пакет-сборка отображается как пользовательский пакет (). Подробнее читайте в статье Пакет-сборка.
Сравнение пакетов Creatio представлено в таблице ниже.
|
|
|
|
|
---|---|---|---|---|
|
||||
|
|
|
|
...\Terrasoft.WebApp\ |
|
||||
|
|
|
(используется внешняя IDE) |
Для .NET Framework: ...\Terrasoft.WebApp\ Для .NET Core: ...\Terrasoft.WebApp\ |
|
||||
|
(с ограничениями) |
|
|
Для .NET Framework: ...\Terrasoft.WebApp\ Для .NET Core: ...\Terrasoft.WebApp\ |
В этой статье рассматриваются простые пакеты.
Для расширения или изменения функциональности необходимо установить пакет с требуемой функциональностью. Разработка дополнительной функциональности и модификация существующей выполняется исключительно в пользовательских пакетах.
Основные пакеты приложения
К основным пакетам приложения можно отнести пакеты, которые обязательно присутствуют во всех продуктах.
|
|
---|---|
Base | Базовые схемы основных объектов, разделов системы и связанных с ними схем объектов, страниц, процессов и т. д. |
Platform | Модули и страницы мастера разделов, дизайнеров реестра и итогов и т. п. |
Managers | Клиентские модули менеджеров схем. |
NUI | Функциональность, которая связана с пользовательским интерфейсом приложения. |
UIv2 | |
DesignerTools | Схемы дизайнеров и их элементов. |
ProcessDesigner | Схемы дизайнера процессов. |
Пакет Custom
В процессе работы мастер разделов или мастер деталей создает схемы, которые необходимо сохранить в пользовательский пакет. В только что установленном приложении нет пакетов, которые доступны для изменения, а в предустановленные пакеты невозможно внести изменения. Для этого предназначен специальный предустановленный пакет Custom. Он позволяет добавлять схемы как вручную, так и с помощью мастеров.
Особенности пакета Custom:
- Пакет Custom невозможно добавить в систему контроля версий. Поэтому его схемы можно перенести на другую рабочую среду только при помощи функциональности экспорта и импорта пакетов.
- В отличие от других предустановленных пакетов, пакет Custom невозможно выгрузить в файловую систему при помощи утилиты WorkspaceConsole.
- В пакете Custom установлены зависимости от всех предустановленных пакетов приложения. При создании или установке пользовательского пакета в пакет Custom автоматически добавляется зависимость от пользовательского пакета. Таким образом пакет Custom всегда должен быть последним в иерархии пакетов.
- В зависимости пользовательских пакетов невозможно добавить пакет Custom.
Рекомендуемые варианты использования пакета Custom:
-
Не предполагается перенос изменений в другую рабочую среду.
В процессе работы мастер разделов или мастер деталей не только создает различные схемы, но и привязывает данные к текущему пакету. Для пакета Custom не предусмотрено использование стандартного механизм импорта пакетов. Поэтому если текущим пакетом является пакет Custom, то перенести привязанные данные в другой пользовательский пакет можно только с помощью запросов к базе данных. Мы настоятельно не рекомендуем использовать этот способ, поскольку изменения могут повлиять на структуру базы данных, что приведет к неработоспособности приложения.
При значительной доработке пользовательской функциональности необходимо создать пользовательский пакет с использованием системы контроля версий.
- Изменения выполняются при помощи мастеров или вручную, при этом объем изменений небольшой.
- Нет необходимости использовать систему контроля версий.
Пользовательский пакет
Чтобы выполнять разработку в пользовательском пакете, необходимо в системной настройке Текущий пакет (Current package, код CurrentPackageId) указать имя пользовательского пакета.
Структура пакета
При фиксации пакета в системе контроля версий в хранилище пакета создается папка с именем пакета.
Структура папки с именем пакета:
- Папка branches.
Назначение — хранение версий текущего пакета. Версия пакета — отдельная вложенная папка, имя которой совпадает с номером версии пакета в системе (например, 7.18.0).
- Папка tags.
Назначение — хранение меток. Метки в системе контроля версий — это "снимок" проекта в определенный момент времени, статическая копия файлов, необходимая для фиксации этапа разработки.
В Creatio по умолчанию включен режим работы с системой контроля версий SVN. Для настройки работы с SVN необходимо изменить значение атрибута connectionString настройки defPackagesWorkingCopyPath конфигурационного файла ConnectionStrings.config. Эта настройка содержит путь к каталогу на диске, в котором размещаются рабочие копии.
В режиме работе с SVN приложение Creatio использует собственную рабочую копию каждого пользовательского пакета, для которого подключена версионность. Содержимое рабочей копии представляет собой пользовательские пакеты в виде набора папок и файлов. SVN-клиент, который встроен в Creatio, синхронизирует это содержимое с SVN-репозиторием. В качестве значения настройки defPackagesWorkingCopyPath рекомендуется установить путь на фиксированный каталог, поскольку временный каталог, который установлен по умолчанию, может быть очищен операционной системой. Для приложения Creatio на платформе .NET Framework в качестве каталога для хранения рабочих копий запрещено указывать ...\Terrasoft.WebApp\Terrasoft.Configuration\Pkg.
Структура папки пакета в файловой системе:
- Папка 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 создается приложением для каждой версии пакета.
Привязка данных к пакету
При переносе изменений между рабочими средами вместе с разработанной функциональностью необходимо предоставлять некоторые данные.
Элементы, которые Creatio позволяет привязать к пакету:
- Конфигурационные элементы типа Данные (Data), которые сгенерированы мастером раздела.
- Наполнение справочников и разделов.
- Системные настройки.
- Дашборды.
- Отчеты.
Привязка данных мастером разделов
При создании раздела с помощью мастера разделов к пакету автоматически привязываются данные, которые необходимы для регистрации и корректной работы раздела.
Привязка наполнения справочников и разделов
Привязка наполнения раздела подразумевает привязку к пакету его демонстрационных записей. При выполнении привязки наполнения пользовательского справочника (раздела) выполняется привязка данных пользовательского объекта, на основе которого построен соответствующий справочник (раздел).
Чтобы привязать данные пользовательского объекта:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
-
На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- Объект (Object) — выберите объект, данные которого необходимо привязать к пакету.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- На вкладке Привязанные данные (Bound data) выберите записи, которые необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Привязка системных настроек
Привязка к пакету системной настройки подразумевает выполнение привязки кода и значения системной настройки.
Чтобы привязать код системной настройки:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "SysSettings". Это таблица базы данных, которая хранит коды системных настроек приложения.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- Используя фильтр по названию, на вкладке Привязанные данные (Bound data) выберите код системной настройки, которую необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Чтобы привязать значение системной настройки:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "SysSettingsValue". Это таблица базы данных, которая хранит значения системных настроек приложения.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- Используя фильтр по названию, на вкладке Привязанные данные (Bound data) выберите значение системной настройки, которую необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Привязка дашбордов
Creatio предоставляет возможность добавить дашборд на страницу записи раздела. Для переноса реализованной функциональности между рабочими средами необходимо выполнить привязку дашборда к пользовательскому пакету.
Чтобы привязать дашборд:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "SysDashboard". Это таблица базы данных, которая хранит связи дашбордов с разделами приложения.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- Используя фильтр по разделу, на вкладке Привязанные данные (Bound data) выберите дашборд, который необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Привязка отчетов Word
Привязка к пакету отчета Word подразумевает выполнение привязки печатной формы и табличной части отчета.
Чтобы привязать печатную форму отчета Word:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "SysModuleReport". Это таблица базы данных, которая хранит настроенные печатные формы.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- На вкладке Привязанные данные (Bound data) выберите отчет, который необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Чтобы привязать табличную часть отчета Word:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "SysModuleReportTable". Это таблица базы данных, которая хранит табличную часть отчетов Word.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- На вкладке Привязанные данные (Bound data) выберите отчет, который необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Привязка отчетов FastReport
Привязка к пакету отчета FastReport подразумевает выполнение привязки шаблона, источника данных и печатной формы отчета.
Чтобы привязать шаблон отчета FastReport:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "FastReportTemplate". Это таблица базы данных, которая хранит шаблоны отчетов FastReport.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- На вкладке Привязанные данные (Bound data) выберите отчет, который необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Чтобы привязать источник данных отчета FastReport:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "SysModuleReportTable". Это таблица базы данных, которая хранит источники данных отчетов FastReport.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- На вкладке Привязанные данные (Bound data) выберите отчет, который необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
Чтобы привязать печатную форму отчета FastReport:
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, к которому необходимо привязать данные.
- На панели инструментов рабочей области нажмите кнопку Добавить —> Данные (Add —> Data).
- Заполните свойства страницы привязки данных:
- В поле Объект (Object) выберите "SysModuleReport". Это таблица базы данных, которая хранит настроенные печатные формы.
- На вкладке Настройка колонок (Columns setting) выберите все колонки, которые содержат данные объекта.
- На вкладке Привязанные данные (Bound data) выберите отчет, который необходимо привязать к пакету.
- На панели инструментов страницы привязки данных нажмите Сохранить (Save).
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. После установки пакета в другую рабочую среду все привязанные записи отобразятся в соответствующих разделах.