• Aucun résultat trouvé

Interprétation d’une politique de contrôle d’accès ASTD par des

6.2 La structure et le format de données

6.2.2 Document XML de l’état d’une spécification ASTD

Pendant l’interprétation d’une spécification ASTD, les opérations Execute des processus BPEL correspondant aux différentes structures ASTD, calculent de nou-veaux états. Ces états sont encodés dans des documents XML qui contiennent un type d’élément XML pour chaque structure ASTD. Le programme 6.2 correspond à

1 <a:QChoiceState 2 xmlns:a="http://gril.udes.ca/astd/schema/ASTD"> 3 <a:S> 4 <a:GuardState> 5 <a:S> 6 <a:AutomatonState a:N="q0"> 7 <a:H/> 8 </a:AutomatonState> 9 </a:S> 10 </a:GuardState> 11 </a:S> 12 </a:QChoice>

l’encodage XML d’un état possible de la structure ASTD de la figure 6.8, celui obtenu après l’exécution de l’opération IS avec cette spécification en paramètre.

La définition des éléments XML de l’état d’une spécification ASTD suit une ap-proche similaire à celle des structures ASTD décrite à la section précédente. Le type tUnaryState est le type complexe abstrait de base de tous les états ASTD qui comportent un seul sous-état. Les types concrets tSequenceState, tCallState, tChoiceState, tGuardState, tQChoiceState, tKleeneClosureState et tQSynchronizationState héritent du type abstrait tUnaryState et ajoutent des attributs relatifs aux états de la structure ASTD qu’ils encodent. La figure 6.9 illustre le modèle utilisé pour l’encodage XML des états d’une spécification ASTD. Les états des structures ASTD automate, synchronisation et synchronisation

quanti-fiée sont des cas particuliers. La définition du type complexe qui encode l’état d’une

structure automate permet d’encoder aussi l’historique des états des sous-structures de l’automate. Pour une structure ASTD synchronisation, le type complexe concret tSynchronizationState encode les états et définit les éléments enfants XML LeftStateet RightState qui encodent les états des sous-structures membres de la structure ASTD synchronisation.

Dans le cas de la version quantifiée de la synchronisation, les états sont maintenus par une fonction qui associe à une valeur de la variable de quantification, l’état courant de la sous-structure membre de la quantification synchronisée. Aussi, bien qu’héritant du type tUnaryState, le type complexe tQSynchronizationState est com-plété par l’encodage de cette fonction. La fonction est encodée par un élément XML F et chaque relation valeur/état par un élément XML FV qui possède un attribut V pour la valeur et un élément enfant pour l’état. L’élément F est défini dans le type com-plexe abstrait tQSynchronizationState. Cet héritage permet une optimisation pour l’exécution de l’opération Execute avec une structure ASTD synchronisation

quantifiée. En effet, l’état initial de la sous-structure ASTD d’une synchronisation

quantifiée est calculé une seule fois à l’issue de l’opération IS et cet état initial est conservé dans l’élément S défini par le type complexe tUnaryState dont hérite le type complexe tQSynchronizationState (voir la figure 6.10). La définition des

6.2. La structure et le format de données

seq e S type

atStarted type boolean

eKleeneClosureState type seq e e QSynchronizationState type ct tSequenceState atSide e SequenceState type ct tCallState eCallState type ct tChoiceState atSide e ChoiceState type

atStarted typeboolean

e GuardState type ct tQChoiceState atV e QChoiceState type ct tUnaryState ct tGuardState cttKleeneClosureState ct tQSynchronizationState eHistories ct seq ... e S ct ch... e AutomatonState type seq ct tAutomatonState e LeftState e RightState e SynchronizationState type seq ct tSynchronizationState e EmptyState Légende e element ct complexType seq sequence ch choice gr group type type at attribute

Figure 6.9 – Schéma XSD des états d’une structure ASTD

états comporte aussi l’élément spécial EmptyState qui symbolise l’échec du calcul d’un nouvel état.

seq eS type seq e eQSynchronizationState type ct seq e seq e grgState ch... atV ct tState gr ct tUnaryState ct tQSynchronizationState eF at ct eFV Légende e element ct complexType seq sequence ch choice gr group type type at attribute

Figure 6.10 – Éléments XML de l’état d’une synchronisation quantifiée

6.2.3 Environnement

