- Create two Orchestration messages of same type. In this case I refer to them as Message1 and Message2
- Create a Orchestration variable of type System.Xml.Document. Tn this case I refer to it as xmlDocument
- Construct Message1 outside, before the loop with a Transform ect.
- Inside loop, within a single Construct Shape:
- Assign xmlDocument to Message2
- Manipilate Message2
- Assign Message2 to xmlDocument
- Outside, after the loop, assign xmlDocument to Message1
- Return Message1
- Create an Orchestration string variable (in this case testVAR)
- Add assignment shape with code below
- Change the send location output file name to %SourceFileName%
outputMessage = outputMessage ;
testVAR = xpath(outputMessage,"string(/*[local-name()=’SomeName1′ and namespace-uri()=’SomeSchema’]/*[local-name()=’SomeName2′ and namespace-uri()=”]/*[local-name()=’SomeName3′ and namespace-uri()=”]/text())");
outputMessage(FILE.ReceivedFileName) = testVAR + ".TXT";
The following details the steps required to publish a very simple message transformation orchestration as a WCF web service via BizTalk
Part 1 – Project
1) Open Visual Studio and create an “Empty BizTalk Server Project”
2) Right click project in Solution Explorer and select “New item…”
3) Add a “Schema” file that will be used to define the request message
4) Define the request message schema. The schema in example has two attributes, “Amount” and “Quantity”. Define namespace.
5) Repeat step 2 and add another “Schema” for the response message. In this example it has one attribute called “Tax”. Define namespace.
6) Repeat step 2 and add a “Map”
7) In map the transformation is defined from a request message to a response message.
8) Values for the first “Mathematical Functoid”
9) Values for the second “Mathematical Functoid”
10) Right-Click map and select “Test Map”
11) CTRL-Click the first test map to see test request map
12) CTRL-Click the second test map to see response map with value calculate from test request map
13) Repeat step 2 and add an “Orchestration”
14) Add a “Receive Shape”, “Transform Shape” and a “Send Shape”. Create a two messages, one for a request schema and another for the response schema.
15) Configure the “Transform Shape” with the map created in step 6.
16) Add port and give it a name.
17) Create a new port type and give it a name. The port must be public and a request-response pattern.
18) Leave at “Specify later”.
19) Configure messages in the “Receive Shape” and “Send Shape” from the messages created in step 14.
20) Connect the “Request” and “Response” ports to the “Receive Shape” and the “Send Shape”. Set the orchestration to public.
21) Specify the BizTalk application name otherwise it will deploy in default application on BizTalk.
22) Add a key to sign assembly. Assembly will be GAC deployed and a key file is required.
23) Build solution
24) Deploy solution
25) GAC deploy assembly after each build
Part 2 – Publish
1) Start the “BizTalk WCF Publishing Wizard”. In this example the “WCF-WSHttp” transport type is used. Ensure that “Enable on-premise metadata exchange” and “Create BizTalk receive locations in the following application:” has the application published in part 1 selected.
2) Select “Publish BizTalk orchestrations as WCF service”.
3) On the next page browse to the assembly created in part 1.
4) Ensure ports are shown
5) Specify namespace
6) In this example the WCF service will allow anonymous access.
7) If we at this stage browse to web service location we get this error.
8) To resolve error in step 2, change the identity of the application pool used by the web service, to one with appropriate BizTalk rights.
9) If we at this stage browse to web service location we get this error.
10) To resolve error in step 9, configure the orchestration in the published BizTalk application.
11) Start the BizTalk application.
12) After these step, the web service test page should display correctly.
Part 3 – Testing
After the orchestration is published, it is available and transformation can be tested