我最近在BizTalk 2016(FP3 CU5)中使用了BRE。它可以正常工作时很好,但是我发现解决策略执行问题非常困难,并想检查是否有人找到了更好的方法。
我正在使用业务流程CallRules
形状来执行策略。我还创建了使用DebugTrackingIntercerceptor
调用策略的单元测试。在成功执行策略(规则触发)的情况下,输出的调试信息类似于:
FACT ACTIVITY 19/11/2018 07:59:12
Rule Engine Instance Identifier: 7bbad914-92a1-4783-b81a-f0a4d993fa9a
Ruleset Name: LCC.Corporate.NotificationService.BartecMissedBins
Operation: Assert
Object Type: TypedXmlDocument:Lcc.Integration.Corporate.CatsCrm.Schemas.CatsCrm_lcc_catscrm.GetServiceRequestDetailsResponse:/*[local-name()='GetServiceRequestDetailsResponse']/*[local-name()='GetServiceRequestDetailsResult']/*[local-name()='Customer']/*[local-name()='ContactTransports']/*[local-name()='ContactTransport'][*[local-name()="Name" and .="Email"]]
Object Instance Identifier: 9589157
AGENDA UPDATE 19/11/2018 07:59:12
Rule Engine Instance Identifier: 7bbad914-92a1-4783-b81a-f0a4d993fa9a
Ruleset Name: LCC.Corporate.NotificationService.BartecMissedBins
Operation: Add
Rule Name: BartecUpdate
Conflict Resolution Criteria: 0
RULE FIRED 19/11/2018 07:59:12
Rule Engine Instance Identifier: 7bbad914-92a1-4783-b81a-f0a4d993fa9a
Ruleset Name: LCC.Corporate.NotificationService.BartecMissedBins
Rule Name: BartecUpdate
Conflict Resolution Criteria: 0
FACT ACTIVITY 19/11/2018 07:59:12
Rule Engine Instance Identifier: 7bbad914-92a1-4783-b81a-f0a4d993fa9a
Ruleset Name: LCC.Corporate.NotificationService.BartecMissedBins
Operation: Retract
Object Type: TypedXmlDocument:Lcc.Integration.Corporate.CatsCrm.Schemas.CatsCrm_lcc_catscrm.CreateActivity
Object Instance Identifier: 49478415
该策略中的某些规则检查XML文档事实的某些元素的值。如果断言的事实恰好缺少这些元素之一(例如,从上面显示的活动调试信息中的第一条规则中删除),则跟踪信息中没有明显的问题迹象。识别某项不正确的唯一方法是,如果您注意到该规则未触发。从这里开始,要认真检查每个规则中使用的元素的存在。
是否有更好的方法来确定规则未执行的原因?