Search
Close this search box.

Кастомізація Acumatica в дії: Приклад з реального життя. Частина III

У цьому розділі ми розглянемо практичний приклад створення проекту кастомізації Acumatica за допомогою ACUCustomizationUtil.

Ініціалізація сховища проекту: Почніть зі створення, а потім клонування сховища проекту до вказаного кореневого каталогу.

  1. Встановити змінні оточення: Залежно від потреб проекту, встановіть відповідні змінні користувацького або системного оточення.
  2. Впорядкувати структуру папок: Створіть необхідну структуру каталогів для вашого налаштування.
  3. Підготуйте файл конфігурації: Скопіюйте файл acu.json в корінь вашого проекту. Змініть його вміст відповідно до конкретних потреб проекту.
  4. Перевірка версії ERP: Переконайтеся, що у вас встановлена необхідна версія ERP. Якщо вона відсутня, завантажте та запустіть процес встановлення ERP.
  5. Перевірте екземпляр Acumatica: Переконайтеся у наявності відповідної версії Acumatica. Якщо вона не встановлена, зробіть кроки для встановлення необхідного сайту Acumatica.
  6. Створення рішень: Розробити рішення, адаптоване до бібліотеки кастомізаційних розширень.
  7. Обробка пакунків: Створіть, налаштуйте та запустіть пакет кастомізації.
  8. Витяг вихідного коду: Отримати вихідний код пакунка налаштувань.
  9. Зробіть свою роботу: Завершіть роботу над змінами та зафіксуйте їх у репозиторії проекту.

Для контексту, давайте розберемо специфіку, з якою ми працюємо:

Ім'я змінної

Значення

Ім'я сховища

ACUProject

Назва проекту

ACUProject

Базовий шлях ERP та Acumatica

C:\Acumatica

Налаштування базового шляху проекту

C:\Acumatica/project

Змінна оточення для базового шляху

UBASEDIR%

Версія ERP

23.105.0016

Структура каталогу проекту:

 PowerShell 

 ACUProject

Вихідний код проекту кастомізації cst

├───pkg пакунки налаштувань

└───src Проект C# - бібліотека розширення

    └───ACUProject

.gitignore

acu.json

Directory.Build.props

ACUProject.sln

README.md

У цьому прикладі ми будемо виходити з припущення, що екземпляри ERP та Acumatica не встановлені у вашій системі. Якщо вам потрібно виконати кроки перевірки встановлення, детальні інструкції можна знайти в розділі Посібник користувача.

Створення та клонування сховища

Тепер, коли ви налаштували репозиторій вашого проекту у вашій улюбленій системі контролю версій (наприклад, GitHub або Bitbucket), наступним кроком буде клонування його на ваш локальний комп'ютер. Ось як це зробити:

PS C:\Acumatica> cd C:\Acumatica\project

PS C:\Acumatica\project> git clone -progress``.

-v https://you.username@url.to.you.repository/repository.project/acuproject.git ACUProject

Налаштування змінних середовища

Перш ніж зануритися в процес кодування, важливо налаштувати відповідні змінні оточення. Це зробить певні процеси простішими та забезпечить безперебійну роботу. Давайте налаштуємо змінні ACUBASEDIR системна змінна:

Налаштування змінних середовища

Створіть структуру папок для налаштування

Відкрийте PowerShell і виконайте наступні команди:

PS C:> cd C:\Acumatica\project

PS C:\Acumatica\project> mkdir cst

PS C:\Acumatica\project> mkdir pkg

PS C:\Acumatica\project> mkdir src

PS C:\Acumatica\project> tree

ACUProject

├───cst

├───pkg

└───src

Створення файлу конфігурації

Скопіюйте файл acu.json з каталогу встановлення ACUCustomizationUtil та відредагуйте його відповідно до наших вимог:

