MessageBufferActionFirstTime
Pfad: org.b2bbp.runtime.actions.internal.MessageBufferActionFirstTime
Übersicht
Diese Action unterbricht die Verarbeitung einer Nachricht unter gewissen Bedingungen und setzt den Clearing Status der Nachricht auf einen definierbaren Wert.
Wird später die Nachricht mit dem durch EXPECTED_CLEARING_STATE gegebenen Clearing Status neu gestartet, so wird die Nachricht nicht mehr gestoppt und normal verarbeitet.
Nachrichten, die so gepuffert werden, erhalten neben einem definierbaren Clearing Status auch einen definierbaren Verarbeitungsstatus.
Funktion
Um Nachrichten in der Verarbeitung (an der Stelle der BufferAction) zu stoppen, muss mindestens eine der folgenden Bedingungen zum Puffern der Nachricht erfüllt sein:
- der (ausgewertete) Wert aus “B3P_FORMAT_VALUE” mit einem der Werte aus B3P_FORMAT_VALUES übereinstimmt
- die Edifact beinhaltet ein Element der B3P_EDI_ELEMENTS
- der (ausgewertete) Wert aus “B3P_FORMAT_VALUE” stimmt mit dem einer konfigurierten (Logic-)Extension überein Es wird dann an der gestoppten Nachricht der (in der Eigenschaft B3P_CLEARING_STATUS) definierte Clearing Code gesetzt. Eine Nachricht, die bereits diesen Clearing Code hat, wird bei der erneuten Verarbeitung (“FirstTime”) nicht mehr gepuffert, sondern dann verarbeitet!
Weiter kann das Puffern der Nachrichten noch auf spezifische Zeiträume oder Werktage im Monat eingeschränkt werden.
Action Properties
Property | Möglicher Wert (ggf. Default) | Beschreibung |
---|---|---|
B3P_CLEARING_STATUS | 800 | Dieser Clearing Code wird bei der gepufferten Nachrichten gesetzt. Damit die Action ausgeführt wird, muss entweder diese Property gesetzt sein oder B3P_IGNORE_CC_IF_NOT_EXPECTED_CC = true gesetzt sein. |
B3P_FORMAT_VALUE | ${template(&(this.FORMAT.senderCode))} | Wert welcher in B3P_FORMAT_VALUES enthalten sein muss damit die Nachricht gepuffert wird |
B3P_FORMAT_VALUES | 9900426000009;9903086000005 | Semikolon-separierte Ziel-Werte des B3P_FORMAT_VALUE Ausdrucks bei denen die Verarbeitung gestoppt wird |
B3P_VS_STATE | RUW (ERR, aber empfohlen RUW) | Verarbeitungsstatus, den die gepufferte Nachrichten erhalten. |
B3P_EDI_ELEMENTS | LOC+172+12345678901;NAD+MS+9900000000000 | Semikolon separierte Liste von Ausdrücken. Tritt ein solcher Ausdruck in der Edifact auf, so wird die Nachricht gepuffert |
USE_EXTENSION | LOGIC_BUFFER_EXTENSION | Hier kann der Name einer Extension angegeben werden, in welcher konfiguriert werden kann, welche Nachrichten gepuffert werden. Genaueres wird im Kapitel Extension beschrieben. |
B3P_FORMAT_VALUES_EXTENSION | VALUES_BUFFER_EXTENSION | Alternativ kann man die Werte in der hier angegebenen Extension festlegen |
B3P_FORMAT_VALUES_INVERTED_EXTENSION | VALUES_BUFFER_EXTENSION | Extension für Werte, die nicht gepuffert werden. Alle anderen werden gepuffert. |
B3P_INVERT | true/false (false) | Ist diese Eigenschaft aktiv (true), so werden die Nachrichten dann gepuffert, wenn der ausgewertete B3P_FORMAT_VALUE nicht in der Wertemenge der B3P_FORMAT_VALUES liegt. |
B3P_TIME_FROM | 10:00:05 | Kleinste Uhrzeit Schranke für zu puffernden Nachrichten |
B3P_TIME_TO | 12:00:05 | Größte Uhrzeit für zu puffernden Nachrichten |
B3P_DATE_FROM | 01:01:2020:11:15:00 | Kleinster Zeitpunkt für zu puffernde Nachrichten. Datum gemäß B3P_DATE_PATTERN |
B3P_DATE_TO | 31:12:2020:11:55:00 | Ältester Zeitpunkt für zu puffernde Nachrichten. Datum gemäß B3P_DATE_PATTERN |
B3P_DATE_PATTERN | yyyy-MM-dd HH:mm:ss (dd:MM:yyyy:HH:mm:ss) | Hier kann man für die Properties B3P_DATE_FROM und B3P_DATE_TO ein Datums-Pattern angeben |
WORKDAYS_WITHOUT_BUFFER | 4;5;8 | Hier können x-te Werktage im Monat”;”-separiert angegeben werden. Es werden dann Nachrichten dieser x-ten Werktage im Monat nicht gepuffert. |
EXPECTED_CLEARING_STATE | 111 | Hier kann man einen Clearing Status angeben welcher bewirkt das Nachrichten, welche diesen Clearing Status haben durchgelassen werden |
B3P_IGNORE_CC_IF_NOT_EXPECTED_CC | true/false (false) | Normalerweise buffert die BufferActionFirstTime nur einmal. Wenn die Nachricht neu gestartet wird, wird nicht mehr gebuffert. Wenn diese Eigenschaft aktiviert (true) ist, werden die Buffer-Kriterien immer geprüft, auch bei Neustart. |
SEND_ERROR_MAIL | true/false (true) | Gesetzt auf ‘false’ so wird die letzte Action im Channel-Workflow (nach Ausführung der BufferAction) nicht mehr ausgeführt. Der Name ist dadurch entstanden, da dies ist üblicherweise die ErrorMailHandler Action ist. |
Beispiele
Bei Angabe von B3P_TIME_FROM, B3P_TIME_TO, B3P_FORMAT_VALUE, B3P_FORMAT_VALUES, B3P_CLEARING_STATUS:
Es werden alle Nachrichten welche im Intervall [B3P_TIME_FROM, B3P_TIME_TO) liegen und für die gilt, dass das B3P_FORMAT_VALUE Element von B3P_FORMAT_VALUES ist, gepuffert und bekommen den Clearing Status B3P_CLEARING_STATUS.
Bei Angabe von B3P_FORMAT_VALUE, B3P_FORMAT_VALUES, B3P_EDI_ELEMENTS und USE_EXTENSION reicht ein erfülltes Kriterium für die Pufferung der Nachrichten (keine zeitliche Einschränkung zum Puffern).
Extension
Vor der Auswertung der Extension werden folgende zusätzliche Werte in den MessageContext geschrieben:
Format_type
Format_version
Format_partnercode
Format_sendercode
Format_attributes_key (mit key Element von format.getAttributes().keySet().iterator() )
Diese Werte werden aus dem Format Objekt geholt.
B3P_OBJ_MESSAGE_direction
Dieser Wert wird aus dem Message Object geholt 0 ist für eingehende Nachrichten 1 ist für ausgehende Nachrichten.
Beispiel für die Extension:
equals(Format_type,UTILMD) OR equals(Format_type,MSCONS) = buffer
equals(Format_type,ORDERS) = buffer
Nachrichten für welche der logische Ausdruck true ist und bei welchen rechts vom = buffer steht werden gepuffert. Im obigen Beispiel werden alle UTILMD und MSCONS Nachrichten gebuffert.
Die verwendbaren logischen Operatoren sind im Kapitel Logische Operatoren näher beschrieben. LINK
Logische Operatoren
MC steht im folgenden für MessageContext.
MCT steht für einen beliebigen Wert aus dem MessageContext. Z.B. Format_type, Format_version usw.
Term |
Beschreibung |
equals(MCT, String) |
Prüft im MC, ob der Wert hinter MCT dem übergebenen String entspricht. |
contains(MCT, String) |
Prüft im MC, ob der Wert unter MCT den übergebenen String enthält. |
matches(MCT, Regex) |
Prüft im MC, ob der Wert unter MCT dem übergebenen regulären Ausdruck genügt. |
equalsEdi(EDIPATH, String) |
Prüft ob der Wert, der aus der EDIPATH-Evaluierung hervorgeht, dem übergebenen String entspricht. |
containsEdi(EDIPATH, String) |
Prüft ob der Wert, der aus der EDIPATH-Evaluierung hervorgeht, dem übergebenen String enthält. |
matchesEdi(EDIPATH, String) |
Prüft ob der Wert, der aus der EDIPATH-Evaluierung hervorgeht, dem regulären Ausdruck genügt. |
AND |
Konjunktion |
OR |
Disjunktion |
NOT |
Negation |
(,) |
Klammerung |
Beispiele
1)test@test.de](mailto:test@test.de) war
2)equalsEdi(UNB+5+0, 12454847): Überprüft, ob die UNB-Referenznummer 12454847
3)equalsEdi(UNB+3+0, 9900496000005) OR equalsEdi(UNB+3+0, 9900496000005) )
View Me Edit Me