다음을 통해 공유


정책 테스트 추적 출력 예제

이 섹션에는 다양한 유형의 팩트에 대한 정책 테스트 출력 예제가 포함되어 있습니다.

.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 함수의 정방향 추론으로 인해 무한 반복이 발생할 수 있습니다. 이런 경우 비즈니스 규칙 작성기에서 이 정책을 테스트하면 "규칙 엔진이 실행 반복을 검색했습니다."라는 오류 메시지가 나타납니다.