Table of Contents

Converter

Verwendete Komponenten

Übersicht

Der Converter enthält vom Downloader eine URI, unter welcher die rohen Feedaten abzurufen sind. Eine minimale Beschreibung der Daten ist erforderlich, um eine Decodierung durchzuführen und den richtigen Parser auszuwählen. Die Konfiguration wird, über die Kunden-ID, mittels des zentralen Config Servers abgerufen. Die Rohdaten werden dann in zwei Schritten in eine generische Beschreibung, codiert also JSON, zurückgegeben.

Erster Schritt ist die Überführung der Rohdaten in generisches JSON. Der Schritt dient dazu, Formate von Feldern zu vereinheitlichen und eine schwache Typisierung einzuführen. Beispielsweise das Parsen von URLs, Preisen, Größenangaben, u.s.w. Optional ist es möglich, das Validieren von Feed-Daten dem Kunden anzubieten, indem wir eine Spezifikation öffentlich machen, gegen die erzeugte Feeds geprüft werden können. Dies setzt voraus, dass das Format bereits JSON ist, hat aber den Vorteil, dass der Kunde weiß, dass die Daten verarbeitet werden können. Der Schritt endet mit einem JSON-Objekt pro Produkt, dass alle Felder enthält. Eine Filterung wird im nächsten Schritt durchgeführt.

Der zweite Schritt besteht aus einer Überführung in das hauseigene JSON-Format, dass nur noch Felder enthält, die für die tatsächliche Verarbeitung benötigt werden und ggf. Annotationen die kundenspezifisch sind. Z.B. ein extra booleschen Feld “Umstandsmode”, dass eine Aufteilung von Kategorien erlaubt, oder eine Unifikation von Zuständen bzgl. der Verfügbarkeit, oder eine Erweiterung der Kategorien, Stichwort Baum. Hier gilt sicherzustellen, dass alle Post-Processor-Funktionen der V3 möglich sind.

Fehlerbehandlung

Da eine feingranulare Kontrolle nicht möglich ist, wird ein Feed abgelehnt, falls mehr als 20% der Produkte fehlerhaft sind, also nicht geparsed werden konnten. Eine nichtvollständige Liste von Fehlerarten folgt:

Interface

Der Downloader ruft die Komponente wie folgt auf:

Converter(Kunden_ID, Kunden_Feed_URI)

Der Converter ruft den Config Server wie folgt auf:

Wert_Feldname = ConfigServer.get(Kunden_ID, Feldname)

Die Ausgabe des Converters:

Liste von Produkten, die als Dictionary gespeichert sind