How do you test a multi-part map, i.e. a map with multiple input messages?
To test a normal map, you just take an sample XML file, click the map (in Visual Studio Solution Explorer), set the property of the filename into the value of the property “TestMap Input”, then right-click on the map and select “Test Map”. The output is shown in the Output window, and you can do a CNTL-Click on the output file to view the results.
Maps created in the normal mapper usually just have one input message; but maps created in an orchestration can easily have multiple input messages (just by selecting more than one incoming message in Transform shape). This creates a special structure, or wrapper around the messages. You can still do a test-map, but the file you input to the test map must be in the special format as follows:
<pre> <ns0:Root xmlns:ns0="http://schemas.microsoft.com/BizTalk/2003/aggschema"> <InputMessagePart_0> <ns1:Schema1RootElement xmlns:ns1="http://MyNamespace.Schema1"> </ns1:Schema1RootElement> </InputMessagePart_0> <InputMessagePart_1> <ns2:Schema2RootElement xmlns:ns2="http://MyNamespace.Schema2"> </ns2:Schema2RootElement> </InputMessagePart_1> </ns0:Root> </pre>
You would put your own elements and attribute between Schema1RootElement and it’s closing element, as well as between Schema1RootElement2 and it’s closing element.
So normally, you use some text or XML editor (like NotePad++) and paste data samples, then wrap them with the XML element wrappers shown above.
If your schemas don’t have target namespaces, you can simplify as follows:
<pre> <ns0:Root xmlns:ns0="http://schemas.microsoft.com/BizTalk/2003/aggschema"> <InputMessagePart_0> <Schema1RootElement> </Schema1RootElement> </InputMessagePart_0> <InputMessagePart_1> <Schema2RootElement> </Schema2RootElement> </InputMessagePart_1> </ns0:Root> </pre>
So basically the root element is part of a special namespace called the “aggschema” (aggregate schema). Then, as many message as you added each are found, but each is wrapped with