Orchestrations cannot rehydrate when they contain a message with a diffgram schema
4/10/2013 11:35:45 AM
User(s) can reproduce this bug
I ran into a bug where Orchestrations throw an XLANG error as soon as the orchestration is being rehydrated (e.g., after receiving a message) if and only if the orchestration's current scope contains a message with a diffgram schema. It doesn't matter what the contents of the message are, BizTalk will just throw an error pointing at a dupplicate diffgram:0 name.
BizTalk 2010 Beta
* Create a message type with a schema that contains a diffgram (e.g., a response schema from SQL web services).
* Create an orchestration that contains a message of the above type, and initialize the message (either with construct shapes, or by querying a web service that returns a System.Data.DataSet).
* Add a send and receive shape for any message types (not necessarily the type above; this is just intended to make the orchestration dehydrate while it's waiting for a reply).
* As soon as the receive shape gets a message, the orchestration will attempt to rehydrate, but it will fail, complaining that diffgram:0 is a duplicate key.
to post a comment.
Please enter a comment.
to post a workaround.
Please enter a workaround.
on 4/10/2013 at 11:39 AM
The only possible work around for this is to keep all operations (message declaration, assignment, send/receive shapes) in a scope separate from the orchestration's scope. For instance, if you are querying a service that receives a diffgram object (System.Data.DataSet), and you need to process that message later on with a map to transform it into another message, you will need to:
* Declare the final message (the one that will not contain a diffgram) globally
* Initialize the diffgram-less global message with an empty message
* Create a scope shape
* Declare the service request and response shapes in this scope
* Construct the request message in this scope, add the send a receive shapes to the scope, and apply the transform/map into the global (diffgram-less) message all inside of this scope.
* Outside of the scope, use the diffgram-less message and perform any other operations as needed. Even if the orchestration is dehydrated, the diffgram message no longer exists in the orchestration's scope, so BizTalk won't hit this bug.
© 2013 Microsoft