{

  "ерп": {    

    "erpVersion": "23.105.0016",

    "installationFileName": "AcumaticaERPInstall.msi",

    "destinationDirectory": "UBASEDIR%\\erp",

    "url": null

  },

  "site": {

    "instanceName": "23.105.0016",

    "instancePath": “UBASEDIR%\\instance\\23.105.0016\\Site”,

    "sqlServerName": "localhost",

    "dbName": "23.105.0016DB", 

    "acumaticaAdminName": "admin",

    "acumaticaAdminPassword": "123",

    "dbConnectionString": null,

    "acumaticaToolPath": null,

    "iisAppPool": null,

    "iisWebSite": null

  },

  "pkg": {

    "url": "http://localhost/23.105.0016/api/ServiceGate.asmx",

    "логін": "admin",

    "пароль": "123",    

    "pkgName": "ACUProject",

    "pkgDirectory": "pkg",

    "tenant": null

  },

  "src": {

    "pkgSourceDirectory": "cst",

    "pkgLevel": "0",

    "msBuildSolutionFile": "ACUProject.sln",

    "msBuildTargetDirectory": "src\\ACUProject\\bin\\Release",

    "msBuildAssemblyName": "ACUProject.dll",

    "makeMode": null,

    "pkgDescription": null

  }

}

Завантаження та встановлення ERP

Запустіть наступні команди, щоб встановити ERP: 

PS C:\Acumatica\project> cd ACUProject

PS C:\Acumatica\project\ACUProject> acu erp download

PS C:\Acumatica\project\ACUProject> acu erp install

 

Перевіримо, чи встановлено ERP

C:\Acumatica

└───erp

    └───23.105.0016

        └───Acumatica ERP

Встановити екземпляр Acumatica

Щоб встановити екземпляр Acumatica, виконайте наступні команди:

PS C:\Acumatica\project\ACUProject> acu site install

Налаштування проекту бібліотеки розширень

Хоча процес створення проекту для кастомізації вичерпно описаний в Посібник з налаштування проектуважливо виділити кілька важливих аспектів для безперешкодної інтеграції:

1.Проект створено як бібліотеку класів .NET Framework 4.8.x

2. Файл **Directory.Build.props** містить змінну **SiteDir**, її значення має містити повний фізичний шлях до екземпляру Acumatica:

Файл пропсів Directory.Build.props

    <PropertyGroup

        net48

        C:\Acumatica\instance\23.105.0016\Site</SiteDir

    

Група властивостей

</Project

3. Змінна **$(SiteDir)** буде використовуватися в майбутньому при описі шляхів до ресурсів, на які посилаються в екземплярі Acumatica:

Файл проекту

  <ItemGroup 

    

      False </ SpecificVersion

      $(SiteDir)\Bin\PX.Common.dll

    </Reference

    .

      False </ SpecificVersion

      $(SiteDir)\Bin\PX.Data.dll

    </Reference

    

      False </ SpecificVersion

      $(SiteDir)\Bin\PX.Objects.dll

    </Reference

  </ItemGroup

4. Додайте до файлу проекту правило Before Build, яке необхідне для керування версіями під час збирання проекту.

Файл проекту

    <ItemGroup

     

        $(Version).

      <//AssemblyAttributes

    </ItemGroup

   

   

    <ItemGroup

     

    </ItemGroup

</Target

5. Додайте до файлу проекту Post Build обробник подій, який копіює файл збірки до каталогу екземплярів Bin Acumatica.

Файл проекту

<PropertyGroup

    <PostBuildEvent

        xcopy /F /Y $(TargetPath) $(SiteDir)\Bin\

        xcopy /F /Y $(TargetDir)$(TargetName).pdb $(SiteDir)\Bin\

   

</p

Група властивостей

6. Для проекту має бути встановлений пакет NuGet Acuminator:

Файл проекту

<ItemGroup

 

 

</ItemGroup

7. Файл рішення (ACUProject.sln) слід перемістити до кореневої папки проекту та відредагувати шлях до проекту бібліотеки розширень.

8. Екземпляр Acumatica НЕ підключається до рішення. Це робиться як закладка для майбутнього рішення, щоб усунути залежність проекту від екземпляра Acumatica.

Після завершення всіх кроків папка має виглядати так:

PowerShell

C:\Acumatica\project\ACUProject

├───cst

│ ├───Смітник

│ │ ACUProject.dll

│ │

│ └───_project

│ ProjectMetadata.xml

├───pkg

│ ACUProject.zip

├───src

│ └───ACUProject

│ │ ACUProject.csproj

│ │ packages.config

│ └───Властивості

│ AssemblyInfo.cs

. gitignore

│ acu.json

│ ACUProject.sln

│ Directory.Build.props

Створення та налаштування пакету налаштувань

Створення пакету налаштувань:

  1. У своєму браузері перейдіть до http://localhost/23.105.0016 і увійдіть в систему.
  2. Відкрийте вікно "Проекти кастомізації".
  3. Видаліть усі наявні демо-проекти. Обов'язково збережіть зміни, натиснувши кнопку "Зберегти".
  4. Створіть новий проект, назвавши його "ACUProject", щоб узгодити з вимогами до конфігурації.
