DEFINE-BEHAVIOR =============== syntax: (define-behavior <behavior-name> {:PRIMARY | :BEFORE | :AFTER} <behavior-specialized-lambda-list> [:DOCUMENTATION <documentation>] [:EXPLANATION <explanation>] <behavior-body>) Warning: The explanation facility is not sup- ported, hence :documentation and :explanation are ignored. This function defines a behavior. A behavior exists of a name, that describes the behavior, a <qualifier>, that specifies, whether the behavior is a central behavior or an additional behaviour, a lambda list, with which the parameters of the behavior can be set and a behavior body, which defines, what the behavior has to do. The docu- mentation and the explanation are optional. NOTIFY-READ-DEPENDENT and NOTIFY-WRITE-DEPENDENT are special behaviors, which you have to use, if you want to make a read- or write-dependent. syntax: (define-behavior notify-read-dependent :primary ((<place-holder for receiver frametype> (<place-holder for transmitter frametype>) relation-name value) <behavior-body>) The <qualifier> can be :before :after or :primary. :primary specifies a central behavior. :before and :after are additions, which will be executed before or after the central method. The <lambda-list> can contain the following: The first parameter of the lambda-list has to be (<variable-name> <frame-type>). the following parameter can be (<variable-name> <frame-name>) It is also possible to have a remaining argument in the behavior-argument-lists (define-behavior <behavior-name> <qualifier> ((arg-1 <frame-name>) &rest arg-list)...) example: >(define-behavior client-satisfied :primary ((a-client client) (an-offer offer)) (kb-confirm "Are you satisfied with the offer: ~A ?" an-offer))