Freigeben über


Analysieren mehrerer Objekte desselben Typs in einer Geschäftsregel

In vielen Szenarien erstellen Sie eine Geschäftsregel für einen Typ und erwarten, dass jede Instanz des Typs, der an die Engine übergeben wird, von der Regel separat analysiert und behandelt wird. Es ist jedoch in einigen Szenarien wünschenswert, mehrere Instanzen eines bestimmten Typs gleichzeitig in einer Regel zu analysieren.

Nehmen wir beispielsweise eine Regel, die Instanzen der FamilyMember-Klasse verwendet.

IF FamilyMember.Role == Father  
AND FamilyMember.Role == Son  
AND FamilyMember.Surname == FamilyMember.Surname  
THEN FamilyMember.AddChild(FamilyMember)  

Die Regel identifiziert einen FamilyMember-instance, der ein Vater ist, und eine andere instance, die ein Sohn ist. Wenn die Instanzen nach Familiennamen verknüpft sind, wird der Sohn instance einer Sammlung von Kindern auf dem Vater instance hinzugefügt. Wenn jedes FamilyMember-instance in der Regel separat analysiert würde, würde die Regel niemals ausgelöst werden, da der FamilyMember in diesem Szenario nur eine Rolle hat– Vater oder Sohn.

Aus diesem Grund müssen Sie in der Engine angeben, dass mehrere Instanzen in der Regel zusammen analysiert werden sollen. Außerdem benötigen Sie eine Möglichkeit, die Identität jeder Instanz in der Regel zu unterscheiden. Die Instanz-ID-Eigenschaft wird verwendet, um diese Funktionalität bereitzustellen. Dieses Feld steht im Eigenschaftenfenster zur Verfügung, wenn im Fakten-Explorer eine Eigenschaft ausgewählt ist. Sie sollten den Wert des Felds ändern, bevor Sie einen Fakt oder ein Member in eine Regel ziehen.

Mithilfe der Instanz-ID-Eigenschaft würde die Regel neu erstellt. Für die Regelargumente, die den Son-instance von FamilyMember verwenden, wird das Feld Instanz-ID von 0 in 1 geändert. Wenn die Instanz-ID von 0 geändert wird und die Tatsache oder das Element in den Regel-Editor gezogen wird, wird der Wert der Instanz-ID in der Regel nach der -Klasse angezeigt.

IF FamilyMember.Role == Father  
AND FamilyMember(1).Role== Son  
AND FamilyMember.Surname == FamilyMember(1).Surname  
THEN FamilyMember.AddChild(FamilyMember(1))  

Angenommen, ein Vater instance und ein Sohn instance werden in den Motor bestätigt. Die Engine wertet die Regel für die verschiedenen Kombinationen der Instanzen aus. Unter der Annahme, dass Vater und Sohn instance denselben Nachnamen haben, wird der Sohn instance wie beabsichtigt dem Vater instance hinzugefügt.

Hinweis

Die Instanz-ID wird nur im Kontext einer bestimmten Regelauswertung verwendet. Sie wird keiner Objektinstanz innerhalb einer Richtlinienausführung angefügt und ist nicht an die Reihenfolge gebunden, in der Objekte übertragen werden. Jede Objektinstanz wird in allen Regelargumenten für diesen Typ ausgewertet.