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
Name | Typ/Vorkommen | Beschreibung |
---|---|---|
StartIndex | xsd:integer | Index des ersten Artikels, der übertragen werden soll (0-basiert) |
Count | xsd:integer | Anzahl der Artikel |
ResultFormat | vcc:ResultFormatType | Format der Suchergebnisse |
DoNotClose | xsd: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
Name | Typ/Vorkommen | Beschreibung |
---|---|---|
StartIndex | xsd:integer | Index des ersten Artikels, der übermittelt wird (0-basiert) |
Count | xsd:integer | Anzahl der Artikel, die übermittelt werden |
ResultFormat | vcc:ResultFormatType | Format 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.