型別事實
具類型事實是實作ITypedFact介面的類別:TypedXmlDocument、DataConnection、TypedDataTable 和 TypedDataRow。
TypedXmlDocument類別代表商務規則架構中的 XML 檔案類型。 使用 XML 文件的節點做為規則中的引數時,會建立兩個 XPath 運算式:「選取器」和「欄位」繫結。
如果節點沒有子節點, 則會將選取器 系結 (也稱為 XmlDocument 系結) 建立至節點的父節點,而 Field 系結 (也稱為 XmlDocumentMember 系結) 建立至節點本身。 此欄位繫結是相對於選取器繫結。 若該節點有子節點,便會對該節點建立選取器繫結,而不會建立欄位繫結。
假設您有下列結構描述。
管中顯示的範例架構
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 實例和 DataSet 名稱。 DataSet名稱可讓您建立SqlConnection的唯一識別碼,並用於定義結果型別。
DataConnection類別供應商務規則引擎的效能優化。 您可以判斷提示與原則無關的 TypedDataTable) 類別 (TypedDataTable 類別 (TypedDataRow 類別) 可能包含許多資料庫資料列的引擎非常大型資料庫 (資料表,您可以判斷提示輕量型 DataConnection。 當引擎評估原則時,它會根據規則述詞/動作動態建置 SELECT 查詢,並在執行時查詢 DataConnection 。 例如,假設您有下列規則:
IF NorthWind.Products.UnitPrice >= 0
THEN <do something>
該規則會產生下列 SQL 查詢:
Select * From [Product] Where [UnitPrice] >= 0
查詢結果會做為資料列判斷提示回引擎。
注意
目前不支援在DataConnection中使用OleDbConnection。
當您選取要在規則條件或動作中使用的資料庫資料表/資料行時,您可以選擇從 [事實總管] 的 [資料庫] 索引標籤的 [資料庫] 索引標籤的 [資料連線] 或 [資料庫資料表/資料列] 中選取 [資料連線] 或 [資料庫資料表/資料列] 來系結至物件。
注意
預設會使用 DataConnection 繫結。
您可以將ADO.NET DataTable物件判斷提示到引擎中,但會將它視為任何其他 .NET 物件。 在大部分情況下,您會想要判斷提示規則引擎類別 TypedDataTable。
TypedDataTable是一個包裝函式類別,其中包含 ADO.NET DataTable。 建構函式只會採用 DataTable。 每當使用資料表或資料表資料行做為規則引數時,都會根據個別 TypedDataRow 包裝函式來評估運算式,而不是針對 TypedDataTable評估。
這是 ADO DataRow 物件的具型別事實包裝函式。 將資料表或資料行拖曳至商務規則編輯器中的規則引數,會導致根據傳回 的 TypedDataRow 包裝函式所建置的規則。