Kurzbeschreibung
Diese Action kann dazu genutzt werden um Edi-Nachrichten anhand ihrer Vorgänge zu splitten oder um Nachrichten per regulären Ausdruck zu splitten.
Einrichtung
Die GenericSplit Action wird als Java-Action eingerichtet (siehe Actions Anlegen). Dabei müssen die folgenden Einstellungen der Action vorgenommen werden.
Klasse: org.b2bbp.runtime.actions.managed.GenericSplit
Alle weiteren Einstellungen der Action, die nach Erstellen der Action gesetzt werden, finden sich in den nachstehenden Tabellen.
Action Eigenschaften (Erforderlich)
Hier genannte Eigenschaften müssen konfiguriert werden. Sonst wird bei der Ausführung der Action ein Fehler generiert.
Name der Eigenschaft | erlaubte Werte | Beschreibung |
DEFAULT_CHANNEL | Channelnamen | Dieser Parameter gibt den B3P_BASE_CHANNEL der Split-Nachrichten an. |
Action Eigenschaften (Optional)
Name der Eigenschaft | erlaubte Werte | Beschreibung |
SPLIT_ALWAYS |
<true|false> (Default: false) |
Gibt an, ob die Nachricht immer gesplittet werden soll auch wenn nur eine gesplittete Nachricht vorhanden ist |
MESSAGE_PRIO |
Ultra;Low etc. (Default: LOW) |
Name des Messagecontext Eintrages indem die zu splittende Nachricht steht |
CONFIG_EXTENSION_NAMES |
<Name der Split-Extensions> (;separiert) (Reihenfolge wichtig) |
Der Extension Inhalt wird weiter unten beschrieben |
CHANNEL_EXIT | <true|false> (Default: false) | Falls true findet keine weitere Verarbeitung der Nachricht nach einem Split mehr statt (im Ursprungschannel) |
SOURCE_FIELD |
MessageContext Parametername |
Wird nur benötigt wenn der Nachrichteninhalt nicht aus dem CURRENT_PAYLOAD genommen werden soll. Die Eigenschaft darf nicht nur angelegt und leergelassen werden. |
B3P_ACKNOWLEDGEMENT |
z.B. SPL oder B3P_ACKNOWLEDGEMENT = ${loadExtensionProperty(BS,${template(SPLIT_&(this.CHANNEL))},true)} |
Der Bestätigungsstatus der gesplitteten Nachricht wird auf den definierten Wert geändert, sofern dieser gesetzt ist. |
Split Extension
Wenn keine Split-Extension angegeben wird, wird automatisch pro Incident gesplittet. Pro Vorgang wird eine Edi-Nachricht erzeugt.
Mithilfe einer Split-Extension kann das Verhalten feiner gesteuert werden. Der Inhalt wird weiter unten beschrieben. Gibt man mehr als eine Split-Extensions an, werden die gesplitteten Nachrichten auch mehrmals gesplittet. Jeder Split Vorgang wird durch eine Extension beschrieben.
Eine Split Extension hat den folgenden Aufbau:
DEFAULT_GROUP_NAME Gibt den Gruppennamen an, falls kein expliziter Name angegeben wird.
ACCUMULATE_GROUPS=<Groupname1>;< Groupname2>;…;< GroupnameN>
GroupnameX_PATTERN=<Regex>
GroupnameX_NAME=< dynamic function>
Mithilfe von Accumulate Groups kann man gesplittete Vorgänge zusammenfassen. Jeder Vorgang der den regulären Ausdruck der Gruppe erfüllt wird dieser Gruppe zugeordnet. Der Gruppenname ist später der BASE_CHANNEL der Split Nachricht. Der Gruppenname kann auch eine dynamische Funktion sein.
ACCUMULATE_MODE=<DUPLICATE,FIRST_WINS>
Gibt an, ob ein Vorgang mehreren Gruppen zugeordnet werden kann(DUPLICATE) oder ob der Vorgang der ersten Gruppe zugeordnet wird.
REST_HANDLING=<REMOVE,ACCUMULATE, SEPERATE>
Gibt an was mit Vorgängen passiert, die keiner Gruppe zugeordnet werden kann.
REMOVE= Vorgänge werden gelöscht
ACCUMULATE= Vorgänge werden in einer Nachricht zusammengefasst
SEPERATE= Eine Nachricht pro Vorgang
Der Gruppenname der Restgruppe.
REST_GROUP_NAME=<dynamic function>
SPLIT_MODE=<REGEX oder INCIDENT>
Wenn der Splitmode Incident ist, werden die Nachrichten anhand des Vorganges gesplittet.
Format | Incident |
APERAK | ERC |
CONTRL | UCM |
INVOIC | UNH |
REMADV | DOC |
MSCONS | UNH |
UTILMD | IDE |
UTILTS | IDE |
REQOTE | UNH |
QUOTES | UNH |
ORDERS | UNH |
ORDRSP | UNH |
IFTSTA | EQD |
INSRPT | DOC |
PRICAT | LIN |
Wenn der Splitmode REGEX ist, werden die Nachrichten anhand der folgenden Regulären Ausdrücke gesplittet:
SPLIT_PATTERNS_HEAD>;< NameRegex2>,…,<NameRegexN>
SPLIT_PATTERNS_TAIL=<NameRegex1>;< NameRegex2>,…,<NameRegexN>
SPLIT_PATTERNS_PARTS=<NameRegex1>;< NameRegex2>,…,<NameRegexN>
NameRegexX=<Regex>
Die Head-Pattern geben den Prefix der Edi-Nachricht an.
Die Tail-Pattern geben den Suffix der Edi-Nachricht an.
Die Parts-Pattern geben den Inhalt der Vorgänge an.
Beispiel einer Extension mit REGEX Splitmode
Wenn über die Extension beispielsweise nur eine IFTSTA-Nachricht auf CNI-Ebene gesplittet werden soll, sieht die Extension wie folgt aus:
Hinweis: “IFTSTA_SPLIT” ist der Channelname, in dem die gesplitteten Nachrichten übergeben werden sollen
REST_GROUP_NAME=IFTSTA_SPLIT
SPLIT_MODE=REGEX
SPLIT_PATTERNS_HEAD=PART1
PART1=(?s)(^.*?')CNI\\+
SPLIT_PATTERNS_TAIL=PART2
PART2=(?s)'(UNT\\+.*)
SPLIT_PATTERNS_PARTS=PART3
PART3=(?s)'(?=CNI\\+)(.+?)(?=(')(?:UNT|CNI)\\+)
Action Eigenschaften (Experte)
Hier genannte Eigenschaften sollten nur in Ausnahmefällen oder durch Expertennutzer gesetzt werden, die mit dem Quellcode der Action vertraut sind.
Name der Eigenschaft | erlaubte Werte | Beschreibung |
BATCH_SIZE |
Integer (Default: 50) |
Größe der Batchsize beim Einfügen der Nachrichten. Bei Angabe von -1 gibt es nur einen Batch. |
Beispiel einer Extension für TRANOT
Hinweis: “TRANOT_SPLIT” ist der Channelname(mit DynamischeAusdryck), in dem die gesplitteten Nachrichten übergeben werden sollen, wenn in LIN LOC+Z99 gibt, wenn in LIN LOG kein Z99 gibt, werden Nachrichten in Channel in INBOUND_LIEF_ISU(ohne Dynamische sadrück9 geschoben.
# Konfiguration für Generic Split Action in Fall wenn keine Strategie in Code gibt.
DEFAULT_CHANNEL=INBOUND_LIEF
ACCUMULATE_GROUPS=LINLOCZ99ZUORDNUNG;NOLOCZ99ZUORDNUNG
LINLOCZ99ZUORDNUNG_PATTERN=LIN\\+(?=(.+)LOC\\+Z99(.+))
#Channel Name wird hier dynamisch ausgelesen TRANOT_CHANNEL
LINLOCZ99ZUORDNUNG_NAME=${template(&(this.FORMAT.type)_SPLIT)}
LINLOCZ99ZUORDNUNG_DYNAMIC=true
NOLOCZ99ZUORDNUNG_PATTERN=LIN\\+(?!(.+)LOC\\+Z99(.+))
NOLOCZ99ZUORDNUNG_NAME=INBOUND_LIEF_ISU
ACCUMULATE_MODE=FIRST_WINS
REST_HANDLING=ACCUMULATE
REST_GROUP_NAME=IN_ISU
#SPLIT MODE = REGEX notwendig, wenn keinSplitStrategie in Code gibt!
SPLIT_MODE=REGEX
SPLIT_PATTERNS_HEAD=PART1
PART1=(?s)(^.*?')LIN\\+
SPLIT_PATTERNS_TAIL=PART2
PART2=(?s)'(UNS\\+.*)
SPLIT_PATTERNS_PARTS=PART3
PART3=(?s)'(?=LIN\\+)(.+?)(?=(')(?:UNS|LIN)\\+)
Beispiel einer Extension für UTILMD. Strategie ist in Code bekannt. SPLIT_MODE=INCIDENT
# Konfiguration für Generic Split Action zum Split von UTILMD nach Storno und Nicht-Storno
DEFAULT_CHANNEL=INBOUND_LIEF
SPLIT_MODE=INCIDENT
ACCUMULATE_GROUPS=INFOZUORDNUNG;NOINFOZUORDNUNG;STORNO;NOSTORNO
INFOZUORDNUNG_PATTERN=IDE\\+(?=(.+)STS\\+7\\+\\+Z26(.+))
INFOZUORDNUNG_NAME=INBOUND_LIEF_DROP
NOINFOZUORDNUNG_PATTERN=IDE\\+(?!(.+)STS\\+7\\+\\+Z26(.+))
NOINFOZUORDNUNG_NAME=INBOUND_LIEF_ISU
STORNO_PATTERN=IDE\\+(?=(.+)STS\\+7\\+\\+E05(.+))
STORNO_NAME=IN_ISU_STORNO
NOSTORNO_PATTERN=IDE\\+(?!(.+)STS\\+7\\+\\+E05(.+))
NOSTORNO_NAME=IN_ISU_SPLIT
ACCUMULATE_MODE=FIRST_WINS
REST_HANDLING=ACCUMULATE
REST_GROUP_NAME=IN_ISU