Пакет-сборка

Сложный
PDF

Пакет-сборка — пакет, исходный и автогенерируемый код которого компилируется в отдельную сборку. Начиная с версии Creatio 8 Atlas при создании нового пакета по умолчанию создается пакет-сборка. Это позволяет быстрее и удобнее переносить изменения между средами.

Назначение пакета-сборки:

  • Увеличение скорости разработки за счет снижения времени компиляции, поскольку компилируется только пакет-сборка.
  • Увеличение скорости поставки функциональности за счет отсутствия необходимости компиляции, поскольку пакет-сборка содержит в себе предварительно скомпилированную часть.

Особенности пакета-сборки:

  • Не поддерживается доступ к объектам по протоколу OData версии 3. Для доступа к объектам в пакете-сборке используется протокол OData версии 4. Протокол OData описан в статье OData.
  • Не допускается реализация бизнес-логики объектов через событийные подпроцессы дизайнера объекта. Для работы с событийной моделью необходимо использовать EntityEventListener. Набор событий EntityEventListener не полностью соответствует событийной модели, доступной через Creatio IDE. Событийный слой Entity описан в статье Бизнес-логика объектов.
  • В C#-коде пакетов не допускается использование типов Entity (например, приведение к этим типам), создание экземпляров этих типов через оператор new или при помощи рефлексии. Не зависимо от того, где создана эта Entity.
  • Новые колонки и методы объектов Entity, которые размещены в пакете-сборке, не доступны через базовый класс Entity (например, ColumnValues.GetByName(nameValues)).
  • Типы текущего пакета-сборки не доступны в конфигурации и доступны для других пакетов-сборок, которые зависят от текущего.

Структура и зависимости пакета-сборки 

Структура пакета-сборки в файловой системе не отличается от структуры простого пакета. Основное отличие пакета-сборки от простого пакета — значение свойств Type (тип пакета) и ProjectPath (относительный путь от корневого каталога пакета к файлу проекта пакета-сборки) файла descriptor.json. Структура простого пакета описана в статье Общие принципы работы с пакетами.

Вспомогательные файлы пакета-сборки создаются или актуализируются:

  • При выгрузке пакета-сборки в файловую систему, если режим разработки в файловой системе включен.
  • При компиляции пакета-сборки, если режим разработки в файловой системе выключен.
  • При фиксации пакета-сборки в системе контроля версий, независимо от статуса режима разработки в файловой системе.

Вспомогательные файлы пакета-сборки:

  • [Имя пакета].csproj — файл проекта, который содержит компилируемое содержимое пакета-сборки.
  • Directory.Build.targets — файл, который используется для исключения содержимого пакета-сборки из компиляции основной конфигурации.

Пакет-сборка позволяет ссылаться на внешние сборки.

Чтобы для пакета-сборки настроить ссылку на внешнюю сборку:

  1. Откройте файл [Имя пакета].csproj пакета-сборки.
  2. Добавьте необходимую внешнюю сборку в любую секцию файла. Исключением является секция Label="Package References", содержимое которой генерируется автоматически.

Пример настройки ссылок на Quartz и внешнюю библиотеку, которая содержится в каталоге ...\Terrasoft.Configuration\Lib приведен ниже.

Пример настройки ссылок на внешние сборки
<ItemGroup Label="3rd Party References">
    <Reference Include="Quartz">
        <HintPath>$(CoreLibPath)\Quartz.dll</HintPath>
        <Private>false</Private>
    </Reference>
    <Reference Include="ClassLibrary2">
        <HintPath>$(ConfLibPath)/ClassLibrary2.PackageName.dll</HintPath>
        <SpecificVersion>False</SpecificVersion>
        <Private>False</Private>
    </Reference>
</ItemGroup>

Содержимое файла [Имя пакета].csproj пакета-сборки допускается менять вручную. Исключением является секция Label="Package References", содержимое которой генерируется автоматически.

При компиляции через Creatio IDE TargetFramework проекта соответствует TargetFramework ядра. При компиляции через внешнюю IDE используется значение по умолчанию "net472", которое при необходимости можно изменить.

В отличие от основного проекта конфигурации, в проект пакета-сборки не включены сторонние библиотеки. Для работы со сторонними библиотеками в файл проекта пакета-сборки подключите абстракции ядра или внешние сборки пакета.

Секции со ссылками, которые содержатся в пакете-сборке:

  • Системные библиотеки.
  • Внешние сборки пакета (<ItemGroup Label="Package Assembly References"></ItemGroup>).
  • Библиотеки ядра (<ItemGroup Label="Core References"></ItemGroup>).
  • Библиотеки зависимых пакетов (<ItemGroup Label="Package References"></ItemGroup>).
  • Внешние сборки (<ItemGroup Label="3rd Party References"></ItemGroup>).

