정책 테스트 추적 출력 예제
이 섹션에는 다양한 유형의 팩트에 대한 정책 테스트 출력 예제가 포함되어 있습니다.
.NET 클래스
"LoanProcessing" 정책의 예제 규칙 "TestRule1":
IF test.get_ID > 0
THEN <do something>
출력:
RULEET에 대한 규칙 엔진 추적: LoanProcessing 3/16/2004 9:50:28 AM
팩트 활동 2004년 3월 16일 오전 9:50:28
규칙 엔진 인스턴스 식별자: 9effe3f9-d3ad-4125-99fa-56bb379188f7
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: MyTest.test
개체 인스턴스 식별자: 872
조건 평가 테스트(일치) 2004년 3월 16일 오전 9:50:28
규칙 엔진 인스턴스 식별자: 9effe3f9-d3ad-4125-99fa-56bb379188f7
규칙 집합 이름: LoanProcessing
테스트 식: MyTest.test.get_ID > 0
왼쪽 피연산자 값: 100
오른쪽 피연산자 값: 0
테스트 결과: True
안건 업데이트 2004년 3월 16일 오전 9:50:28
규칙 엔진 인스턴스 식별자: 9effe3f9-d3ad-4125-99fa-56bb379188f7
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
규칙 발생 3/16/2004 9:50:28 오전
규칙 엔진 인스턴스 식별자: 9effe3f9-d3ad-4125-99fa-56bb379188f7
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 2004년 3월 16일 오전 9:50:28
규칙 엔진 인스턴스 식별자: 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 08: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 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 177556
어젠더 업데이트 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 177559
어젠더 업데이트 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 177558
어젠더 업데이트 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
실행된 규칙 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
실행된 규칙 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
실행된 규칙 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: DataConnection:Northwind:CustInfo
개체 인스턴스 식별자: 874
팩트 활동 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 177559
팩트 활동 3/16/2004 08:30:16 AM
규칙 엔진 인스턴스 식별자: 1aad35bb-0599-470b-b0fa-73b3fa1dfb83
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 177558
팩트 활동 3/16/2004 08: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
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedDataTable:Northwind:CustInfo
개체 인스턴스 식별자: 377
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 376
조건 평가 테스트(일치) 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
테스트 식: TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0
왼쪽 피연산자 값: 500
오른쪽 피연산자 값: 0
테스트 결과: True
안건 업데이트 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 375
조건 평가 테스트(일치) 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
테스트 식: TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0
왼쪽 피연산자 값: 1000
오른쪽 피연산자 값: 0
테스트 결과: True
안건 업데이트 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 374
조건 평가 테스트(일치) 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
테스트 식: TypedDataRow:Northwind:CustInfo.CreditCardBalance > 0
왼쪽 피연산자 값: 35000
오른쪽 피연산자 값: 0
테스트 결과: True
안건 업데이트 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
규칙 발생 3/17/2004 11:27:35 오전
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
규칙 발생 3/17/2004 11:27:35 오전
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
규칙 발생 3/17/2004 11:27:35 오전
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: TypedDataTable:Northwind:CustInfo
개체 인스턴스 식별자: 377
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 375
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 0f7bcdf3-8103-4990-a740-acaeee386439
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: TypedDataRow:Northwind:CustInfo
개체 인스턴스 식별자: 374
팩트 활동 2004년 3월 17일 오전 11:27:35
규칙 엔진 인스턴스 식별자: 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
팩트 활동 2004년 3월 17일 오전 9:23:05
규칙 엔진 인스턴스 식별자: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
개체 인스턴스 식별자: 858
팩트 활동 2004년 3월 17일 오전 9:23:05
규칙 엔진 인스턴스 식별자: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
규칙 집합 이름: LoanProcessing
작업: 어설션
개체 형식: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
개체 인스턴스 식별자: 853
조건 평가 테스트(일치) 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
안건 업데이트 2004년 3월 17일 오전 9:23:05
규칙 엔진 인스턴스 식별자: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
규칙 집합 이름: LoanProcessing
작업: 추가
규칙 이름: TestRule1
충돌 해결 조건: 0
규칙 발생 3/17/2004 9:23:05 오전
규칙 엔진 인스턴스 식별자: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
규칙 집합 이름: LoanProcessing
규칙 이름: TestRule1
충돌 해결 조건: 0
팩트 활동 2004년 3월 17일 오전 9:23:05
규칙 엔진 인스턴스 식별자: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
개체 인스턴스 식별자: 858
팩트 활동 2004년 3월 17일 오전 9:23:05
규칙 엔진 인스턴스 식별자: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
규칙 집합 이름: LoanProcessing
작업: 철회
개체 형식: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
개체 인스턴스 식별자: 853
이 예제에서는 TypedXmlDocument 가 "Microsoft.Samples.BizTalk.LoansProcessor.Case" 문서 형식으로 엔진에 어설션되었음을 보여 줍니다. 규칙에 정의된 XPath 선택기에 따라 엔진이 만들어지고 문서 유형 및 선택기 문자열에 따라 자식 TypedXmlDocument가 "Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType" 유형으로 어설션되었습니다.
이 자식 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
규칙 집합 이름: Order
작업: 어설션
개체 형식: TestClasses.Order
개체 인스턴스 식별자: 448
조건 평가 테스트(일치) 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
테스트 식: TestClasses.Order.inventoryAvailable == True
왼쪽 피연산자 값: null
오른쪽 피연산자 값: True
테스트 결과: False
팩트 활동 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
작업: 어설션
개체 유형: TestClasses.Shipment
개체 인스턴스 식별자: 447
팩트 활동 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
작업: 어설션
개체 형식: TestClasses.Inventory
개체 인스턴스 식별자: 446
조건 평가 테스트(일치) 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
테스트 식: TestClasses.Inventory.AllocateInventory == True
왼쪽 피연산자 값: True
오른쪽 피연산자 값: True
테스트 결과: True
어젠더 업데이트 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
작업: 추가
규칙 이름: InventoryCheck
충돌 해결 조건: 0
실행된 규칙 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
규칙 이름: InventoryCheck
충돌 해결 조건: 0
팩트 활동 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
어젠더 업데이트 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
작업: 추가
규칙 이름: 배송
충돌 해결 조건: 0
실행된 규칙 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
규칙 이름: 배송
충돌 해결 조건: 0
팩트 활동 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.Shipment
개체 인스턴스 식별자: 447
팩트 활동 3/17/2004 10:31:17 AM
규칙 엔진 인스턴스 식별자: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
규칙 집합 이름: Order
작업: 철회
개체 형식: TestClasses.Inventory
개체 인스턴스 식별자: 446
이 예제에서는 Ship 규칙과 관련된 조건이 처음 검사될 때 False로 평가됩니다. 그러나 InventoryCheck 규칙이 발생하면 Order의 inventoryAvailable 필드가 변경되고 Order 개체의 엔진에 대해 Update 명령이 실행됩니다. 따라서 Ship 규칙이 다시 평가됩니다. 이번에는 조건이 True로 평가되고 Ship 규칙이 실행됩니다.
참고
규칙을 잘못 작성하면 Update 함수의 정방향 추론으로 인해 무한 반복이 발생할 수 있습니다. 이런 경우 비즈니스 규칙 작성기에서 이 정책을 테스트하면 "규칙 엔진이 실행 반복을 검색했습니다."라는 오류 메시지가 나타납니다.