Typisierte Fakten
Typisierte Fakten sind Klassen, die die ITypedFact-Schnittstelle implementieren: TypedXmlDocument, DataConnection, TypedDataTable und TypedDataRow.
Die TypedXmlDocument-Klasse stellt den XML-Dokumenttyp im Business Rules Framework dar. Wenn Sie einen Knoten eines XML-Dokuments als Argument in einer Regel verwenden, werden zwei XPath-Ausdrücke erstellt: die Selector- und Field-Bindungen.
Wenn der Knoten über keine untergeordneten Knoten verfügt, wird eine Selector-Bindung (auch als XmlDocument-Bindung bezeichnet) für den übergeordneten Knoten des Knotens erstellt und eine Field-Bindung (auch als XmlDocumentMember-Bindung bezeichnet) für den Knoten selbst erstellt. Diese Feldbindung ist relativ zur Auswahlzeigerbindung. Enthält der Knoten untergeordnete Knoten, wird eine Auswahlzeigerbindung zu dem Knoten, aber keine Feldbindung erstellt.
Angenommen, es liegt folgendes Schema vor:
angezeigt wird
Case.xsd
Wenn der Knoten 'Income' ausgewählt ist, wird nur eine Auswahlzeigerbindung erstellt, da der Knoten untergeordnete Knoten besitzt. Der XPath-Standardausdruck in der XPath Selector-Eigenschaft des Eigenschaftenbereichs enthält Folgendes:
/*[local-name()='Root' and namespace-uri()='http://LoansProcessor.Case']/*[local-name()='Income' and namespace-uri()='']
Wird hingegen der Knoten 'Name' gewählt, werden sowohl eine Auswahlzeigerbindung als auch eine Feldbindung erstellt. Die Bindungsinformationen sehen wie folgt aus:
Eigenschaft | Wert |
---|---|
XPath-Feld | *[local-name()='Name' and namespace-uri()=''] |
XPath-Auswahlzeiger | /*[local-name()='Root' und namespace-uri()='http://LoansProcessor.Case] |
Sie können die XPath-Standardausdrücke für die XML-Knoten ändern, bevor Sie den Knoten in ein Regelargument ziehen und die neuen Bindungsinformationen in der Richtlinie abgelegt werden. Beachten Sie jedoch, dass alle Änderungen an den XPath-Ausdrücken erneut im Geschäftsregelersteller eingegeben werden müssen, wenn das Schema neu geladen wird.
Wenn für XML-Knoten Vokabulardefinitionen erstellt werden, haben die XPath-Ausdrücke für die Bindungen ähnliche Standardwerte gemäß den zuvor beschriebenen Regeln, können jedoch im Vokabulardefinitions-Assistenten bearbeitet werden. Änderungen an Ausdrücken werden in der Vokabulardefinition abgelegt und spiegeln sich in Regelargumenten, die aus den Definitionen erstellt werden, wider.
DataConnection ist eine .NET-Klasse, die in der RuleEngine-Bibliothek bereitgestellt wird. Sie enthält eine .NET SqlConnection-instance und einen DataSet-Namen. Mit dem DataSet-Namen können Sie einen eindeutigen Bezeichner für die SqlConnection erstellen und wird zum Definieren des resultierenden Typs verwendet.
Die DataConnection-Klasse bietet eine Leistungsoptimierung für die Business Rule-Engine. Anstatt in der Engine sehr große Datenbanktabellen (TypedDataTable-Klasse ) zu behaupten, die möglicherweise viele Datenbankzeilen (TypedDataRow-Klasse ) enthalten, die für die Richtlinie nicht relevant sind, können Sie eine einfache DataConnection festlegen. Wenn das Modul eine Richtlinie auswertet, erstellt es dynamisch eine SELECT-Abfrage basierend auf den Regel-Prädikaten/-aktionen und fragt die DataConnection bei der Ausführung ab. Gehen wir beispielsweise von folgender Regel aus:
IF NorthWind.Products.UnitPrice >= 0
THEN <do something>
Die folgende SQL-Abfrage wird aus der Regel generiert:
Select * From [Product] Where [UnitPrice] >= 0
Die Ergebnisse der Abfrage werden in Form von Datenzeilen wieder an die Engine übergeben.
Hinweis
Die Verwendung einer OleDbConnection in einer DataConnection wird derzeit nicht unterstützt.
Wenn Sie eine Datenbanktabelle/-spalte auswählen, die in einer Regelbedingung oder -aktion verwendet werden soll, können Sie die Bindung an das Objekt mithilfe von DataConnection oder TypedDataTable auswählen, indem Sie im Dropdownfeld Datenbankbindungstypfür die Registerkarte Datenbanken von Fact Explorer im Dropdownfeld Datenbankbindungstyp die Option "Datenverbindung" oder "Datenbanktabelle/Zeile" auswählen.
Hinweis
Standardmäßig wird die Bindung "DataConnection" verwendet.
Sie können ein ADO.NET DataTable-Objekt in der Engine behaupten, aber es wird wie jedes andere .NET-Objekt behandelt. In den meisten Fällen möchten Sie stattdessen die Regel-Engine-Klasse TypedDataTable festlegen.
TypedDataTable ist eine Wrapperklasse, die eine ADO.NET DataTable enthält. Der Konstruktor verwendet einfach eine DataTable. Wenn eine Tabelle oder Tabellenspalte als Regelargument verwendet wird, wird der Ausdruck für die einzelnen TypedDataRow-Wrapper und nicht für die TypedDataTable ausgewertet.
Dies ist ein typisierter Fakten wrapper für ein ADO DataRow-Objekt . Das Ziehen einer Tabelle oder Spalte auf ein Regelargument im Business Rule Composer führt zu Regeln, die für die zurückgegebenen TypedDataRow-Wrapper erstellt werden.