What we will build
This is a simple example containing:
Two schemas (source and destination)
One Orchestration containing:
A Receive port
A Receive shape
A Construct message shape with a Transform inside it
A Send shape
A Send port
One source file
One destination file
Input and output directories on your file system
It is assumed you have a working knowledge of BizTalk 2006, maps, schemas and orchestrations.
As such some instructions for creating BizTalk artefacts will be shorthand.
Create the source schema
Open Visual Studio and create a blank BizTalk project. Add a schema, call it MovieIcons.xsd
and build it so as to resemble the schema in the following screenshot.
Adjust the properties so that they are as in the following screenshot
Select the MovieIcons root node and adjust the properties as follows:
Select the Icons node and adjust the properties as follows
Save the schema.
Create destination schema
Add a schema, call it MovieIconsRepeating.xsd and build it so as to resemble the
schema in the following screenshot
Select the root node and adjust the properties as shown in the following screenshot
Next, select the MovieIconsRepeating node and adjust the properties as follows
Select the IconNames node and adjust the properties as follows
Save the schema.
Create the map
We will now create the map that will utilize the schemas
Right click on the BizTalk project and add a map artefact calling it TableLooping.btm.
Add schemas to map
Click the ‘Open source schema’ link on the left and navigate to the MovieIcons.xsd
file. Next click the ‘Open destination schema’ link on the right and navigate
to the MovieIconsRepeating.xsd.
Add functiods to map
We will end up with a map looking like the one below
From the toolbox, expand the Advanced Functoids tab and drag a Table Looping functoid
onto the map surface. Connect the nodes from the source schema to it by clicking
on each node in turn and dragging a line to the functoid.
Label the connections
Once all the nodes are connected, select each connection in turn and examine its
Add values to the label properties of each node as follows
Double click the Table looping functoid to open up the Configure Functoid dialog. You
will need to add a single input parameter. Immediately below the Icons parameter,
add a new one with the value of ‘2’ just as the following screenshot shows.
The ‘2’ parameter indicates that there will be 2 columns I the destination schemas
Add the Table Extractor functoids
Drag two Table Extractor functoids onto the map surface and join them up to the Table
Looping functoid and the destination schema nodes as shown below
Double click on the Table Extractor functoid connected to the FirstName node of the
destination schema. Add a second input parameter with a value of ‘1’ as in the
This indicates that FirstName will go in the first column of the repeating structure.
Repeat this step for the second Table Extractor functoid, making the value of the
added parameter ‘2’, indicating LastName will go into the second column of the
Now select the Table Looping functoid again and examine its properties. Select the
‘Table Looping Grid’ property and click on the ellipsis but to show the Configure
Table Looping Grid Dialog. Adjust the values in each row for each column as shown
in the following screenshot
Click OK and save the map.
Create the Orchestration
We will create an orchestration looking like the one below
Add a new orchestration to the project and call it TableLooping.odx. To the orchestration,
add the following:
Add a Message called Message_In with the following
Add a Message called Message_Out with the following properties
Add a Receive port with the following properties
Add a Receive shape with the following properties
Add a ConstructMessage shape with the following properties
Add a Transform shape inside the Construct shape. Double click on it
to open the Transform Configuration dialog. Select ‘Existing map’ and in the
dropdown select ‘TableLoopingMap.TableLooping’ . Configure it so the ‘Transform
Source’ is the Message_In and the ‘Transform Destination’ is the Message_Out
a Send shape with the following properties
Add a Send port with the following properties
Create Input and Output directory on file system
On your file system create an ‘In’ directory and an ‘Out’ directory. These
directories are referenced in the Receive and Send ports you just created. To
test this map you will drop a test file conforming to the MovieIcons schema into
the ‘In’ directory and it will then be transformed by our map and appear in the
Create an input file
The easiest way to do this is to simply right click on the MovieIcon.xsd file
in Visual studio and select ‘Generate Instance’. The output window will indicate
where the file has been generated.
Open the file in the text editor
of your choice and edit it so as to resemble the file below
When you drop this file into the ‘In’ directory a file will appear
in the ‘Out’ directory named <GUID>.xml
If you open this file
you will see something like the file below.
<?xml version="1.0" encoding="utf-8"?>
As you can see the map has taken the flat format of the input
file and built a repeating <IconNames></IconNames> structure in the
This article has shown how to use the Table Looping
functoid with the Table Extractor functoid to create a repeating structure in
the destination file from a flat structure in the source file. This is a simple
but powerful technique showing how flat files can be manipulated into a more
versatile xml structure