tags:

views:

1787

answers:

3

How can I call a BizTalk Orchestration dynamically knowing the Orchestration name? The call Orchestration shapes need to know the name and parameters of Orchestrations at design time. I've tried using 'call' XLang keyword but it also required Orchestration name as Design Time like in expression shape, we can write as

call BizTalkApplication1.Orchestration1(param1,param2);

I'm looking for some way to specify calling orchestration name, coming from the incoming message or from SSO config store.

EDIT: I'musing BizTalk 2006 R1 (ESB Guidance is for R2 and I didn't get how it could solve my problem)

A: 

Look at ESB Guidance (www.codeplex.com/esb) This package provides the functionality you are looking for

+1  A: 

The way I've accomplished something similar in the past is by using direct binding ports in the orchestrations and letting the MsgBox do the dirty work for me. Basically, it goes something like this:

  1. Make the callable orchestrations use a direct-bound port attached to your activating receive shape.
  2. Set up a filter expression on your activating receive shape with a custom context-based property and set it equal to a value that uniquely identifies the orchestration (such as the orchestration name or whatever)
  3. In the calling orchestration, create the message you'll want to use to fire the new orchestration. In that message, set your custom context property to the value that matches the filter used in the specific orchestration you want to fire.
  4. Send the message through a direct-bound send port so that it gets sent to the MsgBox directly and the Pub/Sub mechanisms in BizTalk will take care of the rest.

One thing to watch out in step 4: To have this work correctly, you will need to create a new Correlation Set type that includes your custom context property, and then make sure that the direct-bound send port "follows" the correlation set on the send. Otherwise, the custom property will only be written (and not promoted) to the msg context and the routing will fail.

Hope this helps!

tomasr
A: 

Thanks tomasr for detailed reply. but we're moving away from the already implemented 'direct bound ports' approach (exactly the same as u suggested) to improve the response time of the system. pub/sub (direct bound to messagebox) approach is not much fruitful if you are constrained by performance.

usman shaheen