次の方法で共有


ポリシー テストのトレース出力例

このセクションでは、さまざまな種類のファクトに関するポリシー テストの出力例について説明します。

.Net クラス

"LoanProcessing" ポリシーの "TestRule1" ルールの例:

IF test.get_ID > 0  
THEN <do something>  

出力:

RULESET のルール エンジン トレース: LoanProcessing 3/16/2004 9:50:28 AM

FACT ACTIVITY 3/16/2004 9:50:28 AM

ルール エンジン インスタンス識別子: 9effe3f9-d3ad-4125-99fa-56bb379188f7

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: MyTest.test

オブジェクト インスタンス識別子: 872

条件評価テスト (一致) 3/16/2004 9:50:28 AM

ルール エンジン インスタンス識別子: 9effe3f9-d3ad-4125-99fa-56bb379188f7

ルール セット名: LoanProcessing

テスト式: MyTest.test.get_ID > 0

左オペランド値: 100

右オペランド値: 0

テスト結果: True

議題の更新 2004/3/16 9:50:28 AM

ルール エンジン インスタンス識別子: 9effe3f9-d3ad-4125-99fa-56bb379188f7

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

実行されたルール 2004/3/16 9:50:28 AM

ルール エンジン インスタンス識別子: 9effe3f9-d3ad-4125-99fa-56bb379188f7

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

FACT ACTIVITY 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

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: DataConnection:Northwind:CustInfo

オブジェクト インスタンス識別子: 874

条件の評価テスト (一致) 2004/3/16 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

テスト式: [CustInfo] の [CreditCardBalance] 0 から * を > 選択します

左側のオペランド値:

右側のオペランド値:

テスト結果: True

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 177556

AGENDA UPDATE 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 177559

AGENDA UPDATE 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 177558

AGENDA UPDATE 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

RULE FIRED 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

RULE FIRED 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

RULE FIRED 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: DataConnection:Northwind:CustInfo

オブジェクト インスタンス識別子: 874

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 177559

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 177558

FACT ACTIVITY 3/16/2004 8:30:16 AM

ルール エンジン インスタンス識別子: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 177556

上記の例は、CustInfo テーブルの 3 つの行がルールの条件を満たしていることを示しています。 この結果、エンジンに 3 つの一意の TypedDataRows がアサートされ、議題の更新およびルール実行が各インスタンスで発生します。

TypeDataTable/TypedDataRow

"LoanProcessing" ポリシーの "TestRule1" ルールの例:

IF NorthWind.CustInfo.CreditCardBalance > 0  
THEN <do something>  

出力:

RULESET のルール エンジン トレース: LoanProcessing 3/17/2004 11:27:35 AM

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedDataTable:Northwind:CustInfo

オブジェクト インスタンス識別子: 377

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 376

条件評価テスト (一致) 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

テスト式: TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0

左オペランド値: 500

右オペランド値: 0

テスト結果: True

AGENDA UPDATE 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 375

条件評価テスト (一致) 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

テスト式: TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0

左オペランド値: 1000

右オペランド値: 0

テスト結果: True

AGENDA UPDATE 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 374

条件評価テスト (一致) 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

テスト式: TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0

左オペランド値: 35000

右オペランド値: 0

テスト結果: True

AGENDA UPDATE 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

RULE FIRED 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

RULE FIRED 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

RULE FIRED 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedDataTable:Northwind:CustInfo

オブジェクト インスタンス識別子: 377

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 375

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 374

FACT ACTIVITY 3/17/2004 11:27:35 AM

ルール エンジン インスタンス識別子: 0f7bcdf3-8103-4990-a740-acaeee386439

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedDataRow:Northwind:CustInfo

オブジェクト インスタンス識別子: 376

Note

上記の例は、TypedDataTable に 3 つの行が含まれていることを示しています。各行は、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

ファクト アクティビティ 2004/3/17 9:23:05 AM

ルール エンジン インスタンス識別子: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case

オブジェクト インスタンス識別子: 858

