Персонализиран интеграционен слой от два плъгина, който свързва nopCommerce с Powerall — нидерландската all-in-one бизнес платформа, обединяваща сервиз, склад, планиране, администрация и продажби в една система за над 6000 потребители. Разработена за On-Site BV, solution partner на nopCommerce от Ротердам, специализиран в сложна B2B търговия, интеграцията позволява на клиентите им да поддържат nopCommerce магазин върху Powerall като единствен източник на истина — без някой да поддържа каталога два пъти.
Предизвикателството
Powerall притежава продуктовите данни и ги притежава в ERP форма: файлове с групови характеристики, технически свойства, варианти и записи за държави, които никога не са били моделирани за онлайн магазин. Един универсален импорт или би сплескал всичко това в неизползваеми текстови полета, или би задължил разработчик да пише мапинг на ръка за всяка нова продуктова група. On-Site имаха нужда от нещо, което консултантите им да конфигурират за всеки клиент, а не от еднократен скрипт.
Архитектура от два плъгина
Разделихме работата по ясен шев, за да може всяка страна да се развива и деплойва самостоятелно:
- Nop.Plugin.Misc.Powerall.Import — слоят за мапинг и оформяне на данните, който превръща експортите от Powerall в пълноценен nopCommerce каталог
- Nop.Plugin.Misc.Powerall.Integration — живата връзка, която държи двете системи в синхрон и връща поръчките обратно
И двата следват стандартната архитектура на nopCommerce плъгин — доменни ентитита със собствен слой за данни и миграции, услуги, model factories, view components и админ изгледи — така че нищо не изтича в ядрото и ъпгрейдите остават рутинни.
Powerall.Import: мапинг, воден от поведения
Вместо фиксирана карта на полетата, импорт плъгинът е изграден около конфигурируеми Import Behaviours: многократно използваеми правила, които описват как дадено парче данни от Powerall да попадне в nopCommerce.
- Product Property Behaviours решават за всяка характеристика дали стойността от Powerall да стане спецификационен атрибут, продуктов атрибут, който поражда варианти, или обикновено продуктово съдържание
- Метаданните на категориите се извличат от файла с групови характеристики, така че структурата на категориите и SEO метаданните идват от ERP данните, вместо да се набират наново на ръка
- Спецификациите и вариантите се мапват заедно, което държи техническите данни филтрируеми в каталога, а купуваемите комбинации — коректни на продуктовата страница
- Отделно меню Behaviours в администрацията показва правилата като карти, така че мапингът се конфигурира от консултант, а не от разработчик
- Данните се валидират преди стартиране на импорта, а всяка настройка идва с локализирани текстови ресурси и описания на място
Powerall.Integration: двете системи в синхрон
- Първоначална синхронизация, която изравнява напълно нов магазин с Powerall наведнъж
- Планирана задача за синхронизация с логика за филтриране, така че повтарящите се изпълнения докосват само продуктите, които наистина отговарят на условията, вместо да обхождат целия каталог
- Синхронизация, задвижвана от събития, закачена за събитията на nopCommerce, за промени, които не могат да чакат следващото планирано изпълнение
- Връщане на поръчките към Powerall, включително бутон за ръчна синхронизация в администрацията за отделни поръчки, които се нуждаят от побутване
- Съответствие на държавите между записите за държави в Powerall и държавите в nopCommerce, с внимателна обработка на непълни ERP данни
- Пълен път за деинсталация, който премахва настройките, схемата и задачите чисто — важно за интеграция, разгърната в множество клиентски магазини
Административен интерфейс и наблюдаемост
И двата плъгина добавят собствени менюта и екрани за конфигурация в администрацията на nopCommerce. Интеграцията води подробен дневник на синхронизациите със специални изгледи, така че когато поръчка или продукт не се появи където трябва, отговорът е на едно кликване, вместо да води до тикет и сесия на сървъра.
Техническа основа
Разработено за nopCommerce 4.80 върху ASP.NET Core и пакетирано като два независими плъгина със собствени настройки, стойности по подразбиране, миграции и локализация. Резултатът е многократно използваем: On-Site могат да внедрят същата интеграция при всеки клиент с Powerall и да я конфигурират за всеки магазин през администрацията, вместо да разклоняват кода.
Резултатът
Продукционна интеграция, която дава на On-Site BV повторяем отговор на въпроса „можете ли да свържете нашия онлайн магазин с Powerall?“ — продуктовите данни, притежавани от ERP системата, пристигат като добре структуриран и филтрируем nopCommerce каталог, поръчките се връщат автоматично, а целият мапинг се конфигурира от консултант, вместо да се пише наново при всяко внедряване.