One of the nice improvements in BizTalk 2006 R1 (BTS2k6R1) and higher is that you don’t need to use an atomic transaction scope around the “Call Rules” shape. I guess the reason for this is that classes used internally by the Business Rules Engine are now serializable while they were not in previous release.
Recently the orchestration designer in Visual Studio almost got me. I wanted to use a “Call Rules” shape en saw to my surprise that the shape was grayed out in the shape context menu. This is menu you get when you right click somewhere in the orchestration designer surface.

What was going on here? Was I wrong? Was it wishful thinking? Did this new feature only exist in my head? Do I still have to use the atomic transaction scope in my orchestrations? Because Visual Studio is always right and I’m always wrong I was about to add the scope to my orchestration.
Because I still felt a little bit disappointed I decided to have a quick look in the BTS2k6r1 help file. Nothing special was mentioned in the topic “How to Use the Call Rules Shape” however. Still curious I also looked at the same topic in the BTS2k6r2 help file. To my surprise the topic is updated and contains the following note:
In BizTalk Server 2004, you can insert a Call Rules shape within an orchestration or a Scope shape with Transaction Type set to Atomic. In BizTalk Server 2006, you do not need to have an atomic scope to insert a Call Rules shape. You can drag a Call Rules shape into the Orchestration Design Surface from the Toolbox. However, in BizTalk Server 2006, the Call Rules menu item is disabled in the context menu if you try to insert a Call Rules shape inside an orchestration that does not have an atomic scope. This is a limitation with the BizTalk Server 2006 product.
So I was right! You don’t have to use an atomic transaction scope anymore. Apparently there is a bug in the orchestration designer. You can only drag a call rules shape from the toolbox to the orchestration designer surface. The same option can only be used from the context menu if you are inside a scope.
I really wonder what the reason for this is? Is it just a bug? And why didn’t they solve this in BTS2k6r2? And also will it be solved in the coming R3.
Anyway what point do I want to make here?
- Visual Studio is not always right. In rare cases you’re right and Visual Studio is not!
- You don’t have to use an atomic transaction scope anymore when you want to use the “Call Rules” shape.
Advertisement

RSS feed
Yeah… this is a known issue. It has been reported during the TAP for BTS2010 (ID: 555872) and unfortunately, they have decided to not fix this for BTS2010
[...] http://biztalkmessages.vansplunteren.net/2008/06/13/call-rules-shape-atomic-transactions-and-the-orc... [...]
[...] Now why where we interested in this? We wanted to call the Business Rules Engine several times in a low latency scenario and everyone thought that it would this might create a persistence point each time the rules where called. I was quite pleased with my result but I had a vague memory that back in BizTalk 2004 you needed to enclose the Call rules shape in an atomic transaction. A quick search showed me that in BizTalk 2006 this requirement was dropped. http://biztalkmessages.vansplunteren.net/2008/06/13/call-rules-shape-atomic-transactions-and-the-orc... [...]