Martijn's blog - E-Commerce, EAI, BizTalk and .NET

2006/01/21

Using the BRE in content-based routing scenarios

After writing Schema Editor extensions, I got the idea of creating a Pipeline Component which can be used in content-based routing scenarios. Also, I've attached a 'whitepaper' which explains the sample solution as well as the IExtension interface used to implement the Schema Editor extension. The idea is simple:

  • A message comes into / flies out of the system through a Pipeline;
  • The Pipeline contains a component which looks at the schema for the passing message;
  • The Schema contains an annotation which states the Policy that applies to the Schema;
  • The appropriate Policy is executed by calling the BRE;
  • The Policy alters the message;
  • The message flying by is modified to contain the altered message from the BRE.
After this, any following component or system will deal with the altered message.

One thing I haven't implemented due to the fact I haven't currently got a BizTalk 2004 VPC image is AppDomain caching of the Schema lookup. This caching would greatly improve performance of the Pipeline Component.

The associated whitepaper can be downloaded here. The source code is here.

5 Comments:

  • Well i am currently doing a little bit more BRE and try to read a about as mucg as possible.

    It was a very good sample clearly showing the power of the BizTalk framework.

    It all seems to faal into place...
    Schema extensions / pipelines / BRE and they all work together to achieve the desired result...

    Really Really nice.

    By Anonymous Anonymous, at 8:13 PM  

  • Hi Martijn:

    I have implemented a similar idea, where I tag each incoming message's context with routing/processing information retrieved from database based on the message namespace. These messages are then routed to appropriate orchestrations subscribing to the messages based on the routing/processing information. This part works very fine. I developed a helper library to implement the plumbing and the pipeline component just calls methods on the types.

    I have used Enterprise Library (EL) for caching this routing/processing information once retrieved from the database to enhance the performance. But the trouble is that I get an error while trying to create/get the cache manager. I have drilled down and found out that it fails on creating the xml serializer instance. (I think something to do with creating temporary JITed pCode).

    If I call the same library from other windows application, it works very fine. I am confused as what's going wrong here.

    What is your idea of introducing caching at AppDomain level that you mentioned in your post.

    I will appreicate any help.

    Thank you,

    Inam Haq

    Inam.Haa@ravianconsulting.com

    By Anonymous Anonymous, at 6:16 AM  

  • This Blog is going places, the people, the layout, amazing to see such dedication and focus.

    By Anonymous Gadgets UK, at 9:44 AM  

  • This Blog is going places, the people, the layout, amazing to see such dedication and focus.

    By Anonymous 10755GF, at 11:05 PM  

  • This part works very fine. I developed a helper library to implement the plumbing and the pipeline component just calls methods on the types.


    By Anonymous Computer Enclosures, at 1:01 PM  

Post a Comment

<< Home