Integrating Integrators – BizTalk, Windows Azure, Windows Workflow, and Beyond

Looking for a type of convoy pattern

BizTalk 2004

This group is for all content related to BizTalk Server 2004. This includes a forum, samples, videos, labs, whitepapers, and tools. Most of the content here also applies to other versions of BizTalk beyond 2004.

Looking for a type of convoy pattern

  • rated by 0 users
  • This post has 8 Replies |
  • 0 Followers
  • Hey Guru's !

    I've used a sequential convoy to limit the # of concurrent orchestrations succesfully. (to avoid rujnning out of threads) Now I'm looking for a similiar pattern that could handle multiple destination orchestrations.

    Currently I'm using the sqladpater with an envelope splitter pipeline feeding into a seq convoy pattern.

    I've got some related services and I'm looking for a was to not have to create a seq convoy for each orchestration. (again to avoid thread pool limitations).

    All the orchestrations can accept and return the same message type.

    If there were a way I could have dynamic control over the orchestration name on the start shape for example, that would do the trick.

    Any ideas ?

    I would be happy if I find a way to either limit the total # of orch running (regardless of what each one does, or if I can limit each type individually)

    Tim
    Edit
  • I sure wish they had a better way to limit running Orchestrations. Things get a little better in 2006 with per host watermark configurations.

    I think you can dynamically start an Orchestration.

    You can dynamically call one using something like:
    call NS.BizTalk_Orchestration2 (Variable_1);
    inside an expression shape.

    You might want to check out masteringbiztalk.com. Jon might have a sample on this.

    Stephen W. Thomas
    http://www.BizTalkGurus.com

  • thats interesting, but I assume I can't have a variable of type orchestration ? I could use if logic to start different orchestrations, but then I have to modify the convoy each time a new servie is added. Perhaps thats what I will have to do.

    The other idea I'm exploring (unsuccesful so far) is instead of starting an orch I direct bind with port filtering. This works but I'm haven't found a workable way to get the \"ack\" message back to the convoy.

    Its requiring me to use correlation, and since the convoy has to send shapes (originally the 2 start shapes) they can't both initialize the correlation.

    just as a test I init the correlation with the inital send shape using message type as the corrlated property and have both recieves follow. however no matter how I bind the receive port (direct-message box or direct w/parter orch set to the convoy orch) I get the dreaded no subscriber found when attempting to send the ack message back to the convoy.

    any ideas ?

    Tim
    Edit
  • I would guess you would use a plain Type Object, just like if you were doing dynamic mapping (see my sample on the site).

    I spent several days trying to get an Ack back as well doing something similar – with no luck.

    Have you tried passing ports between your Started Orchestration? Maybe that would work better to get a message back. Charles Young covers it well here: http://geekswithblogs.net/cyoung/articles/19546.aspx

    Might give you some other ideas but you have probably already looked at it…

    Stephen W. Thomas
    http://www.BizTalkGurus.com

  • Thanks,

    I'll take a look at the dynamic mapping example.

    Tim
    Edit
  • Stephen,

    I looked at the dynamic map example and tried to apply this to a dynamic exec. This is what I have. The expression editor doesn't like the exec.
    tOrchType is defined as System.Type as in your mapping example.

    Any ideas ?


    tOrchType = System.Type.GetType(\"testdynamicexec.BizTalk_Orchestration2 , testdynamicexec, Version=1.0.0.0, Culture=neutral, PublicKeyToken=22ac5e671a17a7fb\");
    exec tOrchType (Port_2, Message_1);
    // note the below is whats in the odx file for a start shape
    //exec testdynamicexec.BizTalk_Orchestration2 (Port_2, Message_1);

    the error indicated on the exec part is Torchtype: can only call or exec a service
    the error indicated on tOrchType is 'TorchType' is not a function
    Edit
  • I have not tried it so I don’t know why would get that error.

    What I have it what I would expect it to look like. Maybe it doesn’t work on the Start Shape? I would think it should though.

    Jon Flanders posted this to a reply to someone on my blog:
    “You already can dynamically call and orchestration. If you put the correct XLANGs into a expression shape (the same that would be generated from a Call Orchestration shape) - you can dynamically call different orchestrations”

    Sorry I can not be of more help on this one.

    Stephen W. Thomas
    http://www.BizTalkGurus.com

  • I appreciate the effort and really like the site. lots of good info here !

    While its true true that I can write the same code as gets put in the odx file its not dynamic until I can make the orchestration name a variable :)

    I'll check back here occasionaly to see if anyone figues this one out

    Tim
    Edit
  • Hi Tim,
    I was wondering if you ever worked out how to do a dynamic orchestration call? I Realise that you can submit the msg to the MsgBox with a specific promoted property and have a particular orchestration subscribe to a specific value of the promoted property. However I was after something similar to the dynamic transform calls, which seems to be what you were after originally. How did you go?

    Guy
    Edit
Page 1 of 1 (9 items)