Condividi tramite


Fact tipizzati

I fatti tipizzati sono classi che implementano l'interfaccia ITypedFact: TypedXmlDocument, DataConnection, TypedDataTable e TypedDataRow.

TypedXmlDocument

La classe TypedXmlDocument rappresenta il tipo di documento XML in Business Rules Framework. Quando si usa un nodo di un documento XML come argomento in una regola, vengono create due espressioni XPath: i binding Selector e Field.

Se il nodo non ha nodi figlio, viene creata un'associazione Selector (nota anche come associazione XmlDocument) al nodo padre del nodo e un'associazione Field (nota anche come associazione XmlDocumentMember) al nodo stesso. Questo binding Field è relativa al binding Selector. Se il nodo dispone di nodi figlio, nel nodo verrà creato un binding Selector e nessun binding Field.

Si supponga di utilizzare lo schema seguente.

Schema di esempio visualizzato in Fact Explorer
Case.xsd

Se è selezionato il nodo Income, verrà creato solo un binding Selector poiché il nodo dispone di nodi figlio. L'espressione XPath predefinita nella proprietà XPath Selector del riquadro Proprietà contiene:

/*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case']/*[local-name()='Income' and namespace-uri()='']  

Tuttavia, se si seleziona il nodo Nome verrà creato sia un binding Selector che un binding Field. Le informazioni sul binding assumeranno l'aspetto seguente.

Proprietà Valore
Campo XPath *[local-name()='Name' and namespace-uri()='']
Selettore XPath /*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case]

È possibile modificare le espressioni XPath predefinite per i nodi XML prima di trascinare il nodo nell'argomento di una regola e prima che le nuove informazioni sul binding siano inserite nel criterio. Eventuali modifiche apportate alle espressioni XPath tuttavia dovranno essere reinserite in Creazione regole di business quando si ricarica lo schema.

Quando vengono create le definizioni di vocabolario per i nodi XML, le espressioni XPath per i binding hanno valori predefiniti simili in base alle regole descritte in precedenza, ma possono essere modificate nella Definizione guidata vocabolario. Le modifiche alle espressioni vengono inserite nella definizione di vocabolario e si applicano anche in qualsiasi argomento di regola generato dalle definizioni.

DataConnection

DataConnection è una classe .NET fornita nella libreria RuleEngine . Contiene un'istanza di .NET SqlConnection e un nome DataSet . Il nome dataset consente di creare un identificatore univoco per SqlConnection e viene usato per definire il tipo risultante.

La classe DataConnection fornisce un'ottimizzazione delle prestazioni per il motore di regole business. Anziché affermare nel motore tabelle di database molto grandi (classe TypedDataTable ) che possono contenere molte righe di database (classe TypedDataRow ) che non sono rilevanti per i criteri, è possibile affermare un dataConnection leggero. Quando il motore valuta un criterio, compila dinamicamente una query SELECT in base ai predicati/azioni delle regole e esegue query su DataConnection in fase di esecuzione. Si supponga ad esempio di disporre della regola seguente:

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

La query SQL seguente viene generata dalla regola:

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

I risultati della query vengono dichiarati di nuovo nel motore come righe di dati.

Nota

L'uso di un OleDbConnection in un dataConnection non è attualmente supportato.

Quando si seleziona una tabella/colonna di database da usare in una condizione o un'azione di regola, è possibile scegliere di associare all'oggetto usando DataConnection o TypedDataTable selezionando "Connessione dati" o "Tabella/riga database" dalla casella a discesa Tipo di associazionedatabase nella finestra proprietà per la scheda Database di Esplora fatti.

Nota

Per impostazione predefinita, viene utilizzato il tipo di binding DataConnection.

TypedDataTable

È possibile asserire un oggetto DataTable ADO.NET nel motore, ma verrà trattato come qualsiasi altro oggetto .NET. Nella maggior parte dei casi si vuole invece affermare la classe TypedDataTable del motore delle regole.

TypedDataTable è una classe wrapper che contiene un ADO.NET DataTable. Il costruttore accetta semplicemente dataTable. Ogni volta che una tabella o una colonna di tabella viene usata come argomento regola, l'espressione viene valutata rispetto ai singoli wrapper TypedDataRow e non rispetto a TypedDataTable.

TypedDataRow

Si tratta di un wrapper dei fatti tipizzato per un oggetto ADO DataRow . Il trascinamento di una tabella o di una colonna in un argomento regola in Business Rule Composer comporta regole compilate rispetto ai wrapper TypedDataRow restituiti.

Vedere anche

Fact