Funktionsweise des Beispiels „Message Enrichment“
Im Beispiel zur Nachrichtenanreicherung wird veranschaulicht, dass ein Integrationsmuster als generischer wiederverwendbarer Dienst gekapselt werden kann. In diesem Fall implementiert das Beispiel das Content Enricher-Muster. Das Content Enricher-Muster umfasst im Allgemeinen die Verwendung einer Transformation, um eine Nachricht für die Übertragung an einen externen Dienst vorzubereiten, um Informationen zu suchen, und dann eine weitere Transformation, um die Antwort in eine neue Nachricht zu integrieren, die auch Daten aus der ursprünglichen Nachricht enthält. Um das Muster auf generische Weise zu implementieren, stellt das Nachrichtenanreicherungsbeispiel einen orchestrierungsbasierten Routenplandienst bereit, der bis zu zwei Resolver verwenden kann, um die Anreicherung einer Nachricht mithilfe von Informationen aus einer externen Quelle zu konfigurieren.
Der erste Resolver muss Routinginformationen zurückgeben. Es kann auch Transformationsinformationen neben ihr zurückgeben. Wenn angegeben, wird die Transformation auf die eingehende Nachricht angewendet, bevor sie an den vom Resolver angegebenen Speicherort weitergeleitet wird. In der bereitgestellten Beispielroute wird der WCF-Custom Adapteranbieter verwendet, um eine gespeicherte SQL-Prozedur in der GlobalBankESB-Datenbank mit dem Namen GetOrderDetails auszuführen und das Ergebnis zurückzugeben.
Optional kann ein zweiter Resolver eingeschlossen werden. Falls angegeben, muss der zweite Resolver Transformationsinformationen enthalten. Diese Transformation erhält die ursprüngliche Nachricht und das Ergebnis, das von der Datenquelle zurückgegeben wird, die kontaktiert wurde, als Eingabe. In der Beispielroute wird auf eine Karte verwiesen, die ein Funktoid für Tabellenschleifen verwendet, um Informationen aus der ursprünglichen Nachricht und dem Ergebnis der gespeicherten Prozedur zu ziehen und sie in die resultierende InventoryOrder-Nachricht einzuschließen.