Hechos con tipo
Los hechos con tipo son clases que implementan la interfaz ITypedFact : TypedXmlDocument, DataConnection, TypedDataTable y TypedDataRow.
La clase TypedXmlDocument representa el tipo de documento XML en el marco de reglas de negocios. Cuando se usa un nodo de un documento XML como argumento en una regla, se crean dos expresiones XPath: los enlaces Selector y Field.
Si el nodo no tiene nodos secundarios, se crea un enlace Selector (también conocido como enlace XmlDocument) en el nodo primario del nodo y se crea un enlace Field (también conocido como enlace XmlDocumentMember) en el propio nodo. Este enlace de campo depende del enlace de selector. Si el nodo tiene nodos secundarios, se crea un enlace de selector en el nodo y no se crea ningún enlace de campo.
Supongamos que tiene el siguiente esquema.
del Explorador de hechos
Case.xsd
Si se selecciona el nodo Income, únicamente se crea un enlace de selector porque el nodo tiene nodos secundarios. La expresión XPath predeterminada en la propiedad Selector de XPath del panel Propiedad contiene:
/*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case']/*[local-name()='Income' and namespace-uri()='']
Sin embargo, si se selecciona el nodo Name, se crean tanto un enlace de selector como un enlace de campo. La información de enlace es similar a la siguiente.
Propiedad | Value |
---|---|
Campo XPath | *[local-name()='Name' and namespace-uri()=''] |
Selector XPath | /*[local-name()='Root' y namespace-uri()='http://LoansProcessor.Case] |
Las expresiones XPath predeterminadas para los nodos XML se pueden cambiar antes de arrastrar el nodo a un argumento de regla y colocar la información de enlace nueva en la directiva. No obstante, tenga en cuenta que cualquier cambio realizado a las expresiones XPath debe volver a especificarse en el Compositor de reglas de negocio al volver a cargar el esquema.
Cuando se crean definiciones de vocabulario para los nodos XML, las expresiones XPath para los enlaces tienen valores predeterminados similares basados en las reglas descritas anteriormente, aunque se pueden modificar en el Asistente para definición de vocabulario. Los cambios realizados a las expresiones se ubican en la definición de vocabulario y se ven reflejados en cualquier argumento de regla creado a partir de las definiciones.
DataConnection es una clase .NET proporcionada en la biblioteca RuleEngine . Contiene una instancia de SqlConnection de .NET y un nombre DataSet . El nombre de DataSet permite crear un identificador único para SqlConnection y se usa para definir el tipo resultante.
La clase DataConnection proporciona una optimización del rendimiento para el motor de reglas de negocios. En lugar de declarar en las tablas de base de datos muy grandes (clase TypedDataTable ) del motor que pueden contener muchas filas de base de datos (clase TypedDataRow ) que no son relevantes para la directiva, puede declarar una clase DataConnection ligera. Cuando el motor evalúa una directiva, compila dinámicamente una consulta SELECT basada en los predicados o acciones de la regla y consulta dataConnection en ejecución. Por ejemplo, supongamos la siguiente regla:
IF NorthWind.Products.UnitPrice >= 0
THEN <do something>
La siguiente consulta SQL la genera la regla:
Select * From [Product] Where [UnitPrice] >= 0
Los resultados de la consulta se imponen en el motor en forma de filas de datos.
Nota
Actualmente no se admite el uso de OleDbConnection en dataConnection .
Al seleccionar una tabla o columna de base de datos para usarla en una condición de regla o una acción, puede elegir enlazar al objeto mediante DataConnection o TypedDataTable seleccionando "Conexión de datos" o "Tabla o fila de base de datos" en el cuadro desplegable Tipo de enlacede base de datos en la ventana De propiedades de la pestaña Bases de datos del Explorador de hechos.
Nota
El enlace DataConnection se usa de forma predeterminada.
Puede declarar un objeto ADO.NET DataTable en el motor, pero se tratará como cualquier otro objeto .NET. En la mayoría de los casos, en su lugar querrá afirmar la clase del motor de reglas TypedDataTable.
TypedDataTable es una clase contenedora que contiene una ADO.NET DataTable. El constructor simplemente toma una DataTable. Cada vez que se usa una tabla o columna de tabla como argumento de regla, la expresión se evalúa en los contenedores TypedDataRow individuales y no en TypedDataTable.
Se trata de un contenedor de hechos con tipo para un objeto DataRow de ADO. Arrastrar una tabla o columna a un argumento de regla en business Rule Composer da como resultado reglas compiladas en los contenedores TypedDataRow devueltos.