A couple of months ago I released the BRE Pipeline Framework project onto codeplex, the goal of the project being to make it easier to inspect or manipulate messages in pipelines through the use of the Business Rules Engine in BizTalk.

Today I have released v1.2.0 of the framework and you can download the new installer from the codeplex project page. The installation steps described on the codeplex project documentation page are applicable regardless whether you are a first time installer or not, and they will not require you to revise your existing policies at all.

The most promising update in this release is the introduction of Recoverable Interchange Processing to the pipeline component. When Recoverable Interchange Processing is turned on, if an envelope message is processed by a disassembler type component and results in the interchange being debatched into multiple individual messages and a failure is encountered in the BRE Pipeline Framework pipeline component (in a stage after the disassemble) then only the message(s) that encountered the failure will suspend (each failed message showing up as a separate suspended instance) along with the relevant error text for that specific message, while the ones that do not encounter errors will process successfully. This applies to exceptions encountered in the BRE Policies or to routing failure which are a result of there being no subscriptions for the message.

In contrast, if Recoverable Interchange Processing is turned off then if a single message encounters an error then the entire interchange will fail with a single suspended instance created for the interchange with a generic error message. Note that Recoverable Interchange Processing should never be enabled on a pipeline which will be exercised within an orchestration.

A new boolean parameter (default value = false) called RecoverableInterchangeProcessing has been introduced in the BRE Pipeline Framework pipeline component which allows you to control the Recoverable Interchange Processing feature. After installing the new version of the BRE Pipeline Framework it is possible that the new parameter might not show up in existing pipelines that make use of the component, if this is the case then delete the reference to the BREPipelineFrameworkComponent assembly and re-add it to your project (the updated assembly should be in the C:\Program Files (x86)\Microsoft BizTalk Server 2010\Pipeline Components or equivalent folder).

New Property

Another update is that all the get context property type methods (exposed in the BREPipelineFramework.SampleInstructions.ContextInstructions vocabulary) have now been updated such that they possess improved error handling. Previously if the context property didn’t exist and you instructed that an exception should be thrown (in contrast to a blank or other default value being returned), then the exception seen against the suspended instance would be very generic as below, making it hard to determine which specific condition in which specific rule caused the failure.

OldError

The new error message format tells you exactly which context property caused the problem.

NewError

Lastly, I have updated the default value of the Enabled property on the pipeline component to true. This was previously set to false and resulted in the pipeline component not executing at all unless the developer remembered to enable the component. Instead now it is up to the developer to disable the component if he doesn’t want to use it.

Please post any feedback or ideas on the codeplex project discussions page.