EMA-XPS Online
DEFINE-CONSTRAINT
DEFINE-CONSTRAINT
=================
Syntax: (define-constraint <Constraint-Name> OF
<constraint-pattern-Name>
[:DOCUMENTATION <Dokumentation>]
[:EXPLANATION <Erklärung>]
[FOR-EACH
(<bab-Var> <bab-lisp-Ausdruck>)]
WITH <einfache-Prädikation>+)
Warnung: Der Erklärungseintrag wird durch
EMA-XPS nicht unterstützt, d.h.
:documentation und :explanation
werden ignoriert.
Mit einem Constraint definieren Sie die Aus-
prägungen für die Parameter des Constraint-
Pattern. Im Constraint-Pattern legen Sie fest,
wie bestimmte Werte verknüpft werden sollen.
Im Constraint legen Sie die konkreten Werte für
die Verknüpfung fest. Sie können dabei Attribut-
werte einer einzelnen wie auch mehrerer Instanzen
verknüpfen.
FOR-EACH erwartet eine Liste mit einer Variablen
gefolgt von einem Lisp-Ausdruck. Der Lisp-Ausdruck
muß zu einer Liste mit gültigen Bedingungen eva-
luieren. Durch die FOR-EACH Deklaration kann z.B.
für jede Instanz eines bestimmten Rahmens ein
Constraint erzeugt werden.
WITH erwartet eine einfache Prädikation. Die
Prädikationen in den WITH-Klauseln dürfen
nicht aufeinander aufbauen. Für jeden Parameter
des Patterns muß genau eine WITH-Klausel exis-
tieren.
Beispiel: >(define-constraint-pattern
berechne-reale-kosten)
(_reale-Kosten _Landes-Wuensche)
:documentation "Berechnet die
entstehenden Kosten für den Kunden
bei Besuch der Länder
_Landes-Wuensche."
RULES
(KNOWN (_Landes-Wuensche)
THEN (is _reale-Kosten (berechne-kosten-
der-kunde _Landes-Wuensche))))
>(define-constraint berechne-kosten-fuer-
kunden
OF berechne-reale-kosten
FOR-EACH (ein-kunde (instances-of
'Kunde)))
WITH
[entstehende-Kosten ein-Kunde
_reale-Kosten]
[ziele ein-Kunde _Landes-Wuensche])
EMA-XPS Online