Konfiguration von Channeldistributionen (CD) über die Extension EXT_CHANNEL_DIST
Übersicht
Channeldistributionen können über die Extension EXT_CHANNEL_DIST konfiguriert werden. Die Extension ermöglicht die Steuerung, wann und unter welchen Bedingungen eine CD ausgeführt wird.
Registrierung von Channeldistributionen
Registered Classes
Zunächst müssen alle zu verwendenden Channeldistributionen registriert werden:
registered.classes=<Klassenname1>;<Klassenname2>;<Klassenname3>
Hinweise:
- Mehrere Klassen werden mit Semikolon (
;) getrennt - Die CDs werden in der angegebenen Reihenfolge ausgeführt
- Jede CD erhält als Input-Channel den Output der vorherigen CD
Beispiel:
registered.classes=org.b2bbp.channels.extension.IndexingService;org.b2bbp.channels.extension.MyCustomDistribution
Konfigurationsmöglichkeiten pro Channeldistribution
Für jede registrierte Channeldistribution können folgende Parameter konfiguriert werden. Die Konfiguration erfolgt immer mit dem Präfix <Klassenname>.
1. Registrierung für Service-IDs
<Klassenname>.registeredServiceIds=<ServiceId1>;<ServiceId2>;...
Zweck: Bestimmt, für welche Service-IDs die CD ausgeführt werden soll.
Mögliche Werte:
*= CD wird für alle Service-IDs ausgeführt (Wildcard)<ServiceId1>;<ServiceId2>= CD wird nur für die angegebenen Nachrichten Inbound Services ausgeführt
Standardverhalten:
Wenn keine registeredServiceIds konfiguriert sind, wird die CD für alle Service-IDs ausgeführt (es wird eine Warnung geloggt).
Beispiel:
org.b2bbp.channels.extension.IndexingService.registeredServiceIds=*
org.b2bbp.channels.extension.MyCustomDistribution.registeredServiceIds=SERVICE_A;SERVICE_B
2. Ausführung auf Channel-IDs
<Klassenname>.executeOnChannelId=<ChannelId1>;<ChannelId2>;...
Zweck: Filtert, die Nachrichten nach Inbound-Channels für welche die CD ausgeführt werden soll.
Mögliche Werte:
*= CD wird für alle Nachrichten ausgeführt (Wildcard)<ChannelId1>;<ChannelId2>= CD wird nur für Nachrichten in den angegebenen Channels ausgeführt
Standardverhalten:
Wenn keine executeOnChannelId konfiguriert ist, wird die CD auf allen Channels ausgeführt (es wird eine Warnung geloggt).
Beispiel:
org.b2bbp.channels.extension.IndexingService.executeOnChannelId=*
org.b2bbp.channels.extension.MyCustomDistribution.executeOnChannelId=CHANNEL_IN;CHANNEL_OUT
3. Bedingtes Ausführen einer CD
<Klassenname>.contextParserCondition=<Template Ausdruck>
Zweck: Definiert eine Bedingung, die erfüllt sein muss, damit die CD ausgeführt wird.
Funktionsweise:
- Der Template-Ausdruck wird mit dem ContextParser ausgewertet
- Wenn der Ausdruck
"true"zurückgibt, wird die CD ausgeführt - Wenn der Ausdruck
"false"oder einen anderen Wert zurückgibt, wird die CD übersprungen - Bei Exceptions wird das Verhalten durch die globale Property
B3P_DEFAULT_ON_CD_CONDITION_ERRORgesteuert (Standard:true= CD wird ausgeführt)
Standardverhalten:
Wenn keine Condition angegeben wird, wird die CD standardmäßig ausgeführt.
Monitoring:
Bei aktiviertem VerboseMode (siehe Global Property B3P_VERBOSE_MODE) werden Condition und Result als Monitoring-Attribute gespeichert.
Beispiel:
Führe den Indexservice nur für Nachrichten bestimmter Partner aus, die in der Extension EXCLUDE_ILNS konfiguriert sind:
org.b2bbp.channels.extension.IndexingService.contextParserCondition=${elp(EXCLUDE_ILNS,${template(EXCLUDE_&(this.FORMAT.partnerCode))},true)}
4. Abbruch der Channeldistribution nach Ausführung
<Klassenname>.skipChannelDistributionOnChannelId=<ChannelId1>;<ChannelId2>;...
Zweck: Bestimmt, ob nach der Ausführung dieser CD die weitere Abarbeitung der Channeldistribution-Kette abgebrochen werden soll.
Mögliche Werte:
*= Channeldistribution wird immer nach dieser CD abgebrochen (Wildcard)<ChannelId1>;<ChannelId2>= Channeldistribution wird nur abgebrochen, wenn der resultierende Channel eine der angegebenen IDs hat
Standardverhalten:
Wenn nicht konfiguriert, wird die Channeldistribution-Kette normal fortgesetzt.
Beispiel:
org.b2bbp.channels.extension.FinalDistribution.skipChannelDistributionOnChannelId=*
org.b2bbp.channels.extension.ConditionalDistribution.skipChannelDistributionOnChannelId=CHANNEL_ERROR;CHANNEL_FINAL
Einstellungen der CD-Ausführung über Global Properties
B3P_VERBOSE_MODE
B3P_VERBOSE_MODE=true|false
Zweck: Aktiviert bzw. deaktiviert den VerboseMode für detailliertes Monitoring der Channeldistribution-Ausführung.
Standardwert: false
Auswirkungen bei Aktivierung (true):
- Channel-ID vor und nach der CD-Ausführung wird als Monitoring-Attribut gespeichert
- Condition und Result der Bedingungsauswertung werden als Monitoring-Attribut gespeichert
- Information zum Abbruch der Channeldistribution wird als Monitoring-Attribut gespeichert
B3P_DEFAULT_ON_CD_CONDITION_ERROR
B3P_DEFAULT_ON_CD_CONDITION_ERROR=true|false
Zweck: Legt fest, ob eine CD ausgeführt wird, wenn bei der Auswertung der contextParserCondition eine Exception auftritt.
Standardwert: true (CD wird bei Fehler ausgeführt)
B3P_SAVE_SKIPPED_ACTIONS
B3P_SAVE_SKIPPED_ACTIONS=true|false
Zweck: Legt fest, ob übersprungene CDs (State: SKIPPED) im Monitoring gespeichert werden.
Standardwert: true (übersprungene Actions werden gespeichert)
Vollständiges Konfigurationsbeispiel
# Registrierung der Channeldistributionen
registered.classes=org.b2bbp.channels.extension.IndexingService;org.b2bbp.channels.extension.PartnerRouting;org.b2bbp.channels.extension.ErrorHandling
# IndexingService - für alle Services und Channels
org.b2bbp.channels.extension.IndexingService.registeredServiceIds=*
org.b2bbp.channels.extension.IndexingService.executeOnChannelId=*
org.b2bbp.channels.extension.IndexingService.contextParserCondition=${elp(EXCLUDE_ILNS,${template(EXCLUDE_&(this.FORMAT.partnerCode))},true)}
# PartnerRouting - nur für bestimmte Services
org.b2bbp.channels.extension.PartnerRouting.registeredServiceIds=EDI_SERVICE;XML_SERVICE
org.b2bbp.channels.extension.PartnerRouting.executeOnChannelId=CHANNEL_IN
org.b2bbp.channels.extension.PartnerRouting.contextParserCondition=${template(&(this.FORMAT.documentType))}==ORDERS
# ErrorHandling - bricht Channeldistribution bei Fehler-Channel ab
org.b2bbp.channels.extension.ErrorHandling.registeredServiceIds=*
org.b2bbp.channels.extension.ErrorHandling.executeOnChannelId=*
org.b2bbp.channels.extension.ErrorHandling.skipChannelDistributionOnChannelId=CHANNEL_ERROR
Monitoring und Logging
Die Ausführung der Channeldistributionen wird als Action mit Typ “CD-Ext” im Monitoring gespeichert.
Bei aktiviertem VerboseMode (siehe Global Property B3P_VERBOSE_MODE) werden zusätzlich folgende Informationen als Monitoring-Attribute gespeichert:
- channelIdBefore: Channel-ID vor der CD-Ausführung
- channelIdAfter: Channel-ID nach der CD-Ausführung
- Conditionresult: Condition und Result der Bedingungsauswertung
- skipChannelDistribution: Ob die Channeldistribution abgebrochen wurde