类型化事实

类型化事实 是实现 ITypedFact 接口的类: TypedXmlDocumentDataConnectionTypedDataTableTypedDataRow

TypedXmlDocument

TypedXmlDocument 类表示业务规则框架中的 XML 文档类型。 在规则中使用 XML 文档的节点作为参数时,将创建两个 XPath 表达式:选择器绑定和字段绑定。

如果节点没有子节点,则会为节点的父节点创建 一个选择器 绑定 (也称为 XmlDocument 绑定) ,并创建一个 字段绑定 (也称为 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

DataConnectionRuleEngine 库中提供的 .NET 类。 它包含一个 .NET SqlConnection 实例和一个 数据集 名称。 使用数据集名称可以为 SqlConnection 创建唯一标识符,并用于定义生成的类型。

DataConnection 类为业务规则引擎提供性能优化。 可以断言一个轻型 DataConnection,而不是在引擎中断言 (TypedDataTable 类) 可能包含许多数据库行 (TypedDataRow 类) 与策略无关的大型数据库表。 当引擎评估策略时,它会根据规则谓词/操作动态生成 SELECT 查询,并在执行时查询 DataConnection 。 例如,假设您具有以下规则:

IF NorthWind.Products.UnitPrice >= 0   
THEN <do something>  

以下 SQL 查询生成于该规则:

Select * From [Product] Where [UnitPrice] >= 0  

查询的结果被作为数据行添加回引擎中。

注意

目前不支持在 DataConnection 中使用 OleDbConnection

选择要在规则条件或操作中使用的数据库表/列时,可以选择使用 DataConnectionTypedDataTable 绑定到对象,方法是在事实资源管理器的“数据库”选项卡的“属性窗口”的“ 数据库绑定类型”下拉框中选择“数据连接”或“ 数据库 表/行”。

注意

默认情况下,将使用 DataConnection 绑定。

TypedDataTable

可以将 ADO.NET DataTable 对象断言到引擎中,但该对象将像对待任何其他 .NET 对象一样处理。 在大多数情况下,需要断言规则引擎类 TypedDataTable

TypedDataTable 是包含 ADO.NET DataTable 的包装类。 构造函数仅采用 DataTable。 每当表或表列用作规则参数时,表达式将针对单个 TypedDataRow 包装器而不是 TypedDataTable 求值。

TypedDataRow

这是 ADO DataRow 对象的类型化事实包装器。 将表或列拖到业务规则编辑器中的规则参数会导致根据返回的 TypedDataRow 包装器生成规则。

另请参阅

事实