Приветствую!

Создал пакет проект (пробовал и через шаблон bpmonline и через clio create pkg)

При компиляции из студии изменения не подхватываются, clio restart делаю после build, приходится всю конфигурацию компилировать

 

Подскажите , может кто сталкивался? в какую сторону смотреть?

Нравится

1 комментарий

Добрый день,

 

Для того, чтобы приложение подтягивало сборку из Пакета-Проекта, нужно:

  1. Название dll сборки Пакета-Проекта,  должно совпадать с названием пакета.
  2. dll сборка Пакета-Проекта должна находится в соответсвующей директории: 
    • TS.Conf/PackageName/Files/Bin/ (для Framework
    • TS.Conf/PackageName/Files/Bin/netstandard (для .NetCore)
  3. Для .NetCore флаг Feature-UseSeparateDirectoryToLoadPackageAssemblies (в Terrasoft.WebHost.dll.config) должен быть включен:

    <add key="Feature-UseSeparateDirectoryToLoadPackageAssemblies" value="true" />
  4. Cборка должна быть помечена аттрибутом:

    [assembly: PackageReferenceAssembly(RefAssemblyMarker.All)]

    и добавить: using Terrasoft.Core.Attributes;

    Это делается в AssemblyInfo.cs (папка Properties - Properties\AssemblyInfo.cs )

    Если используется, новая версия проекта *.csproj, то в нем AssemblyInfo.cs генерируется автоматически на основании проекта.

    Для того, чтобы небыло конфилктов автогенерируемой AssemblyInfo.cs с созаной вручную, нужно в проекте *.csproj, отключить автогенерацию AssemblyInfo.cs.

    Для этого в проект *.csproj, надо добавить запись:

    <PropertyGroup>

               .........................................

               <GenerateAssemblyInfo>false</GenerateAssemblyInfo>

               .......................................

    </PropertyGroup>

 

Пример AssemblyInfo.cs

using System.Reflection;
using System.Runtime.InteropServices;
using Terrasoft.Core.Attributes;
 
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: PackageReferenceAssembly(RefAssemblyMarker.All)]
[assembly: AssemblyTitle("cliogate")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("cliogate")]
[assembly: AssemblyCopyright("Copyright ©  2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
 
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
 
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e24226f9-c177-458f-af34-9338e2699983")]
 
// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.1.2")]
[assembly: AssemblyFileVersion("1.1.1.2")]

 

Если эти рекомендации не помогли решить проблему, обратитесь по адресу support@creatio.com, так как без прямого доступа сложно определить, в чем проблема.

 

С уважением,

Дарий

Показать все комментарии

Добрый день, Коллеги!

Недавно было онлайн-обучение «Ускорение разработки с пакетами-проектами и репозиторием данных», у кого есть видео или подобное, можете поделиться? Спасибо! 

https://t.me/faridun_developer

Нравится

2 комментария
Лучший ответ

Добрый день!

 

Запись прилагаю в хранилище.

Добрый день!

 

Запись прилагаю в хранилище.

Роман Казекин,

Спасибо!

Показать все комментарии

Здравствуйте! Наблюдается следующая проблема, а именно конфликт библиотек  Google.Apis, в связи с этим не можем реализовать на стороне Ceatio нужный функционал. В академии прочел статью про метод разработки пакет-проект в которой говориться, что данного конфликта быть не должно т.к. пакет является изолированным, однако разработав такой пакет и вызывая его функционал из другого пакета системы конфликт так же остался - https://prnt.sc/truxr1.

Вот ссылка на скачивание разработанного нами пакета(пакет тестовый)- https://drive.google.com/file/d/19YyYJ6rLjEdS7N2HXRNduBw0oOZkdSkA/view?…

функционал вызываем данным образом:

namespace Autobooking.CreatioIntegrationApp

{

    using System;

    using System.Collections.Generic;

    using System.IO;

    using System.Net;

    using System.Threading.Tasks;

    using Terrasoft.Configuration;

    using Terrasoft.Core;

    using Terrasoft.Core.Factories;

    using Terrasoft.Web.Common;

    using SysSettings = Terrasoft.Core.Configuration.SysSettings;

    using WebRequest = System.Net.WebRequest;

    using AutobookingGoogleAnalyticsApi.Interfaces;

    public sealed class CreatioIntegrationAppService : BaseService

    { 

        public CreatioIntegrationAppService(UserConnection userConnection) {

            UserConnection = userConnection;           

        }

 

        public string GetSysSetting(string settingName) {

            return SysSettings.GetValue(UserConnection, settingName, null);

        }

 

 

        public void StartAnalytic() {

                var service = ClassFactory.Get(new ConstructorArgument("userConnection", UserConnection),

                new ConstructorArgument("serviceAccountEmail", "testEmail"),

                new ConstructorArgument("applicationName", "testAppName"), new ConstructorArgument("secretFile", null));

        service.AuthenticateServiceAccount();

        }        

    }

}

Нравится

2 комментария

Здравствуйте, Александр!

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

Александр, по поводу конфликта версий, всё как обычно с библиотеками: им или залить себе ту же версию, что у «в коробке» (более старую), или аргументировать, чтобы обновили «в коробке» до более новой. Если используется не самая новая версия системы, прежде всего попробовать обновить, возможно, в актуальной библиотеку тоже обновили.

Показать все комментарии

Коллеги, кто нибудь вел разработку по принципу пакет-проект, из статьи мало понятно как действовать. Есть вопросы:

  1. При выгрузки пакетов ФС папка Files не создалась(кастомный пакет) - можно добавить вручную?
  2. Можно ли добавлять данное решение в существующий пакет?
  3. В папку Files добавлять ProjectName.dll или весь solution?
  4. Проект создавать как библиотеку классов + подключать в зависимости пакет Terrasoft? 

В общем что то в этом роде.

Заранее благодарен!

Нравится

14 комментариев

Алексей, насколько помню, всё взаимодействие происходит через консольную программу «clio», а в веб-интерфейсе такой пакет выглядит как пустой, вручную туда добавлять ничего не нужно.

 

На странице clio перечислены её команды для создания, загрузки и выгрузки пакетов.

Зверев Александр,

с установкой пакета разобрался, теперь вот вопрос как использовать встроенные классы при разработке в ФС?

Вот пытаюсь определить переменную с данным типом -https://prnt.sc/tqf1ps

Что делаю не так?

Если брать данную dll - https://prnt.sc/tqf4n0 и вставлять во Внешние сборки(https://prnt.sc/tqf4z5) тогда смысл данного решения?

Зверев Александр,

Перелопатил что только возможно было, так и не нашел примеров как использовать функционал файлового контента, у Вас будет пару примеров?

Недавно было онлайн-обучение «Ускорение разработки с пакетами-проектами и репозиторием данных», но видео с него не встречалось. Возможно, отправляли только записавшимся.

 

Его автор ответил по поводу того, что Вы спрашивали о смысле этого решения: 

Взаимодействие между проектными-классами, и схемами исходного кода происходит через API-проекты.

Основная польза от такого решения – согласовав API, можно поставлять решение без компиляции основного приложения.

Зверев Александр,

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

Здравствуйте, Алексей!

 

Пакет-проект - это пакет который содержит только файловый контент, который в папке пакета располагается в папке Files.

В файловом контенте расположен обычный проект .
net, а компиляция у него настроена в папку Bin.

В проекте реализованы сервисы, которые имеют доступ к базе данных.

Приложение загружает библиотеки (dll) из папки Files\Bin и ищет в них сервисы, а найденные сервисы активирует.

В проекте не будут видны конфигурационные классы, так же как и классы из данного проекта не будут видны коду в конфигурации, это изолированные сервисы.

 

Ответы на вопросы:

 При выгрузки пакетов ФС папка Files не создалась(кастомный пакет) - можно добавить вручную?

Ее можно создать вручную

   Можно ли добавлять данное решение в существующий пакет?

Можно.

Однако у нашего приложения есть экспериментальная фича, включив которую, пакет содержащий только файловый  контент будет ставится быстро, без компиляции всего приложения.

Для ее включения надо в Web.config загрузчика добавить

&lt;add key="Feature-UseCompilationByNecessity" value="true" /&gt; 

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

  В папку Files добавлять ProjectName.dll или весь solution?

Обязательно надо добавить ProjectName.dll в Files\Bin, а solution, на ваше усмотрение, обычно желательно, чтобы вы скачав пакет могли вести в нем разработку.

 Проект создавать как библиотеку классов + подключать в зависимости пакет Terrasoft?

Проект надо создавать как библиотеку классов, которая содержит сервисы. К проекту можно подключить другие библиотеки, как к обычному проекту

Для работы с классами ядра можно к проекту подключить библиотеки из nugget:

 &lt;PackageReference Include="BpmonlineSDK" Version="7.14.4.844-rc" /&gt;
 &lt;PackageReference Include="Terrasoft.ServiceModel" Version="1.0.0" /&gt;
 &lt;PackageReference Include="Terrasoft.ServiceModel.Primitives" Version="1.0.0"&gt;

 

 как использовать встроенные классы при разработке в ФС?

Как и в любом другом проекте .net.

Вот пытаюсь определить переменную с данным типом -https://prnt.sc/tqf1ps

Что делаю не так?

По скриншотам сказать что-то сложно, пришлите пакет, мы тогда объясним что там идет не так.

Если брать данную dll - https://prnt.sc/tqf4n0 и вставлять во Внешние сборки(https://prnt.sc/tqf4z5) тогда смысл данного решения?

В проекте (пакета-проекта), нельзя подключать сборки добавленные во внешние сборки в конфигурации.

 

Мотков Илья,

Можно ли при использовании данного решения как-то избежать конфликт библиотек Google? А то пока не получается...

 

Мотков Илья,

Мотков Илья пишет:

В проекте (

т.е. я не смогу добавить более новые библиотеки Google.Apis, Google.Analytics.V3, Google.Apis.Core (latest stable version) и т.д.? И затем без проблем использовать?

Здравствуйте, Алексей!

 

Рекомендуем прислать пакет, чтобы можно было посмотреть.

По поводу Clio, лучше установить последнюю версию, после чего проинсталировать новую версию cliogate. Если будут ошибки, еще раз прислать лог, который выдала утилита.

Мотков Илья,

здравствуйте, ссылку на скачивания пакета скидывал Вам в личном сообщении

Мотков Илья пишет:

Здравствуйте, Алексей!

Рекомендуем прислать пакет, чтобы можно было посмотреть.

По поводу Clio, лучше установить последнюю версию, после чего проинсталировать новую версию cliogate. Если будут ошибки, еще раз прислать лог, который выдала утилита.

Что касается clio и инсталяции cliogate в результате выполнения команды возникает следующая ошибка - https://prnt.sc/ttvziv&nbsp;

Алексей, в соседней теме это Ваш же случай?

Зверев Александр,

да, уже и систему переустанавливал, не помогает

 

Алексей, по поводу конфликта версий, всё как обычно с библиотеками: им или залить себе ту же версию, что у «в коробке» (более старую), или аргументировать, чтобы обновили «в коробке» до более новой. Если используется не самая новая версия системы, прежде всего попробовать обновить, возможно, в актуальной библиотеку тоже обновили.

Показать все комментарии