Sunday, January 26, 2014

Is it possible to have Map Chaining on the Port Level

Firstly, let's understand what is Map chaining: The process of producing multiple documents from a single document by executing several maps to translate the single document.

So is it possible on the port level?

This has two answers, Yes and No depending upon how and where it is applied. 

To find out the working, I created a project with three document schema (Item, Product and Article) and a couple of maps and deployed it:

1. Map1: ItemToProduct
2. Map2: ProductToArticle

Scenario 1: Map chaining on a single port (Receive/Send Port)

In order to test map chaining on a single port, I configured ReceivePort with two maps as shown below and a send port configured to receive Article message.







After dropping the message at the receive location, the message was suspended. To check the what processing was done on the message before suspending, clicked on the Message Flow and it was clear that the ItemToProduct map was applied and the message was submitted to MessageBox. 






The second map was not applied, and this is because there is a 1:1 relation between the message and map. So after that one map is executed, EPM (End point manager) hands over the message to MessageAgent which takes over the later processing part of submitting the message to message box and querying for subscription. If no subscription found, it suspends the message.


So Map chaining is not possible on a single port.

Scenario 2: Map chaining on combination of Receive and Send Port

In order to test map chaining using combination of Receive Port and Send Port, I configured ReceivePort with the first map and a send port with the second map as shown below.








After dropping the Item message at receive location, article message was created at the destination. Both the maps were applied. 


So it is possible to achieve map chaining this way, but in between the intermediate message has to pass through MessageBox.

No comments:

Post a Comment