Dedykowana warstwa integracyjna złożona z dwóch wtyczek, która łączy nopCommerce z Powerall, holenderską platformą biznesową typu wszystko w jednym, spinającą warsztat, magazyn, planowanie, administrację i sprzedaż w jednym systemie dla ponad 6000 użytkowników. Zbudowana dla On-Site BV, partnera rozwiązań nopCommerce z Rotterdamu specjalizującego się w złożonym handlu B2B, integracja pozwala jego klientom prowadzić witrynę nopCommerce opartą na Powerall jako jedynym źródle prawdy - bez utrzymywania katalogu przez kogokolwiek po raz drugi.
Wyzwanie
To Powerall jest właścicielem danych produktowych i przechowuje je w formie typowej dla ERP: pliki właściwości grup, właściwości techniczne, warianty i rekordy krajów, które nigdy nie były modelowane pod sklep internetowy. Ogólny import albo spłaszczyłby to wszystko do bezużytecznych pól tekstowych, albo zmusiłby programistę do ręcznego zakodowania mapowania dla każdej nowej grupy produktów. On-Site potrzebowało czegoś, co ich konsultanci mogą skonfigurować dla każdego klienta, a nie jednorazowego skryptu.
Architektura oparta na dwóch wtyczkach
Podzieliliśmy pracę wzdłuż czystej granicy, tak aby każda strona mogła rozwijać się i być wdrażana osobno:
- Nop.Plugin.Misc.Powerall.Import - warstwa mapowania i kształtowania danych, która zamienia eksporty z Powerall w prawidłowy katalog nopCommerce
- Nop.Plugin.Misc.Powerall.Integration - żywe połączenie, które utrzymuje oba systemy w zgodzie i odsyła zamówienia z powrotem
Obie są zgodne ze standardową architekturą wtyczek nopCommerce - encje domenowe z własną warstwą danych i migracjami, serwisy, fabryki modeli, komponenty widoku i widoki administracyjne - dzięki czemu nic nie przenika do rdzenia, a aktualizacje pozostają rutynowe.
Powerall.Import: mapowanie sterowane zachowaniami
Zamiast sztywnej mapy pól wtyczka importu opiera się na konfigurowalnych zachowaniach importu (Import Behaviours): wielokrotnie używanych regułach opisujących, jak dany fragment danych z Powerall ma trafić do nopCommerce.
- Zachowania właściwości produktu (Product Property Behaviours) decydują dla każdej właściwości, czy wartość z Powerall stanie się atrybutem specyfikacji, atrybutem produktu sterującym wariantami, czy zwykłą treścią produktu
- Metadane kategorii są wyprowadzane z pliku właściwości grup, więc struktura kategorii i metadane SEO pochodzą z danych ERP, zamiast być przepisywane ręcznie
- Specyfikacje i warianty są mapowane razem, dzięki czemu dane techniczne pozostają filtrowalne na stronie katalogu, a możliwe do kupienia kombinacje są poprawne na stronie produktu
- Dedykowane menu Behaviours w panelu administracyjnym prezentuje reguły w postaci kart, więc mapowanie konfiguruje konsultant, a nie programista
- Dane są walidowane przed uruchomieniem importu, a każde ustawienie jest dostarczane z lokalizowanymi zasobami tekstowymi i opisami w interfejsie
Powerall.Integration: utrzymywanie obu systemów w zgodzie
- Synchronizacja początkowa, która za jednym przebiegiem doprowadza nowy sklep do pełnej zgodności z Powerall
- Zaplanowane zadanie synchronizacji z logiką filtrowania, dzięki czemu cykliczne przebiegi dotykają tylko produktów, które faktycznie się kwalifikują, zamiast przechodzić przez cały katalog
- Synchronizacja sterowana zdarzeniami, podpięta pod zdarzenia nopCommerce, dla zmian, które nie mogą czekać na kolejny zaplanowany przebieg
- Odsyłanie zamówień do Powerall, wraz z przyciskiem ręcznej synchronizacji w panelu administracyjnym dla pojedynczych zamówień, które wymagają ponaglenia
- Mapowanie krajów pomiędzy rekordami krajów w Powerall a krajami w nopCommerce, z zabezpieczeniami na wypadek niekompletnych danych ERP
- Pełna ścieżka odinstalowania, która czysto usuwa ustawienia, schemat i zadania - istotna przy integracji wdrażanej w wielu sklepach klientów
Praca w panelu administracyjnym i obserwowalność
Obie wtyczki dodają własne pozycje menu i ekrany konfiguracji do panelu administracyjnego nopCommerce. Integracja zapisuje szczegółowy log synchronizacji z dedykowanymi widokami logów, więc gdy zamówienie lub produkt nie pojawia się tam, gdzie powinno, odpowiedź jest oddalona o jedno kliknięcie, a nie o zgłoszenie do wsparcia i sesję na serwerze.
Podstawa techniczna
Zbudowane dla nopCommerce 4.80 na ASP.NET Core, spakowane jako dwie niezależne wtyczki z własnymi ustawieniami, wartościami domyślnymi, migracjami i lokalizacją. Wynik jest wielokrotnego użytku: On-Site może wdrożyć tę samą integrację u każdego klienta korzystającego z Powerall i skonfigurować ją dla każdego sklepu z poziomu panelu administracyjnego, zamiast rozgałęziać kod.
Rezultat
Produkcyjna integracja, która daje On-Site BV powtarzalną odpowiedź na pytanie „czy możecie podłączyć nasz sklep internetowy do Powerall?” - dane produktowe należące do ERP trafiają jako prawidłowo ustrukturyzowany, filtrowalny katalog nopCommerce, zamówienia wracają automatycznie, a całe mapowanie konfiguruje konsultant, zamiast budować je od nowa w kodzie przy każdym wdrożeniu.