Etui Reißverschluss HerzAusschnitt ärmelloses Cocktailkleid mit Kristall qz2oZP

uJPX9babuA
Etui Reißverschluss Herz-Ausschnitt ärmelloses Cocktailkleid mit Kristall qz2oZP
Etui Reißverschluss Herz-Ausschnitt ärmelloses Cocktailkleid mit Kristall qz2oZP Etui Reißverschluss Herz-Ausschnitt ärmelloses Cocktailkleid mit Kristall qz2oZP Etui Reißverschluss Herz-Ausschnitt ärmelloses Cocktailkleid mit Kristall qz2oZP Etui Reißverschluss Herz-Ausschnitt ärmelloses Cocktailkleid mit Kristall qz2oZP
Cuxhavener Nachrichten
Anmelden
Reißverschluss Perlenbesetztes Plissiertes A Linie Anständiges Ballkleid pr3f8JqR
Ärmelloses Herz Ausschnitt Chiffon ALinie Knielanges Cocktailkleid BjVxmK
ReadMore
A linie Prinzessin ärmellos Kirche VAusschnitt Brautkleid mit Rüschen gEPHp

Natürliche Taile HerzAusschnitt Meerjungfrau Stil Tüll Ballkleid ohne Ärmeln tDinK
MeerjungfrauLinie/MermaidStil Ärmellos Chiffon UAusschnitt Perlenstickerei Sweep/Pinsel Zug Zwei Stück Kleider gRXQ7pw

Unsere Reporting-Plattform hat viele Schnittstellen zu externen Systemen, die mehrmals täglich abgefragt werden. Die gelieferten Daten werden in regelmäßigen Abständen über Importe in unsere Systeme übertragen. Sowohl unsere Importsysteme als auch die Schnittstellen werden permanent von Menschen gepflegt und aktualisiert. Dadurch gibt es immer wieder Fehler beim Import von Daten. Wir müssen davon ausgehen, dass – egal wie gut unsere Software ist – wir diese Fehler nicht in allen Fällen vermeiden können.

Murphy’s Law

Alexander Onea

Interessanterweise entdecken wir bei Schnittstellenfehlern immer wieder ähnliche Ursachen – meist aufgrund mangelnder Erfahrung der Entwickler. Im Folgenden haben wir zusammengestellt, was sich nach mehreren Jahren Schnittstellen-Integration bei uns als „Best Practice“ etabliert hat. Und weil viele dieser Dinge auf der Basis von XMV (Xunder Menschenverstand) zu betrachten sind, könnte es u.U. für den ein oder anderen mit Big Data beschäftigten Menschen eine hilfreiche Aufstellung sein.

Die Einhaltung dieser Regeln geht oft auf Kosten von Speichermenge und Ausführungsgeschwindigkeit. Auch die (einmaligen) Entwicklungskosten steigen leicht. Die Missachtung dieser Regeln führt aber dazu, dass die Fehlersuche im Livebetrieb sehr aufwendig wird und manche Probleme gar nicht reproduzierbar sind. Ärger intern und mit Kunden ist vorprogrammiert. Die Kosten, die hierdurch entstehen, sind um 2-3 Größenordnungen schlimmer als Hardware- und Entwicklungskosten!

Robustheit und Nachvollziehbarkeit ist wichtiger als Geschwindigkeit und Speicherplatz. Die angeführten Beispiele gehen von Java-Code aus, analog dazu funktionieren die Tipps für jede gängige andere Sprache auch.

Grundansatz

Fehler in den Daten gehören zum daily business und sind als NORMALFALL zu betrachten. Je mehr Nutzer und Daten wir verwalten, desto wahrscheinlicher ist es, dass an einem Tag ein oder mehrere Fehler in den Daten bestehen. Das kann unmöglich verhindert werden. Unser Ziel ist es also, die Ursache des Fehlers möglichst schnell und mit möglichst wenig Frust zu finden und in kurzer Zeit eine geeignete Lösung anzubieten.

Im Folgenden also eine Liste von Features die eine „gute Schnittstelle“ hat, um die Fehlersuche, Nachvollziehbarkeit und Robustheit eines Systems zu erleichtern.

1. Schnittstellen sind robust und fehlertolerant 2. Fehler in den Schnittstellen lassen sich gut nachvollziehen 3. Fehler lassen sich möglichst leicht korrigieren .

Eine gute Schnittstelleist kommunikativ

Beispiel Java: Es wird natürlich nichts nach System.out geloggt, sondern es wird ein Logger verwendet (log4j, slf4j oder Java Logging sind im Einsatz). Im Gegensatz zu System.out kann man die Logger nämlich geeignet konfigurieren (um z.b. aus Log.ERROR eine Mail zu senden o.ä.), selektiv im Livebetrieb zwischen TRACE, DEBUG, INFO und WARN auswählen und Inhalte geeignet filtern:

