형식화된 팩트
형식화된 팩트는 ITypedFact 인터페이스인 TypedXmlDocument, DataConnection, TypedDataTable 및 TypedDataRow를 구현하는 클래스입니다.
TypedXmlDocument 클래스는 비즈니스 규칙 프레임워크의 XML 문서 형식을 나타냅니다. 규칙에서 XML 문서의 노드를 인수로 사용하면 두 개의 XPath 식인 선택기 및 필드 바인딩이 만들어집니다.
노드에 자식 노드가 없는 경우 노드의 부모 노드에 대한 선택기 바인딩 (XmlDocument 바인딩이라고도 함)이 만들어지고 필드 바인딩 (XmlDocumentMember 바인딩이라고도 함)이 노드 자체에 만들어집니다. 이러한 필드 바인딩은 선택기 바인딩에 상대적입니다. 노드에 자식 노드가 있는 경우 선택기 바인딩은 노드로 만들어지며 필드 바인딩은 만들어지지 않습니다.
다음과 같은 스키마가 있다고 가정합니다.
팩트 Explorer 에
Case.xsd
자식 노드가 있는 Income 노드가 선택되면 선택기 바인딩만 만들어집니다. 속성 창의 XPath 선택기 속성에 있는 기본 XPath 식에는 다음이 포함됩니다.
/*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case']/*[local-name()='Income' and namespace-uri()='']
그러나 Name 노드가 선택되면 선택기 바인딩과 필드 바인딩이 모두 만들어집니다. 바인딩 정보는 다음과 같이 표시됩니다.
속성 | 값 |
---|---|
XPath 필드 | *[local-name()='Name' and namespace-uri()=''] |
XPath 선택기 | /*[local-name()='Root' and namespace-uri()=''http://LoansProcessor.Case] |
노드를 규칙 인수로 끌기 전에 XML 노드에 대한 기본 XPath 식을 변경하여 새로운 바인딩 정보를 정책에 포함할 수 있습니다. 그러나 스키마를 다시 로드할 경우 XPath 식에 대한 모든 편집 내용을 비즈니스 규칙 작성기에 다시 입력해야 합니다.
XML 노드에 대한 어휘 정의가 만들어지면 바인딩에 대한 XPath 식은 이전에 설명된 규칙을 기준으로 유사한 기본값을 포함하며 이 식을 어휘 정의 마법사에서 편집할 수 있습니다. 식에 대한 변경 내용은 어휘 정의에 저장되며 정의에서 작성한 모든 규칙 인수에 반영됩니다.
DataConnection 은 RuleEngine 라이브러리에 제공되는 .NET 클래스입니다. 여기에는 .NET SqlConnection instance 및 DataSet 이름이 포함됩니다. DataSet 이름을 사용하면 SqlConnection에 대한 고유 식별자를 만들 수 있으며 결과 형식을 정의하는 데 사용됩니다.
DataConnection 클래스는 비즈니스 규칙 엔진에 성능 최적화를 제공합니다. 정책과 관련이 없는 많은 데이터베이스 행(TypedDataRow 클래스)을 포함할 수 있는 매우 큰 데이터베이스 테이블(TypedDataTable 클래스)을 엔진에 어설션하는 대신 간단한 DataConnection을 어설션할 수 있습니다. 엔진은 정책을 평가할 때 규칙 조건자/작업에 따라 SELECT 쿼리를 동적으로 빌드하고 실행 시 DataConnection 을 쿼리합니다. 예를 들어 다음과 같은 규칙을 사용한다고 가정합니다.
IF NorthWind.Products.UnitPrice >= 0
THEN <do something>
다음 SQL 쿼리는 다음 규칙에 의해 생성됩니다.
Select * From [Product] Where [UnitPrice] >= 0
쿼리 결과는 엔진에 데이터 행으로 다시 어설션됩니다.
참고
DataConnection에서 OleDbConnection의 사용은 현재 지원되지 않습니다.
규칙 조건 또는 작업에 사용할 데이터베이스 테이블/열을 선택하는 경우 팩트 Explorer 데이터베이스 탭의 속성 창에 있는 데이터베이스 바인딩 유형드롭다운 상자에서 "데이터 연결" 또는 "데이터베이스 테이블/행"을 선택하여 DataConnection 또는 TypedDataTable을 사용하여 개체에 바인딩하도록 선택할 수 있습니다.
참고
기본적으로 DataConnection 바인딩이 사용됩니다.
ADO.NET DataTable 개체를 엔진에 어설션할 수 있지만 다른 .NET 개체처럼 처리됩니다. 대부분의 경우 대신 규칙 엔진 클래스 TypedDataTable을 어설션하려고 합니다.
TypedDataTable 은 ADO.NET DataTable을 포함하는 래퍼 클래스입니다. 생성자는 DataTable을 사용합니다. 테이블 또는 테이블 열이 규칙 인수로 사용될 때마다 식은 TypedDataTable이 아닌 개별 TypedDataRow 래퍼에 대해 평가됩니다.
ADO DataRow 개체에 대한 형식화된 팩트 래퍼입니다. 비즈니스 규칙 작성기에서 테이블 또는 열을 규칙 인수로 끌어오면 반환 된 TypedDataRow 래퍼에 대해 규칙이 빌드됩니다.