BRE长期事实检索器缓存在BIzTalk Server 2006 R2中多次更新

时间:2009-06-15 06:47:51

标签: .net biztalk

我在Biztalk Server 2006 R2中遇到了业务规则引擎的问题。

我在BRE中有1项政策。类库用于调用策略。

我实现了LongTermFactRetriever。

如果通过业务流程一次发送一条消息,则一切正常,BRE缓存会刷新。

但是如果我们发送批量消息(同时说5个),BRE缓存会刷新4次(对于4个业务流程实例,factsHandleIn为null)

现在我们在BRE工作内存中有5个缓存对象。同样,如果我们发送批量消息(同时5个),则使用高速缓存的实例,并且不会创建新的实例。

我的查询是“BRE是否应该为流经业务流程的每条消息使用相同的1个缓存实例,或者如果另一条消息正在使用现有缓存,它应该为并发消息创建新实例”

1 个答案:

答案 0 :(得分:0)

在某些情况下,BizTalk BRE可以缓存多个长期事实的实例。在您的事实检索器中,您有责任确定何时更新长期事实以及跟踪哪些BRE实例缓存您的长期事实。

这是relevant part of the BizTalk documentation (出现在“DataTable Binding样本”之前:

“在某些批处理方案中,可以创建同一策略的多个策略实例。如果创建了新的策略实例,则必须确保声明了正确的长期事实。

此外,您需要编写自定义代码以实现以下策略:

  • 知道何时更新长期事实
  • 跟踪哪个规则引擎实例使用哪个长期事实“

如果您只有一个版本的最新事实并且可以根据需要可靠地刷新它们,那么第二点(跟踪哪个规则引擎实例使用哪个长期事实)并不是绝对必要的 - 这适用于大多数简单情况。