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.
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 .
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 ;
}