策略测试跟踪输出示例
本部分包含用于不同类型事实的策略测试输出的示例。
.Net 类
策略“ LoanProcessing” 中的示例规则“ TestRule1” :
IF test.get_ID > 0
THEN <do something>
输出:
RULESET 的规则引擎跟踪:LoanProcessing 3/16/2004 9:50:28 AM
事实活动 3/16/2004 9:50:28 AM
规则引擎实例标识符: 9effe3f9-d3ad-4125-99fa-56bb379188f7
规则集名称: LoanProcessing
操作: 添加
对象类型: MyTest.test
对象实例标识符:872
条件评估测试 (MATCH) 2004/3/16 上午 9:50:28
规则引擎实例标识符: 9effe3f9-d3ad-4125-99fa-56bb379188f7
规则集名称: LoanProcessing
测试表达式:MyTest.test.get_ID > 0
左操作数值:100
右操作数值:0
测试结果:True
议程 更新 3/16/2004 9:50:28 AM
规则引擎实例标识符: 9effe3f9-d3ad-4125-99fa-56bb379188f7
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
规则触发 3/16/2004 9:50:28 AM
规则引擎实例标识符: 9effe3f9-d3ad-4125-99fa-56bb379188f7
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
事实活动 3/16/2004 9:50:28 AM
规则引擎实例标识符: 9effe3f9-d3ad-4125-99fa-56bb379188f7
规则集名称: LoanProcessing
操作:收回
对象类型: MyTest.test
对象实例标识符:872
DataConnection/TypedDataRow
策略“ LoanProcessing” 中的示例规则“ TestRule1” :
IF NorthWind.CustInfo.CreditCardBalance > 0
THEN <do something>
输出:
RULESET 的规则引擎跟踪:LoanProcessing 3/16/2004 8:30:16 AM
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作: 添加
对象类型:DataConnection:Northwind:CustInfo
对象实例标识符:874
条件评估测试(匹配) 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
测试表达式:从 [CustInfo] 中选择 * ,其中 [CreditCardBalance] > 0
左操作数的值:
右操作数的值:
测试结果:True
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:177556
日程更新 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:177559
日程更新 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:177558
日程更新 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
触发的规则 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
触发的规则 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
触发的规则 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作:收回
对象类型:DataConnection:Northwind:CustInfo
对象实例标识符:874
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作:收回
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:177559
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作:收回
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:177558
事实活动 3/16/2004 8:30:16 AM
规则引擎实例标识符:1aad35bb-0599-470b-b0fa-73b3fa1dfb83
规则集名称: LoanProcessing
操作:收回
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:177556
以上示例指示 CustInfo 表中有三行满足该规则中的条件。 这导致三个唯一的 TypedDataRow 被添加到引擎中并对每个实例进行了议程更新和规则触发。
TypeDataTable/TypedDataRow
策略“ LoanProcessing” 中的示例规则“ TestRule1” :
IF NorthWind.CustInfo.CreditCardBalance > 0
THEN <do something>
输出:
RULESET 的规则引擎跟踪:LoanProcessing 3/17/2004 11:27:35 AM
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedDataTable:Northwind:CustInfo
对象实例标识符:377
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:376
条件评估测试 (MATCH) 2004/3/17 上午 11:27:35
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
测试表达式:TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0
左操作数值:500
右操作数值:0
测试结果:True
议程 更新 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:375
条件评估测试 (MATCH) 2004/3/17 上午 11:27:35
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
测试表达式:TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0
左操作数值:1000
右操作数值:0
测试结果:True
议程 更新 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:374
条件评估测试 (MATCH) 2004/3/17 上午 11:27:35
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
测试表达式:TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0
左操作数值:35000
右操作数值:0
测试结果:True
议程 更新 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
规则触发 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
规则触发 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
规则触发 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作:收回
对象类型:TypedDataTable:Northwind:CustInfo
对象实例标识符:377
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作:收回
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:375
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作:收回
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:374
事实活动 3/17/2004 11:27:35 AM
规则引擎实例标识符:0f7bcdf3-8103-4990-a740-acaeee386439
规则集名称: LoanProcessing
操作:收回
对象类型:TypedDataRow:Northwind:CustInfo
对象实例标识符:376
注意
以上示例显示 TypedDataTable 包含三行,每行均作为 TypedDataRow 添加。 每行在条件中的计算结果都为 True,因而导致该规则被添加到议程中并且已触发。
TypedXmlDocument
策略“ LoanProcessing” 中的示例规则“ TestRule1” :
IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>
输出:
RULESET 的规则引擎跟踪:LoanProcessing 3/17/2004 9:23:05 AM
事实活动 3/17/2004 9:23:05 AM
规则引擎实例标识符:51ffbea4-468f-4ce8-8ab7-977cadda2e2b
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
对象实例标识符:858
事实活动 3/17/2004 9:23:05 AM
规则引擎实例标识符:51ffbea4-468f-4ce8-8ab7-977cadda2e2b
规则集名称: LoanProcessing
操作: 添加
对象类型:TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
对象实例标识符:853
条件评估测试 (MATCH) 2004/3/17 上午 9:23:05
规则引擎实例标识符:51ffbea4-468f-4ce8-8ab7-977cadda2e2b
规则集名称: LoanProcessing
测试表达式:TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
左操作数值:6
右操作数值:4
测试结果:True
议程 更新 3/17/2004 9:23:05 AM
规则引擎实例标识符:51ffbea4-468f-4ce8-8ab7-977cadda2e2b
规则集名称: LoanProcessing
操作:添加
规则名称:TestRule1
冲突解决条件:0
规则触发 3/17/2004 9:23:05 AM
规则引擎实例标识符:51ffbea4-468f-4ce8-8ab7-977cadda2e2b
规则集名称: LoanProcessing
规则名称:TestRule1
冲突解决条件:0
事实活动 3/17/2004 9:23:05 AM
规则引擎实例标识符:51ffbea4-468f-4ce8-8ab7-977cadda2e2b
规则集名称: LoanProcessing
操作:收回
对象类型:TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
对象实例标识符:858
事实活动 3/17/2004 9:23:05 AM
规则引擎实例标识符:51ffbea4-468f-4ce8-8ab7-977cadda2e2b
规则集名称: LoanProcessing
操作:收回
对象类型:TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
对象实例标识符:853
此示例显示, TypedXmlDocument 已断言到文档类型为“Microsoft.Samples.BizTalk.LoansProcessor.Case”的引擎中。 然后,根据规则中定义的 XPath 选择器,引擎基于文档类型和选择器字符串创建并断言类型为“Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType”的子 TypedXmlDocument。
此子级 TypedXmlDocument 在条件中的计算结果为 True,从而导致议程更新和规则触发。 然后收回父 TypedXmlDocument 的和子级。
Update 函数
示例策略“Order”
“InventoryCheck”规则
IF Inventory.AllocateInventory == True
THEN Order.inventoryAvailable == True
Update(Order)
“Ship”规则
IF Order.inventoryAvailable == True
THEN Shipment.ShipOrder
输出:
RULESET 的规则引擎跟踪:订单 3/17/2004 10:31:17 AM
事实活动 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:顺序
操作: 添加
对象类型:TestClasses.Order
对象实例标识符:448
条件评估测试(匹配) 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
测试表达式:TestClasses.Order.inventoryAvailable == True
左操作数值:null
右操作数值:True
测试结果:False
事实活动 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作: 添加
对象类型:TestClasses.Shipment
对象实例标识符:447
事实活动 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作: 添加
对象类型:TestClasses.Inventory
对象实例标识符:446
条件评估测试(匹配) 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
测试表达式:TestClasses.Inventory.AllocateInventory == True
左操作数值:True
右操作数值:True
测试结果:True
日程更新 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作:添加
规则名称:InventoryCheck
冲突解决条件:0
触发的规则 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
规则名称:InventoryCheck
冲突解决条件:0
事实活动 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作:更新
对象类型:TestClasses.Order
对象实例标识符:448
条件评估测试(匹配) 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
测试表达式:TestClasses.Order.inventoryAvailable == True
左操作数值:True
右操作数值:True
测试结果:True
日程更新 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作:添加
规则名称:发货
冲突解决条件:0
触发的规则 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
规则名称:发货
冲突解决条件:0
事实活动 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作:收回
对象类型:TestClasses.Order
对象实例标识符:448
事实活动 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作:收回
对象类型:TestClasses.Shipment
对象实例标识符:447
事实活动 3/17/2004 10:31:17 AM
规则引擎实例标识符:533f2fb6-a91f-49c1-8f36-e03a27ca9d72
规则集名称:订单
操作:收回
对象类型:TestClasses.Inventory
对象实例标识符:446
在本示例中,第一次检查与 Ship 规则相关联的条件时,该条件的计算结果为 False。 但是,在触发 InventoryCheck 规则时,将更改“Order”上的“inventoryAvailable”字段,并在引擎上为“Order”对象发出 Update 命令。 这将导致对 Ship 规则进行重新计算。 重新计算后,该条件的计算结果为 True,从而触发 Ship 规则。
注意
如果不正确地编写了规则,则具有 Update 函数的正向链接可能会导致无限循环。 如果出现这种情况,则在业务规则编辑器中测试策略时会收到错误消息,该消息文本为“规则引擎检测到执行循环”。