====== MessageSelector ====== Der Jobstep **MessageSelector** selektiert Nachrichten, welche Eigenschaft gem. Funktionsargumenten angegeben sind((Zur Laufzeit aus dem internen Objekt ebiss.ClassLib.MessageSelector.SelectionBase)). ^Name ^Bedeutung | |//Description//|Hier kann ggf. eine Beschreibung der konkreten Aufgabe des Jobsteps in diesem Job eingetragen werden.| |//Expression//|Funktion, deren Ergebnis wahr oder falsch zurückliefert. Alle Messages auf denen die Funktion zutrifft, werden aus der eingehenden Messagebox (Inbox, SelectionBase/InputMessages) selektiert.\\ Häufig wird die Message-Struktur(//[[kommunikation:nachrichten:selectionbase|SelectionBase]]//) benötigt um Bedingungen formulieren zu können. | |//Name//|Name des //MessageSelector Jobsteps//. Hier sollte nach Möglichkeit ein aussagekräftiger Name gewählt werden.| |//XPath Aufrufe loggen//|Wenn aktiviert, werden die vom „XPath Ausdruck“ ausgewerteten Werte bei aktivem Debug Log ausgegeben.| Die ausgehenden Konnektoren des **MessageSelector** haben unterschiedliche Effekte: * **OnMessgeSelection** gibt die ganze Selektion raus, wird also einmal bedient * **OnMessage** gibt die einzelne Message, wird also so oft bedient wie Anzahl Nachrichten in der Selektion sind. {{:images:sign_warning.png?nolink|}}**Hinweis:** siehe auch [[kommunikation:nachrichten:start#auswertung_bzw_filterung_von_nachrichten_in_jobs|Auswertung bzw. Filterung von Nachrichten in Jobs]] {{:images:sign_warning.png?nolink|}}**Hinweis:** Sie können den Ausdruck mit der Mapping Funktion [[transformation:mappings:funktionen:allgemein:getmessageasselectionbase|]] im MapDebugger testen. ===== Beispiele: ===== * Selektiere alle Messages aus dem Nachrichtenkorb **To.Partner**://SelectionBase/OutputMessages[@MessageBoxName = 'To.Partner'] * Selektiere alle Nachrichten, die kein Attachment haben.//SelectionBase/InputMessages[ count(Attachments) = 0] * Selektiere alle Eingangsnachrichten, die im Subject den Text 'desadv' enthalten.//SelectionBase/InputMessages[contains(@Subject,'desadv')] * Selektiere alle Ausgangsnachrichten, deren Dateiname Test.txt ist.//SelectionBase/OutputMessages[Attachments/@Filename = 'Test.txt'] * Selektiere alle Eingangsnachrichten, deren Dokumenttyp Pricat ist.//SelectionBase/InputMessages[Documents/@DocType = 'PRICAT'] * Selektiere alle Eingangsnachrichten, deren Dokument EntityType Desadv D96A ist.//SelectionBase/InputMessages[Match(Documents/EntityType/@Name, '.*Desadv.*D96A')] * Selektiere alle Eingangsnachrichten, deren EntryDate gleich 2007-01-29T17:50:00 ist.//SelectionBase/InputMessages[CompareDateTime(@EntryDate, '2007-01-29T17:50:00') > 0] * Selektiere alle Nachrichten mit zip Anhängen.//SelectionBase/InputMessages[contains(Attachments/@Filename, '.ZIP')] * Selektiere alle Nachrichten wo bei dem Handelspartner die Variable 'Test' gesetzt ist.//SelectionBase/InputMessages[IsTrue(GetTradingPartnerLocationVariable("Test", @PartnerGLN))] * **[[partnerverwaltung:lokation:variablen:partnervariable]]** auswerten:/SelectionBase/InputMessages[GetTradingPartnerVariable('No.EDI', @PartnerGLN) != 'True' ] {{:images:sign_warning.png?nolink|}}**Hinweis:** Die wichtigste Unterscheidung ist der Pfad **/SelectionBase/InputMessages** und **/SelectionBase/OutputMessages**. Hierbei sind Nachrichten die innerhalb eines Jobs mit dem [[prozessdefinition:jobs:jobsteps:allgemein:entitymessagecreator|MessageCreator]] erzeugt werden im selben Job mit **/SelectionBase/OutputMessages** und alle an eine Job übergebenen Nachrichten mit **/SelectionBase/InputMessages** zu selektieren. {{:images:sign_warning.png?nolink|}}**Hinweis:** Alle Nachrichteneigenschaften((Objekt-Attribute)), die das Nachrichten Objekt beinhaltet, können innerhalb der Funktion verwendet werden. Eine Auflistung dieser Attribute erhalten Sie, wenn Sie mittels Map-Editor ein neues Mapping anlegen, und als Quellobjekt die **eBiss.ClassLib.MessageSelector.Selectionbase**((Siehe auch [[kommunikation:nachrichten:selectionbase_pfade]])) auswählen. ===== Kaskadieren von Selektoren ===== Es ist möglich, die Messageselektoren kaskadiert anzuwenden. Hierbei wird noch eine zweite Selektionsstufe durch einen weiteren MessageSelector nachgeschaltet.\\ Die Nachrichten der ersten Selektion werden durch eine zweite Selektion noch einmal gefiltert.\\ **Wichtig:** Der kaskadierte MessageSelector (zweite Selektionsstufe) hat nun die **/SelectionBase/SelectedMessages** als MessageListen-Auswahl zur Verfügung. ===== Folgende JobSteps werden i.d.R. mit dem MessageSelector verbunden ===== * [[prozessdefinition:jobs:jobsteps:allgemein:delegatorjob]] * [[prozessdefinition:jobs:jobsteps:allgemein:EntitySelector]] * [[prozessdefinition:jobs:jobsteps:allgemein:messageloader]] * [[prozessdefinition:jobs:jobsteps:allgemein:MessageSelector]] * [[prozessdefinition:jobs:jobsteps:allgemein:MessageStateSetter]] * [[prozessdefinition:jobs:jobsteps:allgemein:TaskNotification]] * [[prozessdefinition:jobs:jobsteps:allgemein:TaskNotificatorEx]] * [[prozessdefinition:jobs:jobsteps:supplier:articlesubscriptionselectordirectsql]]