Inleiding

In de ShopServer bevinden zich alleen artikelgegevens van artikelen die in RetailVista als webshop artikel zijn aangemerkt. Behalve de vaste velden zijn er ook vrije velden beschikbaar. Voorheen waren dit vooraf ‘vast’ gedefinieerde velden. Met ingang van de februari 2015 update van RetailVista hebben  alle klanten de mogelijkheid om zelf vrije velden aan te maken, zo veel als dat ze maar willen. Deze vrije velden en de inhoud daarvan zijn op te vragen via de GetFreeFields en GetFreeFieldValues() functies.

De afbeeldingen van artikelen zijn in de ShopServer ook opgeslagen in een tabel/object. Op dezelfde manier als artikelmutaties kunnen ook afbeelding mutaties worden opgehaald. Deze afbeeldingen worden Base64 gecodeerd aangeleverd en moeten worden omgezet naar een bestand of stream. Hiervan is voorbeeld code beschikbaar in sampleclient.zip project.

Standaard worden elk half uur alle gemuteerde artikelgegevens verstuurd naar de ShopServer. Elke ShopServer client kan deze mutaties vervolgens opvragen. De frequentie van het opvragen is naar eigen inzicht instelbaar (zie fair use policy). Verder is het de bedoeling dat een client alleen de mutaties opvraagt. Het is mogelijk om elke keer een totale aanvraag van het complete artikelbestand te doen. Dat is echter ongewenst in verband met onnodig bandbreedte gebruik. Zeker als de opvraag frequentie dan ook nog zeer regelmatig is resulteert dit in onnodig veel bandbreedte en processor gebruik.

Bij het realiseren van een integratie vanuit een webshop met de ShopServer, is het erg belangrijk dat er goed gewerkt wordt met datum/tijd stempels. Elke mutatie die uit RetailVIsta afkomstig is, wordt in de ShopServer voorzien van een datum en tijd. Dit geeft de mogelijkheid aan webshop integraties om uitsluitend de mutaties op te halen sinds de vorige synchronisatie. Het is essentieel dat dit dan ook gebeurd: dit scheelt data verkeer, resource gebruik en verkort de synchronisatie tijd aanzienlijk.

De volgende werkwijze moet gevolgd worden:

1: Leg de huidige datum en tijd vast. Hiervoor bestaat in de ShopServer de method GetServerDateTime(). Hierdoor wordt er altijd gewerkt met de server datum en tijd en doen eventuele lokale afwijkingen er niet toe.
2: Vraag de laatste synchronisatie datum en tjid op. Deze is te vinden in het Stores object via de property LastSyncDateTime.
3: Vraag nu per object de mutaties op, bijvoorbeeld GetArticles met een GetArticlesRequest object waarbij de ModifiedSinceDateTime gevuld is met de LastSyncDateTime uit Stores (zie vorige punt). Het is zeer aan te raden om de ItemId (primary key) van de ShopServer op te slaan in het CMS, ten behoeve van het eventueel verwijderen van gegevens op een later moment.
4: Voer als laatste de method CommitLastSyncDateTime() en geef de in het eerste punt vastgelegde systeem datum en tijd mee als parameter. Hierdoor zal bij een volgende synchronisatie deze datum en tijd weer via stap 2 teruggegeven worden.

Om alle artikelmutaties te kunnen ontvangen moet de laatste synchronisatie datum en tijd worden gereset. Dit is mogelijk via de functie ResetLastSyncDateTime().

Volledigheidshalve moet hier vermeld worden dat het zeer gewenst om per object niet alleen de gemuteerde gegevens op te vragen, maar ook de verwijderde gegevens. Hiervoor bestaat een separaat object 'DeletedItems'. Dit object bevat per parent object de ItemIds van de gegevens die verwijderd zijn uit de ShopServer.

Zie Ook

Diversen