Creating public orchestrations
I am currently working on one of the Biztalk projects that contains a lot of lengthy orchestrations. In order to split them in manageable chunks, we are making intensive use of the call orchestration and start orchestration shapes. As long as the orchestrations remain in a single assembly, it works great. However, for complex solutions, it makes great sense to split these orchestrations into separate deployable assemblies - probably spanning across several BizTalk applications.
In such cases, orchestrations in an assembly are by default not visible to orchestrations in another assembly. This is due to the default type modifier for the orchestration. The Type Modified for the orchestration is similar to the access qualifier of C#. By default this is set to "Internal". Obviously, with Internal, the orchestration is not visible outside the assembly within which it is coded. So if you are trying to call this orchestration from some other assembly which has referenced this assembly, you would need to explicitly make the orchestration "visible" outside the assembly. This can be done by setting the Type Modifier as "public".
This helps a lot in componentization of the orchestrations in a complex Biztalk solution.
Comments
Anonymous
March 15, 2007
Good post. I just wanted to add that you will sometimes need to close and reopen the solution in order for the newly marked public orchestrations to become visible to the other projects.Anonymous
December 10, 2009
I have also found you may need to remove a reference and then add it back in order for the call orchestration type picker to see it. Thanks, Ben Cline