You have two main choices when you are planning to invoke a rules policy from a BizTalk orchestration: the Call Rules shape or a .NET helper class.
The Call Rules shape provides native support for invoking rules policies from BizTalk orchestration and enables you to pass facts required by the rules policy as parameters using a GUI.
BizTalk Server 2004 required that any Call Rules shapes be within an atomic scope (thus incurring an orchestration persistence point each time, which often impaired performance for no direct reason). If you are using BizTalk Server 2004, the advice is to not use the Call Rules shape and instead invoke the BRE directly through an Expression shape or a custom .NET helper class (and thus avoid a persistence point). This restriction was lifted in BizTalk Server 2006, meaning that the Call Rules shape can be used outside of an atomic scope (and thus not incur the persistence point).
In my experience, the Call Rules shape is a bit awkward to use; it will not show the facts required to be passed or asserted, but instead requires you to define variables matching the short-term fact types before showing them in the Call Rules Shape user interface, as shown in Figure 7-27.
The Call Rules shape also doesn't allow you to specify a custom Tracking Interceptor, which, as you will see later in this chapter, can make rules ...