Formaterkennung

Formaterkennung

Begriffsklärung:

  • Presentation: Das Dateiformat der Nachricht (EDI, XML oder CSV)
  • Format: Metadaten einer Nachricht (Typ, Version, Referenznummer, Partner, Sender,… sowie eine HashMap attributes für weitere Metadaten)
  • MessageContext: Eine Map um Informationen und Nachrichten zu transportieren. Der MessageContext wird der Formaterkennung übergeben und danach immer weiter gereicht zur Channeldistribution und dann weiter durch die Services und Actions der einzelnen Channels.

Funktionsweise:

Die Formaterkennung wird immer durchlaufen. Dabei wird die Nachricht aus dem Puffer geholt und wie folgt analysiert:

  1. Übergabe der Nachricht sowie des MessageContext an FormatRecognitionFactory. Diese prüft mit Hilfe des PresentationAnalyzer den Typ der Nachricht (EDI oder XML). Der PresentationAnalyzer gibt ein Format-Objekt mit entsprechend dem Typ gesetztem presentation-Attribut zurück.
  2. Anhand presentation-Attributs des Format-Objekts wird nun über die FormatAnalyzerFactory ein entsprechender FormatAnalyzer generiert. Mit diesem wird die Nachricht analysiert und weitere Attribute im Format-Objekt gespeichert.
  3. Schließlich gibt die FormatRecognitionFactory das Format-Objekt zurück.

Alle Klassen befinden sich unterhalb des Package org.b2bbp.format.recognition

FormatAnalyzer:

Folgende FormatAnalyzer stehen zur Verfügung:

  • EDIAnalyzer: Erkennung ist hart kodiert und statisch. In der Version 2.0 soll die Erkennung generisch erfolgen.
  • XMLAnalyzer: Nutzt DOM basiertes XML Parsing, was bei großen XML-Dateien Speicherprobleme verursacht. Der XMLAnalyzer ist statisch.
  • XMLAnalyzer2: Nutzt SAX basiertes XML Parsing (Eventbasiert, große XML-Dateien können problemlos verarbeitet werden). Ausgewählt wird der XMLAnalyzer mittels eines DIALECT Properties. In Version 2.0 wird nur noch der XMLAnalyzer2 genutzt.
  • CSVAnalyzer: Erkennung ist statisch.

Sonstiges:

Ein nützliches Werkzeug ist der EDIPathProcessor. Mit dessen Hilfe ist es möglich in EDI-Daten mit XPath ähnlichen Ausdrücken zu navigieren. Beispiel: NAD[1]+2+3 bedeutet: Den ersten von allen NAD-Einträgen nehmen, danach zwei “+” überspringen und danach drei “:” überspringen. Das Element hinter dem letzten übersprungenen Doppelpunkt wird durch diesen Ausdruck gewählt.

Weitere Information befinden sich in der Dokumentation zu EDIPATH

View Me   Edit Me