1
votes

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.

2
Do you have the actionname in the document somewhere? Like a custom header? - LarsWA
No, it is stored in UDDI - javros
Sounds like a fun solution. Is it a service bus implementation for a client or customer? Or are you just testing stuff out? - LarsWA
Why is it fun? We store all information about web services of connected systems in UDDI, that's what it is designed for, am I right? - javros
I meant fun in a good way. As in interesting. No disrespect or critique intended mate. I just haven't seen many implementations where UDDI was used, so I thought it sounded interesting. And yeah - I think that was the intended purpose. Or at least one of them. - LarsWA

2 Answers

1
votes

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.

0
votes

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.