我在Biztalk Server 2006 R2中遇到了业务规则引擎的问题。
我在BRE中有1项政策。类库用于调用策略。
我实现了LongTermFactRetriever。
如果通过业务流程一次发送一条消息,则一切正常,BRE缓存会刷新。
但是如果我们发送批量消息(同时说5个),BRE缓存会刷新4次(对于4个业务流程实例,factsHandleIn为null)
现在我们在BRE工作内存中有5个缓存对象。同样,如果我们发送批量消息(同时5个),则使用高速缓存的实例,并且不会创建新的实例。
我的查询是“BRE是否应该为流经业务流程的每条消息使用相同的1个缓存实例,或者如果另一条消息正在使用现有缓存,它应该为并发消息创建新实例”
答案 0 :(得分:0)
在某些情况下,BizTalk BRE可以缓存多个长期事实的实例。在您的事实检索器中,您有责任确定何时更新长期事实以及跟踪哪些BRE实例缓存您的长期事实。
这是relevant part of the BizTalk documentation (出现在“DataTable Binding样本”之前:
“在某些批处理方案中,可以创建同一策略的多个策略实例。如果创建了新的策略实例,则必须确保声明了正确的长期事实。
此外,您需要编写自定义代码以实现以下策略:
如果您只有一个版本的最新事实并且可以根据需要可靠地刷新它们,那么第二点(跟踪哪个规则引擎实例使用哪个长期事实)并不是绝对必要的 - 这适用于大多数简单情况。