WiM Mix Routing (Inbound)
Eine Edifact Nachricht kann mehrere Vorgänge enthalten. Es ist möglich, dass einige, aber nicht alle Vorgänge einer Nachricht WiM Prozessen zugeordnet sind. Solche Nachrichten werden im Folgenden WiM Mix Nachrichten genannt. Das folgende Routing behandelt WiM Mix Nachrichten.
Zu den Grundbausteinen gehören die WiMMixChannelDistribution, die ggf. in den WIM_INBOUND_MIX_CHANNEL routet. Dort wird die WiMSplitAction ausgeführt, die entsprechend WiM- & Nicht-WiM-Split-Nachrichten neustartet. die neugestarteten Nachrichten werden dann entsprechend in den WIM_INBOUND_CHANNEL oder aber in andere Channels geroutet.
WiMMixChannelDistribution
Die com.nextlevel.b2b.wim.channeldistribution.WiMMixChannelDistribution erkennt WiM Mix Nachrichten und steuert sie in den WIM_INBOUND_MIX_CHANNEL aus. Falls es sich um eine reine WiM Nachricht handelt, wird sie in den WIM_INBOUND_CHANNEL geroutet. Falls es sich um eine Nachricht handelt, die überhaupt keine WiM-Vorgänge enthält, wird der aktuelle Channel nicht geändert, die Aussteuerung muss also durch eine andere ChannelDistribution erfolgen.
Auf Grund ihrer Logik ersetzt diese ChannelDistribution die com.nextlevel.b2b.wim.actions.WiMChannelDistribution sowie die MessageByExtensionSplitChannelDistributionWim vollständig.
Die ChannelDistribution ist wie üblich in der Extension EXT_CHANNEL_DIST zu konfigurieren. Sie sollte ausgeführt werden, bevor andere ChannelDistributions die Nachricht einem Backend-Channel zuweisen.
Konfiguration Extension CHANNEL_DISTRIBUTION_EXECUTE_CONFIGURATION_WIM
Die Extension CHANNEL_DISTRIBUTION_EXECUTE_CONFIGURATION_WIM ermöglicht es, die Analyse durch die WiMMixChannelDistribution vorzeitig abzubrechen.
In der Extension kann je Zeile eine Bedingung angegeben werden. Mindestens eine Bedingung muss erfüllt sein, damit die ChannelDistribution weiter ausgeführt wird.
Falls die Extension nicht angegeben wird oder leer ist, wird die ChannelDistribution nie vollständig ausgeführt.
Beispiel Konfiguration:
equalsEdi(\"UNH+2+0\",MSCONS)=true
equalsEdi(\"UNH+2+0\",UTILMD)=true
vgl. hierzu auch Customizing B2B
Konfiguration Extension CHANNEL_DISTRIBUTION_SPLIT_EXTENSION_WIM
Zunächst muss hier die Klasse konfiguriert werden, mit deren Hilfe die Prüfung auf WiM erfolgen soll:
CLASSNAME=com.nextlevel.b2b.wim.channeldistribution.PureExtensionSplitWim
In der Extension CHANNEL_DISTRIBUTION_SPLIT_EXTENSION_WIM müssen dann alle Formate angegeben werden, die auf ihre Zuordnung zum WiM untersucht werden sollen (Whitelist).
Beispiel Konfiguration:
B3P_FORMAT_VALUES=MSCONS,UTILMD,IFTSTA
vgl. hierzu auch Customizing B2B
Zusätzlich können in der Extension CHANNEL_DISTRIBUTION_SPLIT_EXTENSION_WIM beide Standard-Channels auf beliebige andere Channel gemappt werden. Z. B.:
WIM_INBOUND_CHANNEL=INBOUND_WIM
optionale Konfiguration
Die optionalen Konfigurationsoptionen, mit denen die MessageByExtensionSplitChannelDistributionWim konfiguriert wird, werden auch auf die WiMMixChannelDistribution angewendet.
Details finden Sie in den Aussteuerungsregeln.
Info Protokoll
Um die Verarbeitung durch diese ChannelDistribution genauer nachzuvollziehen, kann ein Info-Protokoll in den technischen Details erzeugt werden:
Hierfür ist in der Extension CHANNEL_DISTRIBUTION_SPLIT_EXTENSION_WIM
die Property B3P_INFO_PROTOCOL=true
anzugeben.
Falls das Protokoll nicht benötigt wird, sollte es deaktiviert werden, um die Performance zu verbessern und den Speicherverbrauch zu reduzieren.
IndikatorRouting
Die alte WiMChannelDistribution bot die alternative Möglichkeit, eine Edifact über das IndikatorRouting auszusteuern. Falls Sie dieses Feature nutzen möchten, gilt:
Die IndikatorRouting-Regeln in der Extension GENERIC_MAP
werden von der WiMMixChannelDistribution nur insofern beachtet, als kein Routing ins WiM erfolgt, wenn eine Regel greift. Um die IndikatorRouting-Regeln anzuwenden, ist die com.nextlevel.b2b.wim.actions.IndicatorChannelDistribution
direkt nach der WiMMixChannelDistribution zu konfigurieren.
WIM_INBOUND_MIX_CHANNEL
Vor dem Split ist zunächst die Edifact-Validierung auszuführen. Ebenso sind die CONTRL und ggf. die APERAK zu verschicken. Am Ende dieses Channels ist die WiMSplitAction auszuführen, um die WiM Mix Nachricht zu splitten.
WiMSplitAction
Durch die com.nextlevel.b2b.wim.actions.WiMSplitAction wird ein klassischer Split ausgeführt: die Nachricht wird in Splitnachrichten geteilt; diese werden einzeln neugestartet. Beim Split einer Wim Mix Nachricht entstehen immer zwei Nachrichten: ein Teil, der nur WiM-Vorgänge enthält, und ein Teil, der alle anderen Vorgänge enthält.
Diese Action setzt folgende MessageContext Attribute: B3P_SKIP_VALIDATION=true & SKIP_APERAK_AND_CONTRL=true
Sie setzt außerdem das MessageContext Attribute WIM_SPLIT_MODE. Anhand dieses Attributes kann in der folgenden Verarbeitung der Status überprüft werden. Folgende Werte sind möglich:
- SPLIT
- WIM_ONLY
- NO_WIM
Falls es sich bei der Nachricht nicht um eine WiM Mix Nachricht handelt, hat diese Action keinen Effekt.
Die Action überschreibt die folgenden Payload-Typen im MessageContext mit der Splitnachricht:
- B3P_BASE_MESSAGE
- CURRENT_PAYLOAD
Bei Bedarf können weitere Payload-Typen angegeben werden. Hierfür ist folgende ActionProperty zu setzen: ADDITIONAL_PAYLOADS
. Als Wert ist eine Komm-separierte Liste anzugeben.
Die optionalen Konfigurationsoptionen, mit denen die MessageByExtensionSplitChannelDistributionWim konfiguriert wird, werden auch auf die WiMSplitAction angewendet.
WiM Split Nachrichten
Da die Splitnachrichten nun keine WiM Mix Nachrichten mehr sind, werden sie nicht erneut in den WIM_INBOUND_MIX_CHANNEL geroutet. Da die Attribute B3P_SKIP_VALIDATION & SKIP_APERAK_AND_CONTRL gesetzt sind, wird die Validierung nicht erneut ausgeführt und die CONTRL wird nicht erneut versendet.