javros
javros

Reputation: 823

Any way to programmatically set BizTalk Message Context property?

Is there any way to set BTS.RetryCount or WCF.Action not in a Message Assignment Shape?

I have a special orchestration for dynamic message sending, its parameters are Message and ServiceName and it has a dynamic port which is easily configured with UDDI service. The thing I can't do in that orchestrations is I can't set WCF.Action for a message, I should create a new one because it's prohibited in BizTalk to modify a message anywhere outside a Construct shape. So it's very inconvenient for me to set this property every time I want to send a message, I thought I would be able to do all the UDDI & routing stuff in a one dedicated orchestration which I later can just call with parameters.

Upvotes: 1

Views: 2808

Answers (2)

LarsWA
LarsWA

Reputation: 621

Could you not create a new message in an assignment shape, of the same type as the message you need to modify

NewMessage = OldMessageWithTheDynamicPropertiesSet;

and copy over all the properties

NewMessage(*)* = OldMessageWithTheDynamicPropertiesSet(*);

and then set the properties you need to set. You can also set the WCF action that way.

NewMessage(WCF.Action)=....
NewMessage(BTS.REtryCount)= 666 

And then you send this new message out.

Upvotes: 0

tom redfern
tom redfern

Reputation: 31760

Can you not modify those properties in a pipeline component? You can then execute the pipeline inside the orchestration.

UPDATE

What I mean is you can create a pipeline component to set the context properties of the message as it passes through. Then you can create a pipeline which includes this component and execute it inside your orchestration by passing a message through it. This message will then have those context properties set.

Upvotes: 1

Related Questions