• Aucun résultat trouvé

9.3 LA MODELISATION

9.3.2 Les variantes

Des variantes de prestations, proposées par les entreprises lors de la phase de négociation ou devant être réalisées ultérieurement sur le chantier, peuvent avoir des conséquences sur la définition d'autres prestations [Bounaas95b]. Il n'est pas question ici de réaliser automatiquement les mises à jour, conséquences de la prise en compte d'une variante sur les lots connexes, car chaque entreprise reste maîtresse de ses choix de produits. En terme d'usage, nous avons donc opté pour le déclenchement d'alarmes afin d’alerter les lots concernés par l'introduction d'une variante. Ces alarmes sont déclenchées dès qu’une variante d'un lot est créée.

Une variante d’un lot donné correspond à la modification, l’ajout ou la suppression d’un ouvrage ou d’un paragraphe du descriptif de ce lot. Cette variante est traduite par la duplication des paragraphes modifiés ou ajoutés. Pour cela, nous avons défini un autre type de paragraphe contenant en plus un commentaire sur la variante et un indicateur précisant si cette variante correspond à la suppression d’un paragraphe ou non. Une variante peut être vue comme une version d’instance d’un paragraphe [Agrawal90] [Katz87] [Bounaas91]. Les paragraphes variantes sont instances de la classe Fiche_variantes (Figure 9-9).

F1.1 F3 F2.1 F4.1 Modification de F4 F1 F2 F4 F4.1 F3 Déclenchement d’une règle ECA

Création d’une variante de F4 Déclenchement d’une

règle ECA

L’ensemble des paragraphes variantes constitue une hiérarchie d’instances de la classe

Fiche_variantes (voir Figure 9-5). La création de cette hiérarchie de paragraphes est rendue

automatique par l’utilisation des règles ECA. En effet, lorsqu’un paragraphe d’un lot est modifié et que l’utilisateur se trouve dans une phase de création de variante, le système déclenche une règle pour dupliquer le paragraphe altéré et donc créer une instance de la classe

Fiche_variante (Figure 9-6).

Type de règle : Propagation

Evénement : Retour Modifier_instance

Source : oid : Fiche

Condition : (= Mode_Variante ‘T) Action : (dupliquer_fiche oid oid_variante)

Figure 9-6 : Création d’une variante de paragraphe

Comme les paragraphes sont organisés dans une hiérarchie, la duplication d’une variante de paragraphe entraîne la duplication des paragraphes les plus généraux, si ces derniers n’ont pas déjà été dupliqués. Cette duplication est réalisée par une règle ECA (Figure 9-7). Lorsque l’utilisateur valide l’édition de la variante d’un lot, la hiérarchie de variantes de paragraphes est totalement construite.

Type de règle : Propagation

Evenement : Utilisateur dupliquer_fiche_apres Source : oid : Fiche

oid_variante : Fiche_variante Variables : pere_paragraphe

Condition : (SETQ pere_paragraphe (ex_pere_fiche oid))

Action : (SETQ pere_variante (existe_variante pere)) (IFN pere_variante

(dupliquer_fiche pere pere_variante) )

(inserer_fils pere_variante oid_variante)

Figure 9-7 : Construction de la hiérarchie de variantes

Cette règle se déclenche après l’exécution de la fonction dupliquer_fiche. Cette règle vérifie qu’il ne s’agit pas de la duplication de la racine de la hiérarchie (Condition), puis, dans le cas où il s’agit d’un autre paragraphe, elle vérifie l’existence d’une variante du paragraphe au dessus, le duplique et l’insère dans la hiérarchie.

Le principe de structuration d’un descriptif de lot est conservé pour les variantes. Une variante de lot (instance de la classe Lot_variante) (Figure 9-9) référence la racine de la hiérarchie des fiches variantes et contient, entre autres, des informations sur l’instigateur, le

Une fois que la variante est créée, le système, en utilisant les règles ECA, envoie un message d'alerte vers les propriétaires des lots concernés afin qu'ils génèrent à leur tour une variante induite par la variante en cours. Pour ce faire, nous avons utilisé les règles ECA qui permettent d'exprimer que la création d’une variante (Evénement) entraîne l’envoi de messages aux lots concernés par ce changement, en indiquant les ajustements à réaliser (Action).

Type de règle : Propagation

Evénement : Utilisateur Créer_variante_après Source :ouvrage : Ouvrage

Condition : (= (Project ouvrage “désignation”) “Ventilation Mécanique Controlée”) Action : Alerter_lot ("menuiserie_exterieure" "incorporation de grille")

Alerter_lot ("couverture" " chapeaux sortie en toiture")

Figure 9-8 : Exemple d’alarme

Lors du passage d'un chauffage à eau chaude à un chauffage électrique (création d'une variante), il faut installer une ventilation mécanique contrôlée (Condition). Ceci entraîne l'alerte des lots menuiserie_extérieure et couverture pour incorporer respectivement des grilles et des chapeaux de sortie en toiture (Action).

Ecran 9-3 : Validation d’une variante

Lorsqu’un ensemble de variantes lots est choisie pour être validé (Ecran 9-3), nous construisons une variante de l’opération en créant une instance de la classe

des différentes variantes de l’opération sont sauvegardées dans une instance de la classe

Operation. Ceci permettra de connaître l’historique des différentes variantes générées pour

une opération donnée.

Opération_variantes Lots_variantes Fiches_variantes attributs = lots : Lots_variantes atributs = fiche : Fiches_variantes instigateur statut

lots_concernés attributs = commentaires supprimé : Bool

c1.1 fiche = f1 statut = "en étude" - - - - Opération_variante1 -lots = (p1.1 p1.2 c1.1 ...) p1.1 fiche = f2 statut = "validée" - - - f1 commentaires "..." supprimé = nil Composition instance_de p1.2 fiche = f3 statut = "validée" - - - f2 Variantes attributs = numéro date_création commentaires désignation Spécialisation

Figure 9-9 : Description des variantes

Les variantes ne sont pas les seuls cas d’utilisations des règles actives : des alarmes doivent être définies pour la recherche des "doublons". En effet certaines prestations peuvent apparaître dans deux lots distincts. Par exemple, le produit "vitres" peut apparaître à la fois dans le lot menuiserie (pour une porte vitrée, par exemple) et dans le lot vitrerie. Pour cela, lors de la description d'un ouvrage dans un lot donné (Evénement), on vérifie que celui-ci n'est pas présent dans un autre lot (Condition) ; dans le cas d'un doublon on alerte l’entreprise générale (Action).

Oid : Fiche

Type de règle : Propagation Evénement : Appel Creer_instance

Source : oid : Ouvrage

Variables : selection

Condition : (setq selection (selectionner_fiche (Project oid "designation")) Action : (alerter_lot "Entreprise_generale"

"doublons"

(Project oid "designation") (Project selection "designation"))