| Guide Utilisateur AROM v2.0 | ||||
|---|---|---|---|---|
| Précédent | Arrière rapide | Chapitre 4. Représentation des entités du système | Avance rapide | Suivant |
La notification permet à l'utilisateur de l'API d'AROM d'être averti lorsqu'un changement survient au niveau d'une base de connaissances. Il y a deux notions à prendre en compte. Tout d'abord, il faut identifier quels sont les changements susceptible d'être notifiés. Ensuite, il est important de définir à quel niveau l'évènement de notification est généré et quel forme cet évènement prends.
Les notifications peuvent être générées dans AROM lors :
du changement du Nom d'une entité AROM, quelle qu'elle soit.
du changement de la valeur d'un des Slots (variable ou role) d'une Instance (object ou tuple). Il est possible de prévenir un utilisateur lors du changement d'un slot précis ou pour tout changement de valeurs d'une instance. Par contre, lorsque la définition d'un slot est supprimée/ajoutée au niveau de la structure, il n'y a pas de notification faite au niveau des instances.
du changement de la structure d'appartenance d'une Instance.
du changement de la valeur d'une Facette d'un descripteur de slot. Toutes les facettes ne génèrent pas forcement une notification, ce n'est peut être pas utile pour la facette de documentation par exemple. Ne sera pas implémenté dans un premier temps.
de l'ajout/suppression/modification d'un élément de l'ensemble des Instances d'une Structure. Une instance est dite modifiée lorsqu'elle notifie elle-même un changement, voir point 1, 2 et 3. C'est donc l'extension (l'ensemble des instances) de la structure qui est pris en compte ici. Par ensemble des instances on considère les instances propres à la structure et les instances de ses sous structures.
de l'ajout/suppression/modification d'un élément de l'ensemble des Slots d'une Structure. Dans ce cas, c'est une modification de l'intention de la structure qui est prise en compte. Un Slot est dit modifié lorsqu'il est lui-même susceptible de notifier un changement, voir point 1 et 4.
de l'ajout/suppression/modification d'un élément de l'ensemble des Spécialisations d'une Structure. Seule la modification des intentions des sous-structures sera notifiée. En effet, la modification de l'extension d'une sous-structure est déjà prise en compte par la structure parente (voir le point 5).
de l'ajout/suppression/modification d'un élément de l'ensemble des Instances d'une KnowledgeBase. La même politique que celle définit pour les structures (point 5) est utilisée.
de l'ajout/suppression/modification d'un élément de l'ensemble des Intentions d'une KnowledgeBase. Dans ce cas, seules les modifications des intentions des structures sont notifiées. En effet, les modifications sur les extentions sont notifiées via l'ensemble des Instances de la base, point précédent.
Comme on peut le voir dans la description faite ci-dessus, il existe deux types de propriétés écoutables dans AROM. Les propriétés simples, d'une part, qui correspondent aux attributs directement valués des entités AROM, tels que le nom ou la valeur d'un slot d'une Instance; Ces propriétés sont en italique ci-dessous. Les propriétés composites, d'autre part, qui représentent des ensembles d'entités ou de propriétés, pouvant être elles-mêmes composites; Ces propriétés sont représentées en gras dans les schémas qui suivent. C'est par exemple l'ensemble des AMInstance d'une structure ou l'ensemble des Intention d'une base de connaissances. Les schémas qui suivent détaillent les propriétés écoutables pour les différentes entités AROM.
En ce qui concerne les slots, trois possibilités sont offertes:
Soit on considère que ce sont les Slots qui sont écoutables. Dans ce cas, une notification est lancée lorsque le nom de ce slot change ou lorsqu'un de ses descripteurs change donc lorsqu'une facette décrivant un descripteur est modifiée.
Soit on considère que ce sont les descripteurs qui sont écoutables et par conséquent une notification est lancée uniquement lorsqu'une modification est réalisée sur une facette décrivant le descripteur. Un changement du Slot associé au descripteur n'entraîne pas de notification.
Il est également envisageable d'autoriser les deux notifications citées ci-dessus. Par contre, en ce qui concerne la propriété composite SLOTS de Structure, seules les modifications sur le SlotDescriptor de la structure en question sont intéressantes, en plus d'un changement de nom du slot. En effet, une modification du SlotDescriptor d'une sous-structure est notifiée via la propriété SPECIALIZATIONS mais elle n'a pas de conséquence sur l'Intention de la structure considérée.
Pour être notifié des modifications d'une propriété, il est nécessaire de s'enregistrer comme listener auprès de l'objet définissant cette propriété. Pour être listener, il faut implémenter des interfaces spécifiques qui permettent de recevoir les évènements associés.
Les évènements liés aux propriétés simples permettent de signaler que la valeur de la propriété considérée a changé. Les évènements liés aux propriétés composites permettent, quant à eux, de signaler que l'ensemble des données identifié par la propriété a changé. C'est à dire qu'un élément de l'ensemble a été ajouté ou supprimé ou encore qu'il a été modifié. Les éléments d'une propriété composite, Composition, pouvant être eux-mêmes des propriétés composites, la modification d'un élément de l'ensemble peut être dûe à la modification d'une propriété simple, p, d'une entité, s1, appartenant à une propriété composite de niveau x, Composition_x.
E: Composition {e1, e2, ...,en }
|
-> Composition 2 {f1, f2, .., fm}
|
-> ...
...
|
-> Composition x {s1, s2,...,sy}
|
->Element dont une
propriété simple (p)
a été modifié.
Dans le cas d'une propriété simple, la description de la modification (l'entité modifié, le nom de la propriété modifiée ainsi que l'ancienne et la nouvelle valeur) est transmise à l'utilisateur via un Evenement simple tel qu'on les trouve pour les propriétés des JavaBean.
Pour ce qui est des propriétés composites, lors de l'ajout ou de la suppression d'un élément, l'information transmise doit préciser l'entité modifié, c'est à dire celle contenant la propriété composite, le nom de la propriété modifiée, le type de l'opération effectuée (ajout, suppression), et l'élément ajouté ou supprimé.
Par contre, lors de la modification de l'un des éléments d'une propriété composite, il faut transmettre un évènement définissant l'entité modifié, donc celle contenant la propriété composite, le nom de la propriété, l'élément modifié et la modification effectué. La modification elle-même est transmise via un nouvel Evenement. Dans le cas où l'élément modifié est une propriété simple, le même évènement que celui décrit dans le paragraphe précédent est transmis. Par contre, dans le cas où l'élément modifié est lui-même une propriété composite, il faut transmettre de nouveau un évènement définissant l'élément dans la propriété composite qui a été modifié et la modification effective.
Même si les informations à transmettre ne sont pas identiques dans le cas d'une modification et dans le cas d'un ajout ou d'une suppression, c'est un même type d'Evenement qui est émis.