Manuel §1.1.3    

Clause événementielle

Une clause événementielle permet d ’associer à un ou plusieurs événements un traitement à effectuer.

On EVENEMENT { , EVENEMENT} Do ACTION

Un événement est un signal généré par une variable dont la valeur a changé. Cette variable peut être une variable externe, un événement défini par un objet , ou même un événement déclaré; dans ce cas on dit qu ’il s ’agit d ’un déclencheur de la clause. L ’action associée est un ensemble d ’instructions qui sont exécutées lorsque l ’événement est déclenché.

A un instant donné une clause peut être en cours d ’exécution ou pas. Si elle n ’est pas en cours d ’exécution et qu ’un événement se produit, Sisal va la mettre en exécution dès que possible. Si elle est déjà en exécution quand un événement se produit, Sisal va attendre qu ’elle ait terminé son exécution avant de pouvoir en relancer une nouvelle.

ATTENTION ce point est important, une clause ne peut être relancée qu ’après sa terminaison normale, elle n ’est pas interrompue pour être relancée.

Pour connaître les événements qui se produisent, Sisal balaye périodiquement l ’ensemble des déclencheurs pour voir si leur valeur a été modifiée. Si c ’est le cas Sisal marque la clause comme devant être exécutée le plus tôt possible. Si deux événements de la clause se produisent en même temps, Sisal ne déclenchera qu ’une seule fois la clause.

Un événement déclenché par un objet marque directement la clause comme devant être exécutée au plus tôt. Là aussi on n ’interrompt pas la clause en cours d ’exécution.