ファクト アクティビティ 2004/3/17 9:23:05 AM

ルール エンジン インスタンス識別子: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b

ルール セット名: LoanProcessing

操作: Assert

オブジェクトの種類: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType

オブジェクト インスタンス識別子: 853

条件評価テスト (一致) 3/17/2004 9:23:05 AM

ルール エンジン インスタンス識別子: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b

ルール セット名: LoanProcessing

テスト式: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4

左オペランド値: 6

右オペランド値: 4

テスト結果: True

AGENDA UPDATE 3/17/2004 9:23:05 AM

ルール エンジン インスタンス識別子: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b

ルール セット名: LoanProcessing

操作: 追加

ルール名: TestRule1

競合解決基準: 0

RULE FIRED 3/17/2004 9:23:05 AM

ルール エンジン インスタンス識別子: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b

ルール セット名: LoanProcessing

ルール名: TestRule1

競合解決基準: 0

ファクト アクティビティ 2004/3/17 9:23:05 AM

ルール エンジン インスタンス識別子: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b

ルール セット名: LoanProcessing

操作: 取り消し

オブジェクトの種類: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case

オブジェクト インスタンス識別子: 858

ファクト アクティビティ 2004/3/17 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 のルール エンジン トレース: Order 3/17/2004 10:31:17 AM

FACT ACTIVITY 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: Assert

オブジェクトの種類: TestClasses.Order

オブジェクト インスタンス識別子: 448

条件評価テスト (一致) 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

テスト式: TestClasses.Order.inventoryAvailable == True

左オペランド値: null

右オペランド値: True

テスト結果: False

FACT ACTIVITY 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: Assert

オブジェクトの種類: TestClasses.Shipment

オブジェクト インスタンス識別子: 447

FACT ACTIVITY 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: Assert

オブジェクトの種類: TestClasses.Inventory

オブジェクト インスタンス識別子: 446

条件評価テスト (一致) 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

テスト式: TestClasses.Inventory.AllocateInventory == True

左オペランド値: True

右オペランド値: True

テスト結果: True

AGENDA UPDATE 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: 追加

ルール名: InventoryCheck

競合解決基準: 0

RULE FIRED 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

ルール名: InventoryCheck

競合解決基準: 0

FACT ACTIVITY 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: 更新

オブジェクトの種類: TestClasses.Order

オブジェクト インスタンス識別子: 448

条件評価テスト (一致) 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

テスト式: TestClasses.Order.inventoryAvailable == True

左オペランド値: True

右オペランド値: True

テスト結果: True

AGENDA UPDATE 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: 追加

ルール名: 出荷

競合解決基準: 0

RULE FIRED 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

ルール名: 出荷

競合解決基準: 0

FACT ACTIVITY 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: 取り消し

オブジェクトの種類: TestClasses.Order

オブジェクト インスタンス識別子: 448

FACT ACTIVITY 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: 取り消し

オブジェクトの種類: TestClasses.Shipment

オブジェクト インスタンス識別子: 447

FACT ACTIVITY 3/17/2004 10:31:17 AM

ルール エンジン インスタンス識別子: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72

ルールセット名: Order

操作: 取り消し

オブジェクトの種類: TestClasses.Inventory

オブジェクト インスタンス識別子: 446

この例では、Ship ルールに関連付けられている条件が最初に確認されるときに False と評価されます。 ただし、InventoryCheck ルールが実行されると、Order オブジェクトの inventoryAvailable フィールドが変更され、Update コマンドが Order オブジェクトのエンジンで発行されます。 このため、Ship ルールが再評価されます。 今回の条件は True に評価され、Ship ルールが実行されます。

Note

ルールが不正確に書き込まれると、Update 関数の前向き連鎖で、無限ループに陥る可能性があります。 無限ループが発生すると、ビジネス ルール作成ツールのポリシーをテストするときに、"ルール エンジンが実行ループを検出しました。" というエラー メッセージが表示されます。