Best practice:

Log.INFO:

Log.WARN:

informiert über „bekannte“ Fehler, z.B.

Log.ERROR:

Eine gute Schnittstellespeichert die importierten Rohdaten, ohne sie zu verändern.

Häufig ist der Download der Datei (FTP, HTTP etc) simpel genug und wird mit stabilen Tools gemacht. Es kommt aber vor, dass eine bestimmte Datei, die am <Samstag> heruntergeladen wird, nicht die selben Informationen enthält ist wie die, welche am <Montag> heruntergeladen wurde. Der Import vom Samstag schlägt fehl, der vom Montag nicht. In dem Fall ist es nicht einfach, einen Fehler nachzuvollziehen oder zu reproduzieren. Warum? Um Nachvollziehbarkeit zu gewährleisten, benötigen wir also dringend die zum Import-Lauf passende Originaldatei.

Best practice:

Eine gute Schnittstelleläuft immer durch und beendet korrekt

…auch wenn der Datensatz eines bestimmten Kunden nicht importiert werden kann. Häufig ist es so, dass eine Schnittstelle alle Kundendatensätze auf einmal importiert. Wenn von 1000 Kunden einer einen Setupfehler hat und ihre Daten nicht importiert werden können, sollten die anderen 999 Kunden davon nichts mitbekommen.

Best practice:

z.B. eine Transaktion pro Kunde. Wenn eine Transaktion fehlschlägt, Logging betreiben und mit dem nächsten Kunden weitermachen.

Eine gute Schnittstelle erzeugt System.exit() ausschließlich in der main-Methode

… nie in anderen Methoden der Main-Klasse, auf keinen Fall in irgendwelchen anderen Klassen.

Best practice:

Anhand dieser Logik können regelmäßig wiederholende Jobs so konfiguriert werden, dass Automatismen die Beobachtung der Schnittstellen übernehmen und z.B. automatisiert Fehlermeldungen anhand des Exit-Code generieren.

Eine gute Schnittstelle unterstützt simples Regression-Testing

Eine gute Schnittstelle hat bereits Basis-Routinen in den Unit Tests zur Verfügung, die es erlauben, eine Datei in src/test/resources/ zu packen und diese mit einem neuen TestCase testweise zu importieren. Damit kann ein neuer Fehler oder eine neue Anforderung sofort in der Entwicklung bearbeitet werden. Das Setup eines neuen Regression Tests sollte so einfach sein, dass man es in der täglichen Routine machen kann und nicht erst im „stressigen“ Fehlersuchmodus erst die gesamte Prozedur des Test-Bootstrapping (Test-Datenbanken, Migrationen, Status-Updates) aufsetzen muss.

Eine gute Schnittstelleerlaubt den Nachimport aus vorliegenden Rohdaten

Notwendig, wenn ein vollständiger Import aller Daten zu lange braucht.

Häufig kann der Fehlerfall korrigiert werden, indem ein Anwendungsprogramm ein Update bekommt. In diesem Fall wird dann der Importer im nächsten Release neu deployt und es sollte ein erneuter Versuch gestartet werden, die Dateien zu importieren. Die Frage ist häufig „ab wann wird nachimportiert“, u.U. gab’s auch weitere historische Fälle, die inzwischen dadurch korrigiert werden. Dies kann je nach Schnittstellenkomplexität etliche Konsequenzen haben.

Zu beachten: Welche anderen Datenverarbeitungs-Jobs sind diesem Job dann nachgelagert? Müssen diese auch aktualisieren oder nicht? Wenn ja, ab wann? Gleiches Datum, vorheriges Datum etc?

Eine gute Schnittstelleerlaubt Nach-Downloads

Notwendig, wenn ein vollständiger Import aller Daten zu lange braucht.

Vor allem wenn der Download nicht trivial ist (z.B. XML-Schnittstelle mit Handshake etc)

Eine gute Schnittstelleunterstützt, wenn nötig, Korrekturen

Nowendig, wenn Datenkorrekturen erst innerhalb unserer Plattform möglich sind (z.B. wenn der Datenzulieferer nicht mehr korrigieren kann)

Es gibt komplexe Fälle, bei denen Setup-Fehler passieren. Dieser Setup-Fehler schlägt sich über die API durch und kann durch die API-Owner nicht rückgängig gemacht werden. Dadurch schlägt sich der Datenfehler in den User Interfaces durch und Analysen werden erschwert. Endkunden sollen aber von diesem Fehler nichts mitbekommen.

Die Korrektur direkt in der Rohdatei ist absolut verboten. Das kommt im Grunde Datenmanipulation mit Datenverlust gleich, denn so eine Korrektur lässt sich sehr schwer nachvollziehen.

