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.
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.
Wenn der Parameter diameter bereitgestellt wird, wird bei der Auswertung von radius die Gruppenregel diameter_only aufgerufen, mit deren Hilfe der Radius berechnet wird.