Gruppenregeln

Eine Gruppenregel ist eine spezielle Regel, die nicht in den Cache geschrieben wird und keinen Wert zurückgibt. Sie wird nicht durch Benutzer oder andere Regeln aufgerufen. Sie legt lediglich einen oder mehrere Werte vom Typ Canonical fest.

Syntax

Gruppenregeln haben eine spezielle Syntax. Sie haben keinen Typ, weshalb auch keine Typ-Flags verwendet werden.

Group <identifier> (GivenList)
   Statements
End Group

Ein Element der Liste der vorgegebenen Parameter kann eine Gruppenregel aktivieren. Im Anweisungsblock einer Gruppenregel muss mindestens eine der Anweisungen eine Zuordnung zu einer grundlegenden, als Canonical deklarierten Regel sein.

Eine Gruppenregel deklariert, wie Werte vom Typ Canonical aus einem bestimmten Parametersatz berechnet werden. Mithilfe von Gruppenregeln kann ein Design alternative Methoden zur Festlegung wichtiger Details unterstützen.

So kann zum Beispiel ein einfacher Kreis auf zahlreiche unterschiedliche Weisen definiert werden: durch Mittelpunkt und Radius, durch Durchmesser und zwei Tangenten usw. Jede Methode hat ihre Berechtigung, jedoch ist es nicht sinnvoll, dem Benutzer hunderte von Optionen zum Definieren eines einfachen Kreises anzubieten.

In der Regel bieten Anwendungen daher nur einen Teil der Möglichkeiten an. Intent verwendet eine sprachbasierte, als Teilspezifikation bezeichnete Lösung, die mittels Regeln Teillösungen vorgibt. Bei Vorliegen ausreichender Teillösungen wird eine vollständige Spezifikation gebildet.

Nachfolgend sehen Sie einen klassischen Fall mit Radius und Durchmesser. Beides kann aus dem anderen berechnet werden, jedoch ist eine bestimmte der beiden Angaben manchmal praktikabler.

Canonical Parameter Rule radius As Number = Required
Parameter Rule diameter As Number = radius * 2
Group diameter_only (diameter)
   radius = diameter / 2
End Group

Die beiden Parameter diameter und radius werden definiert. Radius wird zusätzlich als Canonical deklariert. Wenn der Parameterwert bereitgestellt wird, wird er vorrangig verwendet.

Anmerkung: Werte vom Typ Canonical, die als Parameter deklariert sind, werden als Pseudo-Gruppenregeln verwendet. Wenn bereitgestellt, gelten sie automatisch als berechenbar.

Wenn der Parameter diameter bereitgestellt wird, wird bei der Auswertung von radius die Gruppenregel diameter_only aufgerufen, mit deren Hilfe der Radius berechnet wird.