Ein Korrekturmodus erlaubt das Hinterlegen von zusätzlichen Dateien, z.B.

Der Nachimport eines Tages berücksichtigt dann die Korrekturdaten mit. Rohdaten dürfen NICHT verändert werden.

Unsere Erkenntnis daraus:

Mithilfe dieser recht einfachen Methoden konnten wir innerhalb von vier Jahren über 200 (!) Schnittstellen implementieren. Über 160 dieser Schnittstellenprogramme laufen immer noch mindestens täglich. Wir erkennen Fehler im Normalfall 30 Minuten, nachdem sie verursacht wurden und können Korrekturen meist noch am selben Werktag in den Betrieb übernehmen.

Teile diesen Artikel 1Schulter Long Sleeves Sheath Mini StretchSatin Party Kleidenes CF6eJOO
Share

Wurden die teilweise nicht lieferbaren Artikelmengen auf diese Weise automatisch umgebucht, so erscheint keine offene Rückmeldung vom ursprünglichen Lieferanten. Abhängig vom Konfigurationsparameter Tüll Applikationen Kurze Ärmel Knielanges Mutterkleid pa/a/p 5abvV
kann die automatisch bearbeitete Rückmeldung für vollständig nicht lieferbare Artikel jedoch angezeigt werden.

Beispiel: Artikel ist nicht lieferbar, aber die Rückmeldung ist nicht offen (keine rotes Icon, keine Checkbox vor der Position), weil der Artikel automatisch umgebucht wurde

Diese Einstellung nehmen Sie im Konfigurationsparameter 'Nicht lieferbare Artikel anzeigen' vor. Standardmäßig ist der Konfigurationsparameter aktiviert, d.h. wenn ein Lieferant zu einem Artikel die Rückmeldung sendet, dass dieser aktuell nicht lieferbar ist, wird der betreffende Artikel trotzdem in der Bestellung angezeigt. Sollen solche vollständig nicht lieferbare Artikel in der Bestellung gar nicht angezeigt werden, deaktivieren Sie diesen Konfigurationsparameter. Sie finden den Konfigurationsparameter in den Systemeinstellungen der Warenlogistik , Gültigkeitsbereich 'Systemparameter' auf der Seite Artikel bestellen .

Beispiel: Artikel ist nicht lieferbar, er wird aber trotzdem angezeigt

Falls für eine Bestellung der mit dem Lieferanten vereinbarte Mindestbestellwert oder die Mindestpackungszahl unterschritten wurde, wird beim Bestellversuch von IXOS eine Hinweismeldung eingeblendet. Voraussetzung dafür ist, dass Sie den Mindestbestellwert und die Mindestpackungszahl in den Konditionsvereinbarungen auf der Seite Allgemein hinterlegt haben. Trompete/MeerjungfrauLinie Perlen verziert Ärmellos Herzausschnitt Hofschleppe Satin Kleid 1BM9zN4Lhy

Falls Sie mit dem Lieferanten einen Mindestbestellwert vereinbart haben, dieser jedoch nicht in IXOS hinterlegt ist, dann erhalten Sie erst in der Rückmeldung vom Lieferanten einen Hinweis auf den unterschrittenen Mindestbestellwert.

Wenn der MSV3-Lieferant in der Rückmeldung zur gesamten Bestellung einen Fehler meldet, so wird dieser im Meldungstext präzise ausgewiesen. Auf diese Weise können Sie zielgerichtet mit dem Lieferanten kommunizieren, um den Fehler zu beheben. Die Fehlermeldungen enthalten jeweils den Fehlercode und einen fachlichen Fehlertext.

In der Kopfzeile der Rückmeldung und in der Bestellansicht wird dann weiterhin auf die beim Lieferanten eingepflegte Lieferzeit zugegriffen.

Im Fall, dass der Bestellschluss noch nicht abgelaufen ist, wird hier jedoch die nächstmögliche Lieferzeit angezeigt, auch wenn die Bestellzeit bereits abgelaufen ist.

Rechtliche Informationen

Bei Links und Verweise auf Produkte handelt es sich um Empfehlungen. Bei Weiterleitung zu Amazon* oder Online Shops erhalten wir beim Kauf von Produkten eine Provision, welche uns hilft unser Ratgeber Portal zu betreiben und aktuell zu halten. (*Amazon und das Amazon-Logo sind Warenzeichen von Amazon.com, Inc. oder eines seiner verbundenen Unternehmen)

Wer wir sind

Haus und Gartenblog ist ein Internet Blog mit redaktionell geprüften Einträgen von Blog Beiträgen und Artikeln. Besucher finden Themen relevante Blog Artikel und Produkt Berichte über Haus und Garten. Anbieter mit Produkten über Haus und Garten haben die Möglichkeit im Blog auf ihr Unternehmen oder ihre Artikel aufmerksam zu machen.