I would like to announce that the BRE Pipeline Framework Codeplex project has just been made publicly available on Codeplex.

For the best part of the year I have been working on a context heavy BizTalk Server based integration project (which was not making use of the ESB Toolkit based itineraries) and after the first few months on the project and many pipeline components later I decided there had to be a better way to manage the logic that I wanted my pipelines to implement.

I investigated more flexible frameworks and the one I found most attractive was described on this blog post by Guo Ming Li.  It allowed you to execute as many context instructions as you wanted to.  I saw this as a great starting point but I really wanted to take this further, not limiting the requirements to simply being able to add hardcoded context properties.  I also wanted to be able to read context properties, or set context properties based on the result of an XPath statement, or to set the context properties based on  values read in from the SSO database.  I also wanted to be able to implement helper methods which I could use as part of my rule conditions so I could selectively apply actions.

Seeing that my wish list was just growing larger all the time, I decided that one of the design goals for the BRE Pipeline Framework is that it should be extensible, providing a base pipeline component and a framework and allowing developers to implement their own logic as long as they implement interfaces contained within the framework.  The full list of my design goals for this project are as below.

-Reduce the amount of time required to introduce new logic into a BizTalk pipeline.  Instead concentrate on capturing logic in reusable class libraries.
-Reduce the complexities surrounding the deployment of pipeline components.  Since logic is held in business rules and class libraries which the pipeline component doesn’t have any direct references to, the pipeline component will not need to be redeployed unless there are changes to the pipeline component itself (plumbing rather than logic).
-Promote the reuse of logic used within BizTalk pipelines rather than writing new pipeline components every time a slight variation of logic is required.
-Provide a simple design time experience (BRE) which encourages developers to use pipelines appropriately and makes it easier for analysts to understand the purpose of a pipeline.
-Provide an extensible framework that allows for developers to implement their relevant requirements if not catered for out of the box in the desired manner.

Take a look at the codeplex project page if this piques your interest as it contains a lot more detail, and let me know if you are interested in contributing at all as there is much work to be done.  I’ll leave you with a screenshot of an example BRE rule to give you an idea of what the framework is trying to achieve.

ExampleRule