Les structures quantifiées choix et synchronisation introduisent des variables dans les spécifications. Ces variables permettent l’exécution de la spécification pour des valeurs qui ne sont pas figées à l’avance lors de l’écriture de la spécification. Pendant l’exécution d’une spécification formelle, un environnement qui contient les valeurs des variables est utilisé et permet de définir le contexte dans lequel les événements sont acceptés. Les variables peuvent aussi être introduites dans l’environnement à la suite de l’utilisation d’une structure ASTD appel. Dans le filtre qui interprète la spécification, l’environnement est un élément XML qui liste les variables dans l’environnement ainsi que les valeurs de chacune de celles-ci. Le programme 6.3 montre un environnement avec trois variables (user, role et clId) qui peuvent être, par exemple, les variables de trois structures ASTD quantifiées imbriquées l’une dans l’autre. Les valeurs Bob, clerk et 3 sont affectées respectivement à ces variables dans l’environnement considéré.

6.2. La structure et le format de données

1 <t:Environment

2 xmlns:t="http://gril.udes.ca/astd/schema/Types" 3 xmlns:a="http://gril.udes.ca/astd/schema/ASTD"> 4 <a:PV a:X="user" a:V="Bob"/>

5 <a:PV a:X="role" a:V="clerk"/> 6 <a:PV a:X="clId" a:V="3"/> 7 </t:Environment>

Programme 6.3 – Un environnement XML avec trois variables

Au cours de l’interprétation d’une spécification ASTD, l’environnement ne peut être modifié que par la sémantique opérationnelle des structures ASTD appel, choix

quantifié et synchronisation quantifiée. Pour une structure ASTD appel, les valeurs

spécifiées pour les variables de la structure appelée sont placées dans l’environnement avant l’exécution d’une action. De même, pour les structures ASTD qui possèdent une variable (structures choix quantifié et synchronisation quantifiée), une valeur doit être affectée à cette variable dans l’environnement pour pouvoir exécuter une action. La mise à jour de l’environnement lors de l’exécution des opérations Execute et IsFinal de ces trois types de structure ASTD se fait par l’utilisation d’une trans-formation XSLT, puisque le langage BPEL ne permet pas de façon native d’ajouter un nouvel élément XML à un autre élément XML et d’en faire son élément enfant.

Dans le cas des structures ASTD ayant une variable quantifiée (choix quantifié et synchronisation quantifiée), le résultat de la mise à jour de l’environnement est un nouvel environnement comportant la nouvelle variable (si elle n’existait pas déjà dans l’environnement) avec une valeur vide. Le programme 6.4 correspond à la mise à jour de l’environnement du programme 6.3 pour une structure ASTD choix

quan-tifié ou synchronisation quanquan-tifiée dont la variable de quantification est chId. La

1 <t:Environment

2 xmlns:t="http://gril.udes.ca/astd/schema/Types" 3 xmlns:a="http://gril.udes.ca/astd/schema/ASTD"> 4 <a:PV a:X="user" a:V="Bob"/>

5 <a:PV a:X="role" a:V="clerk"/> 6 <a:PV a:X="clId" a:V="3"/> 7 <a:PV a:X="chId" a:V=""/> 8 </t:Environment>

1 <t:EnvironmentXslInput

2 xmlns:t="http://gril.udes.ca/astd/schema/Types" 3 xmlns:a="http://gril.udes.ca/astd/schema/ASTD"> 4 <t:Environment>

5 <a:PV a:X="user" a:V="Bob"/> 6 <a:PV a:X="role" a:V="clerk"/> 7 <a:PV a:X="clId" a:V="3"/> 8 </t:Environment>

9 <t:NewEnvironment>

10 <a:PV a:X="clId" a:V="$user"/> 11 <a:PV a:X="chId" a:V="101"/> 12 </t:NewEnvironment>

13 </t:EnvironmentXslInput>

Programme 6.5 – Document XML pour la mise à jour d’un environnement

nouvelle variable insérée dans le programme 6.4 se trouve à la ligne 7. La mise à jour de l’environnement se fait avec la méthode BPEL doXslTransform qui prend en paramètres la feuille de transformation XSLT GetNewEnvironmentForX.xsl, l’environnement à mettre à jour et le nom de la nouvelle variable à ajouter à l’envi-ronnement.

Pour les opérations Execute et IsFinal du processus BPEL Call (celui qui implémente la sémantique opérationnelle de la structure ASTD appel), il peut y avoir plus d’une variable à insérer. La méthode décrite dans le paragraphe précédent n’est pas adéquate même si elle est utilisée de façon répétitive pour chaque variable à ra-jouter dans l’environnement. Dans ce cas, une feuille de style XSLT particulière est utilisée. Celle-ci prend en paramètre un document XML contenant l’environnement à mettre à jour ainsi que les nouvelles paires variables/valeurs à ajouter à l’environne-ment. Le programme 6.5 correspond à un exemple de document passé en paramètre à la feuille de style GetNewEnvironment.xsl par la méthode doXslTransform. Le nouvel environnement retourné par la fonction doXslTransform est explicité au programme 6.6.