Создать пакет-сборку 

  1. В приложении на платформе .NET Framework перейдите в дизайнер системы по кнопке .
  2. В блоке Конфигурирование разработчиком (Admin area) перейдите по ссылке Управление конфигурацией (Advanced settings).
  3. В области работы с пакетами нажмите кнопку .
  4. Установите признак Компилировать в отдельную сборку (Compile into a separate assembly). Начиная с версии Creatio 8 Atlas, признак установлен по умолчанию.

  5. Cоздайте пакет-сборку и установите его зависимости.
  6. Разработайте пользовательскую функциональность.
  7. В приложении на платформе .NET Framework выполните компиляцию пакета-сборки. Компиляция пакета-сборки описана в пункте Компилировать пакет-сборку.
  8. Перенесите пакет-сборку на другую рабочую среду на платформе .NET Core.
  9. Выполните компиляцию перенесенного пакета-сборки. Компиляция пакета-сборки описана в пункте Компилировать пакет-сборку.

Очередность использования платформ (.NET Framework и .NET Core) для разработки пакета-сборки не имеет значения. Важно выполнить компиляцию пакета-сборки в приложениях на платформах .NET Framework и .NET Core. Это позволит пользователям использовать пакет-сборку в приложениях на платформах .NET Framework и .NET Core.

В результате пакет-сборка будет доступен для поставки конечным пользователям.

Переместить конфигурационные элементы в пакет-сборку 

  1. Подготовьте конфигурационные элементы к перемещению в пакет-сборку, переписав код в соответствии с особенностями пакета-сборки.
  2. Создайте пакет-сборку. Создание пакета-сборки описано в пункте Создать пакет-сборку.
  3. Установите зависимости пакета-сборки. Зависимости пакета-сборки должны совпадать с зависимостями простого пакета, из которого планируется переместить конфигурационные элементы.
  4. Выполните перемещение конфигурационных элементов.

    • Чтобы переместить все конфигурационные элементы, в меню пакета, из которого планируется переместить конфигурационные элементы, нажмите Переместить все элементы (Move all elements).

    • Чтобы переместить отдельный конфигурационный элемент, в меню конфигурационного элемента нажмите Переместить в другой пакет (Move to another package).

  5. Выполните компиляцию конфигурации.
  6. Обновите зависимости дочерних пакетов: замените родительский пакет на пакет-сборку, в который были перенесены конфигурационные элементы.

В результате конфигурационные элементы будут перемещены в пакет-сборку.

Компилировать пакет-сборку 

Назначение компиляции пакета-сборки — ускорение разработки, поскольку отсутствует необходимость перекомпиляции всей конфигурации. Creatio позволяет выполнить компиляцию пакета-сборки, который содержит схемы клиентских модулей (т. е. схемы с JavaScript-кодом).

Виды компиляции пакета-сборки:

  • Компиляция конфигурации и всех пакетов-сборок.

    Выполняется нажатием кнопки Перекомпилировать все (Compile all) в выпадающем списке кнопки Компилировать (Compile) панели инструментов Creatio IDE.

  • Компиляция текущего пакета-сборки.

    • Выполняется выбором пункта Компилировать (Compile) меню пакета Creatio IDE.

    • Выполняется нажатием кнопки Опубликовать (Publish) в дизайнере исходного кода. Если редактируемая схема типа Исходный код (Source code) находится в пакете-сборке, то будет выполнена компиляция только пакета-сборки, а не всей конфигурации. В другом случае будет выполнена компиляция всей конфигурации.

В результате пакет-сборка будет скомпилирован. Если при компиляции пакета-сборки будет обнаружено отсутствие пакетов-сборок, от которых зависит текущий пакет-сборка, то приложение также выполнит их компиляцию.

Скомпилированный пакет-сборка будет сохранен в:

  • Для приложений на платформе .NET Framework ...\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\[Имя пакета]\Files\Bin\[Имя пакета].dll.
  • Для приложений на платформе .NET Core ...\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\[Имя пакета]\Files\Bin\netstandard\[Имя пакета].dll.

Удалить пакет-сборку 

Удаление пакета-сборки не отличается от удаления простого пакета и выполняется в пункте Удалить (Delete) меню пакета Creatio IDE.

Об удалении простого пакета читайте в статье Creatio IDE.

В результате пакет-сборка будет удален из конфигурации приложения.

Импортировать пакет-сборку 

Импорт пакета-сборки не отличается от импорта простого пакета. Об импорте простого пакета читайте в статье Перенос пакета.

Особенности импорта пакета-сборки:

  • Содержимое пакета-сборки помещается в базу данных.
  • Копируется файловый контент пакета-сборки.
  • Компиляция конфигурации не запускается, поскольку пакет-сборка был скомпилирован при разработке и содержит в себе runtime-сборку.
  • Выполняется перезапуск сайта, инициализация веб-сервисов и фабрики классов, которые содержатся в пакете-сборке.