Mscons2CsvGenerator Content
Mit Hilfe der Mscons2CsvGenerator NLC Contents können aus MSCONS Lastgang Edifact Nachrichten verschiedene CSVs generiert werden.
Das Format der Ziel CSV kann in großem Maße konfiguriert werden und verfügt über zwei verschiedene Modifikationen. Außerdem existieren einige erweiterte Konvertiereungen, welche die Optionen erheblich erweitern.
Allgemeine Konfiguration und Funktion
Dieser Content wird per NLCAction2 verwendet. Diese benötigt als Konfiguration die Angabe des zu ladenden Contets und eine Extension, in welcher die Konfiguration für die CSV hinterlegt ist.
B3P_PARSING_TEMPLATE = <Name der Extension>
In der Extension werden für jede Zeile dann Vorlagen hinterlegt, wie diese Zeilen aufgebaut werden sollen, sowie einige allgemeine Einstellungen. Zu den allgemeinen Einstellungen gehören das zu verwendende Datumsformat, welches Dezimaltrennzeichen zu verwenden ist und welcher grundlegender Aufbau des CSV gilt.
Die normale, serielle Verarbeitung zur CSV sieht vor, dass eine Kopfzeile geschrieben wird, welche von den einzelnen Positionsdaten gefolgt werden, die dann die jeweiligen Messwerte anführen.
Kopfdaten
DE123;1-1:1.8.1
1000;220
1001;220
DE456;1-1:1.29.1
2000;67
2003;67
Kopfdaten
Positionsdaten 1 (Meldepunkt;Obiszahl)
erster Messwert von Positionsdaten 1
zweiter Messwert von Positionsdaten 1
Positionsdaten 2 (Meldepunkt;Obiszahl)
erster Messwert von Positionsdaten 2
zweiter Messwert von Positionsdaten 2
Alternativ kann eine aggregierte Darstellung verwendet werden. In dieser werden erst alle Messwerte nach Zeiten geordnet und dann nach Zeiten sortiert dargestellt. Für die Beispieldaten von der seriellen Darstellung ergibt das dann folgendes (ohne den Tabellenrahmen, der dient nur der Übersichtlichkeit)
Kanal: | DE123 | 1-1:1.8.1 | DE456 | 1-1:1.29.1 |
---|---|---|---|---|
Datum Uhrzeit | Wert[kW] | Status | Wert[kW] | Status |
01.01. 00:15 | 1000 | 220 | 2000 | 67 |
01.01. 00:30 | 1001 | 220 | 2002 | 67 |
Konkrete Konfiguration
Action: NLCAction2 Eigenschaften an der Action
B3P_PARSING_TEMPLATE = <Name der Extension>
B3P_USE_MAPPING_FEATURE = true
B3P_USE_REGISTRY = true
B3P_USE_VALIDATION_FEATURE = false
content-nlc-out = <Name unter dem der Content hochgeladen wurde>
content-nlc-provider = <eingestellter Provider des Contens, normalerweise NLI>
content-nlc-version = <version, unter der der Conten hochgeladen wude, normalerweise 1.0>
Die in B3P_PARSING_TEMPLATE hinterlegte Extension wird als Extension-Map konfiguriert, als Schlüssel=Wert Paare. Die verfügbaren Schlüssel repräsentieren immmer einen bestimmten Anteil der CSV, wie eben die Kopfdaten oder jeweils einen konkreten Messwert.
In jeder der Wertezeilen können bestimmte Codewörter verwendet werden, die dann in der fertigen CSV durch die entsprechenden Werte ersetzt werden, wobei allgemeinere Werte (wie Kopfdaten) auch in tiefer liegenden Strukturen verwendet werden können. Außerdem können natürlich auch blanke Texte verwenden.
Die verwendbaren Schlüssel samt der verwendbaren Codewörter sind wie folgt
HEADER (nur einmal pro CSV)
#sender# MPID des Absenders
#receiver# MPID des Empfängers
#message_identifier# Nachrichtenreferenz
#reference_id# ???
#send_date# Versanddatum der Nachricht (aus dem DTM+137)
BLOCK (Positionsdaten/LIN Segmentgruppe)
#block_from# aus dem SG6 DTM+163
#block_to# aus dem SG6 DTM+164
#location# aus dem SG6 LOC+172
#obis# die Obis-Kennzahl aus dem SG9 PIA+5
RECORD (ausschließlich, eventuell HEADER und BLOCK Daten auch ersetzen?)
LINE (Mengenangaben)
#from# aus dem SG10 DTM+163
#to# aus dem SG10 DTM+164
#quantity# aus dem SG10 QTY F6060
#status# aus dem SG10 QTY 6063
#belvisStatus# aus dem SG10 QTY 6063 (code übersetzt in die zugehörigen Belviscodes)
Für den Wert #quantity#
gibt es eine Besonderheit. Die Werte können mit einem fixen Faktor multipliziert werden und die Darstellung kann mit Java FormatString angepasst werden. Das normale Format ist mit maximal drei Nachkommastellen. Die Konfiguration sieht wie folgt aus #quantity*(<Faktor>)F(<Formatstring>)#
, wobei <Faktor > und <Formatsting> enstprechend ersetzt werden müssen, und unabhängig voneinander verwendet werden können. Damit ist #quantity#
gleichwertig zu #quantity*(1)F(0.000)#
Zusätzlich gibt es die Schlüssel für den Modus und einige allgemeine Einstellungen
DATEFORMAT das Datumsformat, wie z. B: DTMs geschrieben werden sollen
LOCALE_FOR_DECIMAL_SEPARATOR Länderkürzel (Default: EN für einen Punkt)
MODE=(SERIAL|AGGREGATED)
#lb# ein Zeilenumbruch
Hiermit ergibt als Beispielkonfiguration für das serielle Beispiel weiter oben
HEADER=Kopfdaten
BLOCK=#location#;#obis#
LINE=#quantity#;#status#
Die Konfiguration für die aggregierte Darstellung ist etwas geändert. Hier kann für die Schlüssel BLOCK_HEADER, BLOCK, RECORD und LINE ein Präfix für jedes Zeile angegeben werden und welche Werte dann konkret wiederholt werden sollen. Die Präfixe sind durch #repeatForMeterings#
von dem zu wiederholenden Teil getrennt.
Für das aggregierte Beispiel von oben ergibt sich damit folgende Konfiguration
MODE=AGGREGATED
BLOCK=#lb#Kanal:;#repeatForMeterings##location###obis#;
RECORD=#lb#Datum Uhrzeit;#repeatForMeterings#Wert[kW];Status
LINE=#lb##to#;#repeatForMeterings##quantity#;#status#;
Entwickler Hinweise
relevante Klassen
org.b2bbp.edi.mscons.MsconsCsvGenerator
(beinhaltet die meiste Logik und liegt in der B2B)
com.nextlevel.nlc.msconsCsv.MsconsToCsvGenerator
(der IHPC Konverter des Contents)
Für erweiterte Funktionen siehe:
org.b2bbp.edi.mscons.MsconsCsvGeneratorAdvanced
(allgemeine Erweiterungen)
org.b2bbp.edi.mscons.SingleLineCsvGenerrator
(allgemeine Erweiterungen)
com.nextlevel.nlc.msconsCsv.ConverterMscons2LpexCsv
(erweitertes Spezialmapping)
com.nextlevel.nlc.clousrecsv.ConverterMscons2ClosureCsv
(erweitertes Spezialmapping)