| Neal Walters 2006-02-08, 5:54 pm |
| I call a web service which returns me potentially three types of orders:
1) Good Order (no exceptions)
2) Order with Business Exceptions
3) Order with Out-of-Inventory Exceptions
I will never get more than 3, but I might get only one of the three or any
combination.
I have three branches under a parallel shape. Each checks to see if it has
the desired type of order, and if so it processes it.
Right now, I'm getting two orders that flow through branch 2 and 3.
Unfortunately, what is happening is that branch 3 is doing a send/receive
(direct binding) that starts an independent orchestration, which eventually
causes our internal Human Workflow. Meanwhile, branch 2 is just sitting there
doing nothing.
The goal was that branch 2 and 3 would be parallel and that if a receive in
either branch is encountered, the other branch keeps running.
Part 2 of my question -
I do have work to do after the parallel shape, so I need to continue after
all three branches of the parallel have finished.
Now I'm debating about Call Orch, Start Orch, and using Send/Receive with
direct binding. I recently posted about the downside of "Call Orch", i.e. you
cannot see the called-orch in the debugger and as far as I can tell there is
absolutely no history of it in HAT.
If I do Start-Orch, then I would have to do polling or something to be able
to run the final logic that must occur after each branch has finished.
If I do a send/receive with direct binding, I'm afraid I may still not get
parallelism. I.e. the first send/receive may stop the whole orchestration
until that receive comes back.
I have read a couple of Jon Flanders posts here, and it looks like maybe the
only time you should use parallel shape if for a convoy???
Thanks,
Neal Walters
http://Biztalk-Training.com
|