Le service des achats de la QUALIF, petite PME, souhaite étudier les informations relatives à la qualification des fournisseurs. Pour ce faire, cette entreprise établit une liste d’informations pertinentes : l’adresse postale d’un fournisseur, la capacité de production d’un produit fabriqué et vendu par un fournisseur, le code d’un produit fabriqué et vendu par un fournisseur (identifiant d’un produit fabriqué et vendu par un fournisseur), la date de qualification d’un fournisseur par un service d’étude, le domaine d’activité d’un service d’étude, le nom commercial d’un produit fabriqué et vendu par un fournisseur, le nom du responsable d’un service d’étude, le nombre de salariés d’un fournisseur, le numéro de qualification d’un fournisseur par un service d’étude, le numéro de SIRET d’un fournisseur (identifiant d’un fournisseur), l'e-mail de contact d’un fournisseur, le numéro d’un service d’étude (identifiant d’un service d’étude), le pourcentage de participation d’un fournisseur chez un autre fournisseur, le prix d’achat HT d’un produit acheté, déterminé par un service d’étude, le prix de vente HT d’un produit fixé par un fournisseur, la quantité prévisionnelle d’achat d’un produit acheté, déterminée par un service d’étude, le code d’un produit acheté, déterminé par un service d’étude (identifiant d’un produit acheté par un service d’étude), le résultat avant impôt d’un fournisseur sur les trois dernières années, le résultat après impôt d’un fournisseur sur les trois dernières années et l’unité de mesure d’un produit acheté, déterminée par un service d’étude.
Règles de gestion décrivant la technique de qualification
- Un service d’étude peut qualifier autant de fournisseurs qu’il le souhaite.
- Un fournisseur effectuant une demande de qualification auprès d’un service d’étude se voit qualifier ou non.
- Un même fournisseur peut être qualifié par un service d’étude et ne pas l’être par un autre.
- Un même produit
X
fabriqué et vendu par un fournisseur peut correspondre à plusieurs produits achetés, en fait à autant de produits achetés qu’il y a de services d’étude qui ont qualifié ce fournisseur en vue de lui acheter en particulier ce produitX
.- Après qualification d’un fournisseur, un service d’étude établit la liste des produits achetés auprès de ce fournisseur ainsi que le prix d’achat HT et la quantité prévisionnelle d’achat.
- Un fournisseur peut avoir une prise de participation chez plusieurs autres fournisseurs.
Le processus d'analyse/conception ci-dessous, sujet à des contraintes (pas d'espace dans les noms, pas de possibilité d'utiliser les classes association…), permet de générer un schéma de type XSD à partir d'un diagramme de classes UML.
Diagramme de classes UML
Schema Composer (Enterprise Architect) ☛
Develop
⇝Schema Composer -Schema Modeling-
⇝Open Schema Composer -Schema-
<?xml version='1.0' encoding='windows-1252' ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="Qualif" targetNamespace="Qualif" elementFormDefault="unqualified" attributeFormDefault="unqualified"> <xs:complexType name="Fournisseur"> <xs:sequence> <xs:element name="adresse_postale" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="e-mail_de_contact" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="nombre_de_salariés" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="numéro_de_SIRET" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="résultat_après_impôt_N" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="résultat_après_impôt_N-1" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="résultat_après_impôt_N-2" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="résultat_avant_impôt_N" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="résultat_avant_impôt_N-1" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="résultat_avant_impôt_N-2" minOccurs="1" maxOccurs="1" type="xs:integer"/> </xs:sequence> </xs:complexType> <xs:complexType name="Participation"> <xs:sequence> <xs:element name="pourcentage" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="filiale" minOccurs="1" maxOccurs="1" type="Fournisseur"/> <xs:element name="maison_mère" minOccurs="1" maxOccurs="1" type="Fournisseur"/> </xs:sequence> </xs:complexType> <xs:complexType name="Produit_acheté"> <xs:sequence> <xs:element name="code" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="prix_d_achat_HT" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="quantité_prévisionnelle_d_achat" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="unité_de_mesure" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="Produit_fabriqué" minOccurs="1" maxOccurs="1" type="Produit_fabriqué"/> <xs:element name="Qualification" minOccurs="1" maxOccurs="1" type="Qualification"/> </xs:sequence> </xs:complexType> <xs:complexType name="Produit_fabriqué"> <xs:sequence> <xs:element name="capacité_de_production" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="code" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="nom_commercial" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="prix_de_vente_HT" minOccurs="1" maxOccurs="1" type="xs:integer"/> <xs:element name="Fournisseur" minOccurs="1" maxOccurs="1" type="Fournisseur"/> </xs:sequence> </xs:complexType> <xs:complexType name="Qualification"> <xs:sequence> <xs:element name="date" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="numéro" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="Fournisseur" minOccurs="1" maxOccurs="1" type="Fournisseur"/> <xs:element name="Service_étude" minOccurs="1" maxOccurs="1" type="Service_étude"/> </xs:sequence> </xs:complexType> <xs:complexType name="Service_étude"> <xs:sequence> <xs:element name="domaine_d_activité" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="nom_du_responsable" minOccurs="1" maxOccurs="1" type="xs:string"/> <xs:element name="numéro" minOccurs="1" maxOccurs="1" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema>
Develop
⇝Import XSD -Schema Modeling-
Extension XSD à partir des types générés