9. Katalogdaten (neu in Version 1.1)

In diesem Abschnitt werden XML-Konstrukte und Operationen behandelt, bei denen es im weitesten Sinne um das Thema "Katalogabgleich" geht. Es ist zu erwarten, dass hier in zukünftigen Versionen noch Ergänzungen vorgenommen werden.

9.1. Transaktion: TextSearch

Zur Volltextsuche über Artikelnummer und Artikelbezeichnung muss ein veloconnect-konformer Server die Transaktion TextSearch implementieren. Diese Transaktion kennt folgende Zustände:

  • Startzustand 1
  • Abholen der Suchergebnisse 2
  • Endzustand 100

und kennt zwei Operationen:

  • CreateTextSearch
  • SearchResult

Die einzelnen Operationen sind wie folgt definiert:

9.1.1. Operation: CreateTextSearch

Die Anfrage ist ein Element vom Typ vcc:CreateTextSearchRequest, das den Typ vct:RequestType um das Element vcc:SearchString vom Typ udt:TextType erweitert. Antwort ist ein Element vom Typ vcc:CreateTextSearchResponse, welches den Typ vct:TransactionResponseType, um das Element vcc:TotalCount vom Typ xsd:integer erweitert.

Regel: CreateTextSearch. Ein veloconnect-konformer Server erzeugt für jede Anfrage CreateTextSearch einen eigenen Transaktionskontext. Der in vcc:SearchString übergebene Text wird in Teilworte (Trennzeichen ist das Leerzeichen) zerlegt. Es werden alle Artikel ermittelt, bei denen jedes der Teilworte innerhalb von Artikelnummer oder Artikelbezeichnung oder - sofern vorhanden - EAN-Code vorkommt (als Teilzeichenkette). Insbesondere heisst dies, dass bei leerem SearchString alle Artikel ermittelt werden. Die Anzahl der gefundenen Artikel wird über das Element vcc:TotalCount mitgeteilt, die Liste der gefundenen Artikel im Transaktionskontext gespeichert. Falls diese Anzahl 0 ist, findet ein Übergang zum Endzustand 100 statt, ansonsten zum Zustand 2, und es wird jeweils die Antwort in vcc:CreateTextSearchResponse mit ResponseCode 200 zurückgeliefert.

9.1.2. Operation: SearchResult

Die Anfrage ist ein Element vom Typ vcc:SearchResultRequest, das den Typ vct:TransactionRequestType um die folgenden Elemente erweitert:

Tabelle 17. vcc:SearchResultRequest - Elemente

NameTyp/VorkommenBeschreibung
StartIndexxsd:integerIndex des ersten Artikels, der übertragen werden soll (0-basiert)
Countxsd:integerAnzahl der Artikel
ResultFormatvcc:ResultFormatTypeFormat der Suchergebnisse
DoNotClosexsd:boolean?Flag, um das automatische Beenden der Transaktion bei Rückgabe des letzten Artikels zu verhindern

Die Antwort ist ein Element vcc:SearchResultResponse, welches den Typ vct:TransactionResponseType, wie folgt erweitert:

Tabelle 18. vcc:SearchResultResponse - Elemente

NameTyp/VorkommenBeschreibung
StartIndexxsd:integerIndex des ersten Artikels, der übermittelt wird (0-basiert)
Countxsd:integerAnzahl der Artikel, die übermittelt werden
ResultFormatvcc:ResultFormatTypeFormat der Suchergebnisse
cac:Item*Artikelstammdaten
vco:ItemDetail*Artikelstammdaten und Verfügbarkeit
cac:SellersItemIdentifcation*Artikelnummer

Regel: SearchResult. 

  • Ein veloconnect-konformer Server verarbeitet eine Anfrage SearchResult wie folgt: Über den Transaktionskontext ist die Gesamtzahl der Treffer sowie die Liste der gefundenen Artikel bekannt. Die vom Client übergebene Zahl StartIndex wird zunächst wie folgt modifiziert: Ist sie negativ wird sie durch 0 ersetzt, ist sie größer oder gleich TotalCount wird sie durch TotalCount - 1 ersetzt. Sodann wird gegebenenfalls die übergebene Zahl Count wie folgt modifiziert: Ist sie negativ, wird sie durch 0 ersetzt. Ist Startindex + Count > TotalCount, wird Count durch TotalCount - Startindex ersetzt. Der Server kann eine obere Schranke für Count festlegen und Count gegebenfalls durch diese obere Schranke ersetzen. Die obere Schranke darf weder kleiner als 50 noch kleiner als 2% von TotalCount sein. Die aktuellen Werte für TotalCount, Startindex und Count werden im Element SearchResultResponse abgelegt. Ebenso wird der Inhalt von ResultFormat übernommen.
  • Falls ResultFormat nicht den Inhalt COUNT hat, wird nun für Count viele Artikel der Trefferliste beginnend mit dem Index Startindex (Index ist 0-basiert) wie folgt verfahren:
    • Ist ITEM_DETAIL Inhalt von ResultFormat, wird gemäss Regel: GetItemDetailsList ein Element ItemDetail erzeugt.
    • Ist ITEM_TYPE Inhalt von ResultFormat, wird aus den Stammdaten des Artikels ein Element Item erzeugt.
    • Ist ID_ONLY Inhalt von ResultFormat, wird aus der Artikelnummer des Artikels ein Element SellersItemIdentification erzeugt.
  • Das vollständig ausgefüllte Element vcc:SearchResultResponse wird mit ResponseCode 200 an den Client übermittelt.
  • Die Transaktion verbleibt im Zustand 2, es sei denn, es gilt StartIndex + Count >= TotalCount und in vcc:SearchResultRequest hat das Element DoNotClose nicht den Wert true.