Yossi Dahan [BizTalk]

Google
 

Monday, September 04, 2006

Transform gotcha update

In this post I've described a quirk in the Transform shape UI.

By now Microsoft validated this as an issue with the UI and are looking into it, in the mean time I've we've to figure out how to overcome this without needing to create a new map, which turned out to be quite simple really -

If you open the odx file with the problematic transform shape in an xml (or text) editor and search for the name of the transform shape you should find something along these lines -


<om:Element Type="Transform"
OID="d2b31334-64b6-48f6-9636-594a404a6bd4"
ParentLink="ComplexStatement_Statement"
LowerBound="233.1"
HigherBound="235.1">
<om:Property Name="ClassName" Value="****************************" />
                <om:Property Name="ReportToAnalyst" Value="True" />
<om:Property Name="Name" Value="MyTransform" />
                <om:Property Name="Signal" Value="False" />
                <om:Element Type="MessagePartRef" OID="aa2c6493-6f61-4ef5-984f-e716728b73ba"
ParentLink="Transform_OutputMessagePartRef"
LowerBound="234.56"
HigherBound="234.81">
                <om:Property Name="MessageRef" Value="OutputMessage" />
                        <om:Property Name="PartRef" Value="OutputPart" />
                        <om:Property Name="ReportToAnalyst" Value="True" />
                        <om:Property Name="Name" Value="MessagePartReference_5" />
                        <om:Property Name="Signal" Value="False" />
                </om:Element>
                <om:Element Type="MessagePartRef"
OID="01736f65-cc1b-4bd0-9997-4d66d9574b6b"
ParentLink="Transform_InputMessagePartRef"
LowerBound="234.151"
HigherBound="234.176">
                        <om:Property Name="MessageRef" Value="InboundMessage" />
                        <om:Property Name="PartRef" Value="InboundPart1" />
                        <om:Property Name="ReportToAnalyst" Value="True" />
                       <om:Property Name="Name" Value="MessagePartReference_3" />
                        <om:Property Name="Signal" Value="False" />
                </om:Element>
                <om:Element Type="MessagePartRef"
OID="5a7e355c-a71b-46d5-ae73-cfcaa2163359"
ParentLink="Transform_InputMessagePartRef"
LowerBound="234.195"
HigherBound="234.212">
                        <om:Property Name="MessageRef" Value="InboundMessage" />
                        <om:Property Name="PartRef" Value="InboundPart1" />
                        <om:Property Name="ReportToAnalyst" Value="True" />
                        <om:Property Name="Name" Value="MessagePartReference_6" />
                        <om:Property Name="Signal" Value="False" />
                </om:Element>
   </om:Element>


The key things to look at are:

1. The parentLink attribute (which indicate whether an element describes a map output or input and help identifying which elements needs to be edited)

2. The MessageRef which is the name of the message that holds the part being mapped

3. The PartRef which is the name of the part of that message to use.

In my example the input uses InboundMessage.InboundPart1 twice for the input, as I could not select InboundPart2 in the UI.

So - to overcome the UI problem all you need to do is edit that xml, replacing the part you were "forced" to select in the UI with the one you actually want. So I replaced the second "InboundPart1" with "InboundPart2".

When you will then open the odx file with the orchestration designer again, and open the transform shape UI you will see that the new part you've specified appears in the input list.

The message type in the second column of the UI will still show the wrong message type, and you will still not be able to re-select the correct part, so you are still prevented from making any changes to this transfor shape through the UI, but at least you do not need to create a new map every time something changes, you just need to carefully edit the XML.

0 Comments:

Post a Comment

<< Home