This week, we’ll study a variation of Message Router pattern known as Message Filter.
When do I use this pattern?
This pattern applies when messages are sent to a receiver if the message satisfies a condition otherwise the message is discarded. For example, consider a scenario where products are sent to the planning system. However, the planning system only needs products that are supplied by the company itself (Exotic Liquids).
Note that this blog focuses on the Message Filter pattern (a Message Routing pattern) and not Content Filter pattern (a Message Transformation pattern). Think of it like:
Message Filter filters [out] message entirely as it is
Content Filter filters [out] content of the message
Message Filter in CPI
Like other Message Routing patterns, Message Filter is implemented using the Router component.
For the demonstration, I’ll read a product from Northwind and log the product only if it is supplied by ‘Exotic Liquids’. Here, logging represents sending the products to the planning system.
Here, Router ‘Supplier?’ is used to send products supplied by ‘Exotic Liquids’ to Planning System (the Log step) and products supplied by Other suppliers are discarded (the Discard step).
Here’s the configuration of the Routing Condition table:
|Order||Route Name||Condition Expression||Default Route|
|1||Exotic Liquids||/Products/Product/SupplierID = ‘1’||No|
When the Integration flow is executed for Products supplied by ‘Exotic Liquids’, the products are logged:
When the integration flow is executed for Products supplied by Other suppliers, the products are discarded:
Message Filter is a type of Message Router that is used to send message to a receiver based on a condition. The messages that do not satisfy a condition are discarded.
- Message Filter in Enterprise Integration Patterns
- EIPinCPI: Message Router
- Alexander Bundschuh‘s blog on Message Filter
- CPI Components
Hope this helps,
P.S.: Next week, we’ll study Dynamic Router and I am excited to share a cool way of processing IDocs in SAP Cloud Platform Integration that promotes encapsulation, facilitates code maintenance, reduces code footprint, among other benefits.
Another P.S.: Alexander Bundschuh has already blogged about Message Filter. He is using an example of filtering based on Product Category in CPI. Read Alex’s blog to learn about implementing Message Filter in Process Orchestration as well as in CPI.