PLM.xsd
,
PLM_source.xml
,
PLM_source_2_PLM_target.xsl
,
PLM_target.xml
L’objet de l'étude de cas est de construire un système d’information et sa gestion des articles, nomenclature de fabrication, postes de charge, gammes de fabrication, mouvements de stock et inventaires d’une entreprise manufacturière.
L'application de type Create – Read - Update - Delete -CRUD- doit permettre de créer, lire, modifier et supprimer toutes les données du système d’information.
Enterprise Architect
Enterprise Architect
Enterprise Architect
Les articles de type « Pièce » et « Matière Première (« -MP- ») n'ont pas de gamme de fabrication.
context Article inv: self.oclIsTypeOf(Piece) implies self.gamme de fabrication->isEmpty() and self.oclIsTypeOf(MP) implies self.gamme de fabrication->isEmpty()
Design
⇝Manage -Package-
⇝Validate -Tools-
⇝Configure Validation Rules
⤳Element: (OCL) Conformance
Design
⇝Manage -Package-
⇝Validate -Tools-
⇝Validate Current Package
create table Article( reference varchar(30), designation varchar(30) not null, -- autres propriétés ici... constraint Article_pk primary key(reference), constraint Article_unique unique(designation), constraint Article_check check(PF_ou_MP_ou_Piece_ou_SE = 'PF' or PF_ou_MP_ou_Piece_ou_SE = 'MP' or PF_ou_MP_ou_Piece_ou_SE = 'Pi' or PF_ou_MP_ou_Piece_ou_SE = 'SE')); create table Lien_de_nomenclature( compose varchar(30), composant varchar(30), quantite_de_composition float not null, constraint Lien_de_nomenclature_pk primary key(compose,composant), constraint Lien_de_nomenclature_fk_1 foreign key(compose) references Article(reference) on delete cascade, constraint Lien_de_nomenclature_fk_2 foreign key(composant) references Article(reference) on delete cascade, constraint Lien_de_nomenclature_check check(compose <> composant));
Exercise
- Display OCL constraints within compartments of constrained classes in diagrams
- OCL: si le lien
machine
d'une opération vers son poste de charge est non vide (cardinalité haute à 1) alors le lienmain d'oeuvre
est vide (cardinalité basse à 0)- OCL: si le lien
machine
d'une opération vers son poste de charge est non vide (cardinalité haute à 1) alors la valeur de l'attributest machine
du poste de charge esttrue
- SQL, question 2. avec
CHECK
- SQL, question 3. avec
CHECK
-- Q4 -- Plus simple : un seul attribut ('machine' et 'main_d_oeuvre' fusionnent) clef étrangère vers la table 'Poste_de_charge' ? CONSTRAINT CHECK(machine IS NULL OR main_d_oeuvre IS NULL) -- Peu de RDBMS supportent…
-- Q5 -- Procédure stockée ?
Model-Driven Architecture -MDA-
- Computational-Independent Model -CIM-
- Platform-Independent Model -PIM-
- Platform-Specific Model -PSM-
Data Definition Language -DDL- built-in transformation here…
Notation for Data engineering here…
Start
⇝Preferences -Appearance-
⇝Preferences…
⇝Code Editors -Source Code Engineering-
⤳Default Database: Oracle
⤳ set platformDesign
⇝Transform -Package-
⇝Apply transformation… -Transform-
⤳ run transformation- Check
Generate Code on result
andWrite Always
to get SQL generated source codeUML Class Diagram ⤳ Platform-Specific Model -PSM-
SQL code generation (Oracle) from Platform-Specific Model -PSM- (Oracle SQL script )
Develop
⇝Generate -Data Modeling-
⤳ SQL code generationCREATE TABLE "Article"( "ArticleID" NUMBER(8,2) NOT NULL, "Reference" VARCHAR2(50) NULL, "Designation" VARCHAR2(50) NULL, -- autres propriétés ici... ); CREATE TABLE "LienDeNomenclature"( "LienDeNomenclatureID" NUMBER(8,2) NOT NULL, "ArticleID" NUMBER(8,2) NULL -- QUELLE GROSSE ERREUR ! "QuantiteDeComposition" FLOAT(126) NULL ); ALTER TABLE "Article" ADD CONSTRAINT "PK_Article" PRIMARY KEY ("ArticleID") USING INDEX; ALTER TABLE "LienDeNomenclature" ADD CONSTRAINT "PK_LienDeNomenclature" PRIMARY KEY ("LienDeNomenclatureID") USING INDEX; ALTER TABLE "LienDeNomenclature" ADD CONSTRAINT "FK_Lien de nomenclature_Article" FOREIGN KEY ("ArticleID") REFERENCES "Article" ("ArticleID");
Develop
⇝Database Builder -Data Modeling-
UML Class Diagram ⤳ Platform-Specific Model -PSM-*
CREATE TABLE "Article_DB"( "REFERENCE" VARCHAR(30) NOT NULL, "DESIGNATION" VARCHAR(30) NOT NULL, -- autres propriétés ici...); CREATE TABLE "Lien_de_nomenclature_DB"( "COMPOSE" VARCHAR(30) NOT NULL, "COMPOSANT" VARCHAR(30) NOT NULL, "QUANTITE_DE_COMPOSITION" FLOAT(10) NOT NULL); ALTER TABLE "Article_DB" ADD CONSTRAINT "ARTICLE_PK" PRIMARY KEY ("REFERENCE") USING INDEX; ALTER TABLE "Article_DB" ADD CONSTRAINT "ARTICLE_UNIQUE" UNIQUE ("DESIGNATION") USING INDEX; ALTER TABLE "Article_DB" ADD CONSTRAINT "ARTICLE_CHECK" CHECK (PF_ou_MP_ou_Piece_ou_SE = 'PF' or PF_ou_MP_ou_Piece_ou_SE = 'MP' or PF_ou_MP_ou_Piece_ou_SE = 'Pi' or PF_ou_MP_ou_Piece_ou_SE = 'SE'); ALTER TABLE "Lien_de_nomenclature_DB" ADD CONSTRAINT "LIEN_DE_NOMENCLATURE_PK" PRIMARY KEY ("COMPOSE","COMPOSANT") USING INDEX; ALTER TABLE "Lien_de_nomenclature_DB" ADD CONSTRAINT "LIEN_DE_NOMENCLATURE_CHECK" CHECK (COMPOSE <> COMPOSANT); ALTER TABLE "Lien_de_nomenclature_DB" ADD CONSTRAINT "LIEN_DE_NOMENCLATURE_FK_1" FOREIGN KEY ("COMPOSE") REFERENCES "Article_DB" ("REFERENCE"); ALTER TABLE "Lien_de_nomenclature_DB" ADD CONSTRAINT "LIEN_DE_NOMENCLATURE_FK_2" FOREIGN KEY ("COMPOSANT") REFERENCES "Article_DB" ("REFERENCE");
Exercise
- Provide SQL scheme for Barbados Crisis Management System -BCMS- case study (Data UML Class Diagram) by means of Data Definition Language -DDL- built-in transformation (MariaDB)
Develop
⇝Import XSD -Schema Modeling-
Exercise
- Add
Type_poste_de_charge
andType_operation
within XML Schema Definition -XSD- (XML Schema
perspective)
Add Diagram…
(package within browser) ⇝Extended
⇝XML Transform
Model creation ⤳
-drag & drop-
files and next link to«xmlTransform»
Code
Execution