Réserver une Démo
Pré. Proc.

Compositeur de Schéma Scriptant

Bien que le Compositeur de Schéma fournisse une composition de schéma prête à l'emploi basée sur une variété de technologies populaires, son intégration de scripts vous offre une certaine flexibilité dans la façon dont vous pouvez mettre en œuvre vos propres exigences. Il existe trois façons d'exploiter les scripts dans le Compositeur de Schéma :

  • Fournir une génération de schéma personnalisée à l'aide d'un langage de script
  • Fournir une transformation de modèle personnalisée à l'aide d'un langage de script
  • Fournir un mappage de stéréotype personnalisé à n'importe quelle transformation de modèle standard (telle que UPCC)

Transformation du Modèle par script

Bien que le Compositeur de Schéma fournisse des transformations intégrées pour divers frameworks, vous pouvez toujours écrire les vôtres, en utilisant les outils de composition du Compositeur pour concevoir le schéma, puis en effectuant une transformation personnalisée avec un script artisanal.

Génération de schéma par script

Lorsque vous sélectionnez un message dans le Compositeur de Schéma et que vous cliquez sur générer, plusieurs formats d'exportation vous sont présentés. L'un de ces choix est "Exécuter un script personnalisé"

Exemple de Scriptant itération de schéma

Cet exemple montre comment accéder au Compositeur de Schéma dans un script Enterprise Architect écrit en JavaScript . Le script obtient d'abord une interface avec le Compositeur de Schéma puis parcourt le schéma en imprimant les types et chacune de ses propriétés.

/*

* Nom du script : Exemple Compositeur de Schéma Script

* Auteur : Sparx Systems

* Objectif : Démontrer l'accès à Compositeur de Schéma en utilisant l'automatisation et JavaScript

* Langage : JavaScript

* Date : 2020

*/

fonction printType ( xmlType , xmlns , uri )

{

var xmlProp comme EA . SchemaProperty ;

var xmlPropEnum comme EA . SchemaPropEnum ;

var xmlChoiceEnum1 comme EA . SchemaTypeEnum ;

var xmlChoiceEnum2 comme EA . SchemaTypeEnum ;

Séance . Sortie ( " Type : " + xmlType . TypeName + " dans l'espace de noms : "    + xmlns + " : " + uri );

xmlPropEnum = xmlType . Propriétés ;

si ( xmlPropEnum )

{

xmlProp = xmlPropEnum . GetFirst ();

tandis que ( xmlProp )

{

si ( xmlType . IsEnumeration ())

{

Séance . Sortie ( " " + xmlProp . Nom );

}

autre

{

var sPropDesc = xmlProp . Nom ;

sPropDesc += " :: "

if ( xmlProp . IsPrimitive ())

sPropDesc += xmlProp . TypePrimitive ;

autre

sPropDesc += xmlProp . NomType ;

if ( xmlProp . IsByReference ())

{

sPropDesc += " (par référence) " ;

}

if ( xmlProp . IsInline ())

{

sPropDesc += " (en ligne) " ;

}

Séance . Sortie ( " " + sPropDesc + " , cardinalité : " + xmlProp . Cardinalité );

xmlChoiceEnum1 = xmlProp . Choix ;

xmlChoiceEnum2 = xmlProp . SchemaChoices ;

var compter = xmlChoiceEnum1 . GetCount () + xmlChoiceEnum2 . GetCount ();

si ( compte > 1 )

{

Séance . Sortie ( " choix de : " );

xmlChoix = xmlChoiceEnum1 . GetFirst ();

tandis que ( xmlChoice )

{

Séance . Sortie ( " " + xmlChoix . NomType );

xmlChoix = xmlChoiceEnum1 . ObtenirSuivant ();

}

xmlChoix = xmlChoiceEnum2 . GetFirst ();

tandis que ( xmlChoice )

{

Séance . Sortie ( " " + xmlChoix . NomType );

xmlChoix = xmlChoiceEnum2 . ObtenirSuivant ();

}

}

}

xmlProp = xmlPropEnum . ObtenirSuivant ();

}

}

}

fonction principal ()

{

var schéma comme EA . SchemaComposer ;

var xmlType comme EA . TypeSchéma ;

var xmlTypeEnum comme EA . SchemaTypeEnum ;

var xmlNamespaceEnum comme EA . SchemaNamespaceEnum ;

var xmlNS comme EA . SchemaNamespace ;

// Récupère SchemaComposer

schéma = Référentiel . SchemaComposer ;

// affiche les références de l'espace de noms

xmlNamespaceEnum = schéma . Namespaces ;

si ( xmlNamespaceEnum )

{

xmlNS = xmlNamespaceEnum . GetFirst ();

tandis que ( xmlNS )

{

Séance . Sortie ( "xmln : " + xmlNS . Nom + " URI=" + xmlNS . URI );

xmlNS = xmlNamespaceEnum . ObtenirSuivant ();

}

}

// Récupère l'énumérateur des types de schéma

xmlTypeEnum = schéma . SchemaTypes ;

xmlType = xmlTypeEnum . GetFirst ();

tandis que ( xmlType )

{

var xmlns = schéma . GetNamespacePrefixForType ( xmlType . TypeID );

uri = schéma . GetNamespaceForPrefix ( xmlns );

printType ( xmlType , xmlns , uri );

xmlType = xmlTypeEnum . ObtenirSuivant ();

}

}

principal ();

Aide Intelli-sense pour la création de scripts

L'éditeur de Scriptant dans Enterprise Architect vous aidera à écrire un script qui interagit avec le Compositeur de Schéma , en fournissant Intelli-sense sur les propriétés et les méthodes de son Interface d'Automatisation.

Intellisense is presented when using Schema Composer automation interfaces in scripts

Cartographie des stéréotypes dans Transformation du Modèle

Les stéréotypes font partie intégrante de l'approche de MDG Technologie . Les profils UML individuels pour une MDG Technologie définissent des stéréotypes pour offrir des classifications utiles pour ses éléments. C'est une exigence courante lorsque l'on passe d'un cadre de base à un modèle commercial ou à un sous-domaine pour réaffecter le stéréotype. Lorsque vous travaillez avec un framework CCTS, les composants métier que vous générez ont leur stéréotype généré automatiquement par Enterprise Architect selon un mappage défini par la spécification CCTS (ACC à ABIE, par exemple).

Lorsque vous ouvrez ou créez un profil de transformation de modèle dans le Compositeur de Schéma , vous pouvez spécifier un script pour effectuer ce mappage pour vous. Le script peut être sélectionné dans la fenêtre Propriétés .

Why not write a script to customized tjhose elements produced during the transform operation

Le script peut être écrit en JavaScript , JScript ou VBScript, et n'a qu'à implémenter cette fonction (décrite ici en notation JavaScript ) :

fonction TranslateStereotype(srcStereo)

{

var destStereo = srcStereo

si (srcStereo == "BDT")

{

destStereo = "Mon_BDT"

}

retour destStereo ;

}

Apprenez Plus