Faits typés
Les faits typés sont des classes qui implémentent l’interface ITypedFact : TypedXmlDocument, DataConnection, TypedDataTable et TypedDataRow.
TypedXmlDocument
La classe TypedXmlDocument représente le type de document XML dans Business Rules Framework. Lorsque vous utilisez un nœud d’un document XML comme argument dans une règle, deux expressions XPath sont créées : les liaisons Sélecteur et Champ.
Si le nœud n’a pas de nœuds enfants, une liaison sélecteur (également appelée liaison XmlDocument) est créée sur le nœud parent du nœud et une liaison Field (également appelée liaison XmlDocumentMember) est créée sur le nœud lui-même. La liaison Champ est relative à la liaison Sélecteur. Si le nœud a des nœuds enfants, une liaison Sélecteur est créée avec le nœud et aucune liaison Champ n'est créée.
Supposons que le schéma suivant existe.
Case.xsd
Si le nœud Income est sélectionné, seule une liaison Sélecteur est créée, car le nœud a des nœuds enfants. L’expression XPath par défaut dans la propriété XPath Selector du volet Propriété contient :
/*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case']/*[local-name()='Income' and namespace-uri()='']
Toutefois, si le nœud Name est sélectionné, une liaison Sélecteur et une liaison Champ sont créées. Les informations de liaison se présentent comme suit.
Propriété | Valeur |
---|---|
Champ XPath | *[local-name()='Name' and namespace-uri()=''] |
Sélecteur XPath | /*[local-name()='Root' et namespace-uri()='http://LoansProcessor.Case] |
Vous pouvez modifier les expressions XPath par défaut pour les nœuds XML avant de faire glisser le nœud vers un argument de règle, auquel cas les nouvelles informations de liaison sont placées dans la stratégie. Notez toutefois que toute modification apportée aux expressions XPath doit être entrée à nouveau dans l'Éditeur des règles d'entreprise quand le schéma est rechargé.
Quand des définitions de vocabulaire sont créées pour des nœuds XML, les expressions XPath pour les liaisons ont des valeurs par défaut similaires basées sur les règles décrites précédemment, qui peuvent être modifiées dans l'Assistant Définition de vocabulaire. Les modifications des expressions sont placées dans la définition de vocabulaire et sont prises en compte dans les arguments de règle créés à partir des définitions.
DataConnection
DataConnection est une classe .NET fournie dans la bibliothèque RuleEngine . Il contient un instance SqlConnection .NET et un nom DataSet. Le nom DataSet vous permet de créer un identificateur unique pour sqlConnection et est utilisé pour définir le type résultant.
La classe DataConnection fournit une optimisation des performances au moteur de règle d’entreprise. Au lieu d’affirmer dans le moteur des tables de base de données très volumineuses (classe TypedDataTable ) qui peuvent contenir de nombreuses lignes de base de données (classe TypedDataRow ) qui ne sont pas pertinentes pour la stratégie, vous pouvez affirmer un DataConnection léger. Lorsque le moteur évalue une stratégie, il génère dynamiquement une requête SELECT basée sur les prédicats/actions de règle et interroge dataConnection au moment de l’exécution. Prenons l'exemple de la règle suivante :
IF NorthWind.Products.UnitPrice >= 0
THEN <do something>
La requête SQL suivante est générée à partir de la règle :
Select * From [Product] Where [UnitPrice] >= 0
Les résultats de la requête sont déclarés dans le moteur sous forme de lignes de données.
Notes
L’utilisation d’une OleDbConnection dans un DataConnection n’est actuellement pas prise en charge.
Lorsque vous sélectionnez une table/colonne de base de données à utiliser dans une condition ou une action de règle, vous pouvez choisir de lier à l’objet à l’aide de DataConnection ou de TypedDataTable en sélectionnant « Connexion de données » ou « Table/ligne de base de données » dans la zone de liste déroulante Type de liaison de base de donnéesdans la fenêtre Propriété de l’onglet Bases de données de Fact Explorer.
Notes
La liaison DataConnection est utilisée par défaut.
TypedDataTable
Vous pouvez affirmer un objet DataTable ADO.NET dans le moteur, mais il sera traité comme n’importe quel autre objet .NET. Dans la plupart des cas, vous voudrez plutôt affirmer la classe de moteur de règles TypedDataTable.
TypedDataTable est une classe wrapper qui contient un ADO.NET DataTable. Le constructeur prend simplement un DataTable. Chaque fois qu’une table ou une colonne de table est utilisée comme argument de règle, l’expression est évaluée par rapport aux wrappers TypedDataRow individuels, et non par rapport à TypedDataTable.
TypedDataRow
Il s’agit d’un wrapper de faits typé pour un objet DataRow ADO. Le fait de faire glisser une table ou une colonne vers un argument de règle dans Le Compositeur de règles métiers entraîne des règles créées sur les wrappers TypedDataRow retournés.