Pré. | Proc. |
Compositeur de Schéma Scriptant Integration
Bien que le Compositeur de Schéma propose une composition de schéma prête à l'emploi basée sur diverses technologies populaires, son intégration de scripts vous offre une certaine flexibilité dans la manière 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é à 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éotypes personnalisé à n'importe quelle transformation de modèle standard (comme UPCC)
Transformation du Modèle par script
Bien que le Compositeur de Schéma fournisse des transformations intégrées pour différents 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 conçu à la main.
Génération de schéma par script
Lorsque vous sélectionnez un message dans le Compositeur de Schéma et cliquez sur Générer, plusieurs formats d'exportation vous sont proposés. L'un de ces choix est « Exécuter un script personnalisé »
Schema Iteration Scripting Example
This example demonstrates accessing the Schema Composer in an Enterprise Architect script written in JavaScript. The script first obtains an interface to the Schema Composer and then traverses the schema, printing out the types and each of its properties.
/*
* Script Name: Example Schema Composer Script
* Author: Sparx Systems
* Purpose: Demonstrate access to Schema Composer using automation and JavaScript
* Language: JavaScript
* Date: 2020
*/
function printType( xmlType, xmlns, uri)
{
var xmlProp as EA.SchemaProperty;
var xmlPropEnum as EA.SchemaPropEnum;
var xmlChoiceEnum1 as EA.SchemaTypeEnum;
var xmlChoiceEnum2 as EA.SchemaTypeEnum;
Session.Output("Type: " + xmlType.TypeName + " in namespace: " + xmlns + ":" + uri);
xmlPropEnum = xmlType.Properties;
if(xmlPropEnum)
{
xmlProp = xmlPropEnum.GetFirst();
while(xmlProp)
{
if(xmlType.IsEnumeration())
{
Session.Output(" " + xmlProp.Name);
}
else
{
var sPropDesc = xmlProp.Name;
sPropDesc += "::"
if(xmlProp.IsPrimitive())
sPropDesc += xmlProp.PrimitiveType;
else
sPropDesc += xmlProp.TypeName;
if(xmlProp.IsByReference())
{
sPropDesc += "(by reference)";
}
if(xmlProp.IsInline())
{
sPropDesc += "(inline)";
}
Session.Output(" " + sPropDesc + ", cardinality: " + xmlProp.Cardinality);
xmlChoiceEnum1 = xmlProp.Choices;
xmlChoiceEnum2 = xmlProp.SchemaChoices;
var count = xmlChoiceEnum1.GetCount() + xmlChoiceEnum2.GetCount();
if(count>1)
{
Session.Output(" choice of: ");
xmlChoice = xmlChoiceEnum1.GetFirst();
while(xmlChoice)
{
Session.Output(" " + xmlChoice.TypeName);
xmlChoice = xmlChoiceEnum1.GetNext();
}
xmlChoice = xmlChoiceEnum2.GetFirst();
while(xmlChoice)
{
Session.Output(" " + xmlChoice.TypeName);
xmlChoice = xmlChoiceEnum2.GetNext();
}
}
}
xmlProp = xmlPropEnum.GetNext();
}
}
}
function main()
{
var schema as EA.SchemaComposer;
var xmlType as EA.SchemaType;
var xmlTypeEnum as EA.SchemaTypeEnum;
var xmlNamespaceEnum as EA.SchemaNamespaceEnum;
var xmlNS as EA.SchemaNamespace;
// Get SchemaComposer
schema = Repository.SchemaComposer;
// print the namespace references
xmlNamespaceEnum = schema.Namespaces;
if(xmlNamespaceEnum)
{
xmlNS = xmlNamespaceEnum.GetFirst();
while(xmlNS)
{
Session.Output( "xmlns:" + xmlNS.Name + " URI=" + xmlNS.URI);
xmlNS = xmlNamespaceEnum.GetNext();
}
}
// Get Schema Types Enumerator
xmlTypeEnum = schema.SchemaTypes;
xmlType = xmlTypeEnum.GetFirst();
while(xmlType)
{
var xmlns = schema.GetNamespacePrefixForType( xmlType.TypeID );
uri = schema.GetNamespaceForPrefix(xmlns);
printType(xmlType, xmlns, uri);
xmlType = xmlTypeEnum.GetNext();
}
}
main();
Aide Intelli-sense dans la création de scripts
L'éditeur 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.
Stereotype mapping in Model Transformation
Stereotyping forms a large part of the MDG Technology approach. Individual UML profiles for an MDG Technology define stereotypes to offer useful classifications for its elements. It is a common requirement when going from a core framework to a business model or sub-domain to reassign the stereotype. When you work with a CCTS framework the business components you generate have their stereotype automatically generated by Enterprise Architect according to a mapping defined by the CCTS specification (ACC to ABIE, for example).
When you open or create a model transform profile in the Schema Composer you can specify a script to perform this mapping for you. The script can be selected from the Properties window.
The script can be written in either JavaScript, JScript or VBScript, and only has to implement this function (described here in JavaScript notation):
function TranslateStereotype(srcStereo)
{
var destStereo = srcStereo
if (srcStereo == "BDT")
{
destStereo = "My_BDT"
}
return destStereo;
}