• Aucun résultat trouvé

4.3 Description architecturale

4.3.3 Sch´ ema XML pour la description architecturale

Par rapport `a la vue r´ealisation annonc´ee dans l’introduction de ce chapitre, nous d´efinissons des sch´emas XML afin de traduire les architectures issues du m´etamod`ele, sur un langage permettant la manipulation de leurs ´el´ements. Par la suite nous allons d´ecrire les principales structures du sch´ema XML li´ees `a la sp´ecifications des architectures des applications `a base de services Web.

Une architecture sp´ecifiant une application `a base de services Web est d´efinie par un type complexe ArchType. Ce type est compos´e par un ´el´ement CoopRole repr´esentant les Rˆoles coop´eratifs. Un autre ´el´ement InterRoleLink d´efinit les relations entre services d´eploy´es sur les diff´erents Rˆoles coop´eratifs. De mˆeme, un attribut archDescription permet d’associer un nom ou description aux architectures. Le code XML consacr´e `a cette partie est montr´e dans la figure 4.5. Le code complet du sch´ema XML pour la sp´ecification des architectures est list´e dans l’annexeA.

Les Rˆoles coop´eratifs sont caract´eris´es par un type complexe RoleType. Ce type est compos´e par un ´el´ement ServiceCategory qui d´efinit les Cat´egories de service. Un autre ´el´ement IntraRoleLink permet d’´etablir les relations entre les services d´eploy´es sur les nœuds associ´es au mˆeme Rˆole coop´eratif. De mˆeme, un attribut roleName vise `a associer un nom aux Rˆoles coop´eratifs. La figure4.6illustre le code XML correspondant `

a cette partie.

Les Cat´egories de service sont caract´eris´ees par un type complexe CategoryType. Ce type est d´efinit par un ´el´ement serviceClass repr´esentant les Classes de service associ´ees `a la Cat´egorie de service. Un attribut catName est aussi ´etabli pour nommer les Cat´egories de service. Le code utilis´e pour cette partie est montr´e dans la figure 4.7.

bServ aServ qServ « Service » « Service » « Service » Cr=A Sct=X Scl=a Cr=B Sct=X Scl=c Cr=B Sct=Z Scl=q

<xs:complexType name="ArchType">

<xs:sequence>

<xs:element name="CoopRole"type="RoleType"maxOccurs="unbounded"/>

<xs:element name="InterRoleLink"type="InterRoleLinkType"maxOccurs="unbounded"/>

</xs:sequence>

<xs:attribute name="archDescription"type="xs:string"use="required"/>

</xs:complexType>

Fig. 4.5 – Description architecturale

Les Classes de service sont caract´eris´ees par le type complexe ClassType. Ce type est constitu´e d’un ´el´ement Service repr´esentant les instances de services d´eriv´es des Classes de service. Un attribut className permet de nommer les Classes de service. Ceci est montr´e dans le code de la figure 4.8.

<xs:complexType name="RoleType">

<xs:sequence>

<xs:element name="ServiceCategory"type="CategoryType"maxOccurs="unbounded"/>

<xs:element name="IntraRoleLink"type="IntraRoleLinkType"maxOccurs="unbounded"/>

</xs:sequence>

<xs:attribute name="roleName"type="xs:string"use="required"/>

</xs:complexType>

Fig. 4.6 – Description des Rˆoles coop´eratifs

<xs:complexType name="CategoryType">

<xs:sequence>

<xs:element name="serviceClass"type="ClassType"maxOccurs="unbounded"/>

</xs:sequence>

<xs:attribute name="catName"type="xs:string"use="required"/>

</xs:complexType>

Fig. 4.7 – Description des Cat´egories de service

<xs:complexType name="ClassType">

<xs:sequence>

<xs:element name="Service"type="ServiceType"/>

</xs:sequence>

<xs:attribute name="className"/>

</xs:complexType>

Un service est repr´esent´e par une s´equence d’´el´ements repr´esentant chacun des types architecturaux associ´es au service. Ceci est illustr´e par la figure 4.9.

Les connections entre services d´eploy´es `a l’int´erieur des nœuds associ´es au mˆeme Rˆole coop´eratif sont caract´eris´ees par un type complexe IntraRoleLinkType. Ce type permet de d´efinir la mise en relation des deux ´el´ements service1 et service2 d´efinis chacun par le type complexe service (figure4.10). De mani`ere similaire les connections entre services d´eploy´es dans deux types Rˆoles coop´eratifs diff´erents sont caract´eris´ees par le type complexe InterRoleLinkType (figure 4.11).

<xs:complexType name="ServiceType"> <xs:sequence>

<xs:element name="role"> <xs:complexType>

<xs:attribute name="roleName"type="xs:string"use="required"/> </xs:complexType>

</xs:element>

<xs:element name="category"> <xs:complexType>

<xs:attribute name="catName"type="xs:string"use="required"/> </xs:complexType>

</xs:element>

<xs:element name="class"> <xs:complexType>

<xs:attribute name="className"/> </xs:complexType>

</xs:element> </xs:sequence>

<xs:attribute name="serviceName"use="required"/> </xs:complexType>

Fig. 4.9 – Description des services

<xs:complexType name="IntraRoleLinkType">

<xs:sequence>

<xs:element name="service1"type="ServiceType"/>

<xs:element name="service2"type="ServiceType"/>

</xs:sequence>

</xs:complexType>