Створіть новий проект
  1. Відкрийте новий проєкт у редакторі налаштувань. Перейдіть до розділу "Файли".
  2. Натисніть на іконку "+" і додайте збірку бібліотеки розширення (ACUProject.dll) до проекту.
додавання збірки бібліотеки розширення
  1. Опублікуйте проект кастомізації.

Отримання вихідного коду пакунка налаштувань та збірки пакунків

Щоб витягти вихідний код з пакунка налаштувань, виконайте наступну команду: 

PS C:\Acumatica\project\ACUProject> acu src get

Інтеграція cst для вихідного коду налаштувань тепер має такий вигляд:

C:\Acumatica\project\ACUProject

├───cst

│ ├───Смітник

│ │ ACUProject.dll

│ │

│ └───_project

│ ProjectMetadata.xml

Створення пакетів кастомізації

Щоб ініціювати збірку пакунків налаштувань, виконайте наступні команди у вашому терміналі PowerShell:

PS C:\Acumatica\project\ACUProject> acu src buld

PS C:\Acumatica\project\ACUProject> acu src make

PS C:\Acumatica\project\ACUProject> acu src make -mode QA

Перевірка збірки пакунка

Після виконання перевірте пкг директорії. Якщо все пройшло за планом, ви повинні побачити два файли:

  • - ACUProject.zip: Це рутинний пакет налаштувань для повсякденної діяльності з розробки.
  • – ACUProject[23.105.0016][23303.2047].zip: Спеціалізований пакет кастомізації для тестування. Примітно, що він містить як версію ERP, так і версію збірки у своєму імені файлу.

Публікація налаштування в екземплярі Acumatica

Тепер важливо переконатися, що створене налаштування можна без проблем інтегрувати в екземпляр Acumatica. Виконайте наступні команди:

PS C:\Acumatica\project\ACUProject> acu pkg upload

PS C:\Acumatica\project\ACUProject> acu pkg publish

Успішне виконання означає, що пакет успішно завантажено та опубліковано в екземплярі Acumatica. Тепер ви на правильному шляху!

Завантаження проекту до репозиторію

Тепер, коли ваш проект створено, настав час перемістити його до сховища. Але спершу ви маєте переконатися, що певні файли або каталоги не будуть включені до сховища. Для цього створіть .gitignore у кореневій теці проекту. Цей файл визначає шаблони файлів і папок, які слід ігнорувати при фіксації до сховища.

Ось що вам варто додати до свого Джитіньйоре:

acu-log*.txt

/pkg/*.zip

смітник

obj

Налагодження

Реліз

.vs

Перегляньте та зафіксуйте зміни

Перед тим, як відправляти файли до сховища, дуже важливо перевірити файли, які ви збираєтесь фіксувати. Для цього скористайтеся командою git-статус  надасть вам огляд цих файлів:

PS C:\Acumatica\project\ACUProject> git status

Про розвиток філії

Ваша гілка оновлена в розділі "походження/розвиток".

 

Зміни, які необхідно здійснити:

  (використовуйте "git restore -staged ..." для вилучення етапів)

        модифіковано: .gitignore

        новий файл: ACUProject.sln

        новий файл: Directory.Build.props

        новий файл: acu.json

        новий файл: cst/Bin/ACUProject.dll

        новий файл: cst/_project/ProjectMetadata.xml

        новий файл: pkg/ACUProject.zip

        новий файл: src/ACUProject/ACUProject.csproj

        новий файл: src/ACUProject/Properties/AssemblyInfo.cs

        новий файл: src/ACUProject/packages.config

Як тільки ви переконаєтеся, що все в порядку, зафіксуйте і просувайте свої зміни: 

PS C:\Acumatica\project\ACUProject> git commit -i "Add customization project & configuration"

PS C:\Acumatica\project\ACUProject> git push origin develop -f

Вітаємо! Ви успішно створили новий проект кастомізації та автоматизували його налаштування за допомогою утиліти ACUCustomizationUtil.

Розгортання проекту зі сховища

Після того, як ваш проект кастомізації налаштовано, його конфігурацію збережено, а файли зафіксовано у сховищі, перевстановлення середовища стане легкою справою.

Помічаєте різницю?

Детальні інструкції, які ми розглянули для створення проекту, контрастують з короткими кроками для розгортання проекту. Давайте зануримося в цей спрощений процес:

Клонування сховища

Щоб розпочати розгортання, почніть з клонування сховища.

Перейдіть до кореневої папки ваших проектів кастомізації, відкрийте PowerShell і виконайте команду:

PS C:\Acumatica> cd C:\Acumatica\project

PS C:\Acumatica\project> git clone -progress``.

 -v https://you.username@url.to.you.repository/repository.project/acuproject.git ACUProject

Налаштування користувацьких або системних змінних оточення

Перш ніж зануритися в налаштування, дуже важливо переконатися, що acu.json конфігураційний файл. Чи посилається він на будь-які змінні оточення, такі як UBASEDIR%у параметрах шляху? Якщо так, то вам потрібно встановити ці змінні. Їхні значення також слід чітко задокументувати у файлі readme сховища для зручності використання.

Якщо ці значення не вказані явно, ви можете вивести їх з Directory.Build.props файл. Переконайтеся, що файл SiteDir вирівнюється з параметром site.instancePath  в acu.json конфігураційний файл.

Наприклад, якщо розглянути сценарій:

Directory.Build.props

    <PropertyGroup

        net48

        C:\Acumatica\instance\23.105.0016\Site</SiteDir

    

Група властивостей

</Project



acu.json

{

  …

  "site": {

    …

    "instancePath": “UBASEDIR%\\instance\\23.105.0016\\Site”,

    …

  },  

  …

}

 

буде значення змінної оточення:

***UBASEDIR% = C:\Acumatica***

Встановити ERP

Перевірте наявність і, за необхідності, встановіть відповідну версію ERP:

PS C:\Acumatica\project\ACUProject> acu erp download

PS C:\Acumatica\project\ACUProject> acu erp install

Встановіть екземпляр Acumatica

Перевірте доступність та встановіть екземпляр Acumatica, якщо необхідно:

PS C:\Acumatica\project\ACUProject> acu site install

Створення та пакування бібліотеки розширень

Почніть з компіляції проекту бібліотеки розширень, а потім перейдіть до генерації пакунка налаштувань. Виконайте наступні команди:

PS C:\Acumatica\project\ACUProject> acu src build

PS C:\Acumatica\project\ACUProject> acu src make

Завантаження та публікація

Тепер настав час перенести ваш пакунок до екземпляру Acumatica. Скористайтеся цими командами, щоб завантажити, а потім опублікувати пакунок:

PS C:\Acumatica\project\ACUProject> acu pkg upload

PS C:\Acumatica\project\ACUProject> acu pkg publish

Це все. Успішно виконавши всі команди, розробники отримують середовище, готове до розробки кастомізованого проекту. Зручний і швидкий процес, чи не так?

Підбиваємо підсумки: Подорож інновацій та викликів

Незважаючи на свою, здавалося б, просту функціональність, утиліта ACUCustomizationUtil є досить складним інструментом. Вона включає в себе наша командаЦе вже третя ітерація такої утиліти, і ми все ще досліджуємо всі можливі сценарії взаємодії між утилітою, користувачем, екземпляром Acumatica та операційною системою. 

На створення поточної версії було витрачено більше часу, ніж ми спочатку передбачали. Це було пов'язано, головним чином, зі зміною нашого підходу до реалізації - ми перейшли від використання сценаріїв PowerShell до використання чистого C#. Ця зміна також призвела до нових викликів. Наприклад, нам довелося обернути виклик будь-якого *.exe-файлу в код C#, перехопити потік повідомлень з цього файлу, а потім відформатувати його, щоб забезпечити відображення прогресу.  

Однак кожен виклик був можливістю для зростання. Наша прихильність до розробки цієї утиліти підкреслює її виняткову цінність. У Sprinterra ACUCustomizationUtil - це не просто теоретичний актив, це перевірений інструмент у нашій Проекти Acumatica. Автоматизувавши процеси, ми скоротили час розробки та мінімізували помилки.

Ми прагнемо вдосконалювати код, виправляти дрібні помилки та впроваджувати покращення в майбутньому. І, звичайно, ми з нетерпінням чекаємо можливості поділитися нашими знахідками та успіхами зі спільнотою в майбутньому.

Підпишіться на нашу розсилку

Отримуйте найновішу інформацію про експоненціальні технології прямо на вашу скриньку