前页 | 后页 |
Schema Composer脚本集成
尽管Schema Composer提供了基于多种流行技术的即用型架构组合,但其脚本集成为您提供了一些实现您自己需求的灵活性。您可以通过三种方式在Schema Composer中利用脚本:
- 使用脚本语言提供自定义架构生成
- 使用脚本语言提供自定义模型转换
- 提供自定义构造型映射到任何标准模型转换(例如UPCC)
通过脚本进行模型转换
尽管Schema Composer为各种框架提供了内置的转换,但是您始终可以使用Composer的编写工具来设计模式,然后使用手工脚本执行自定义转换,从而编写自己的转换。
通过脚本生成模式
在Schema Composer中选择一条消息并单击“生成”时,将显示许多导出格式。这些选择之一是“执行自定义脚本”
模式迭代脚本示例
本示例演示了如何使用JavaScript编写的Enterprise Architect脚本访问Schema Composer。该脚本首先获取到Schema Composer的接口,然后遍历该模式,打印出类型及其每个属性。
/ *
*脚本名称:Schema Composer示例脚本
*作者: Sparx Systems
*目的:演示使用自动化和JavaScript对Schema Composer的访问
*语言:JavaScript
*日期:2020
* /
功能 printType ( xmlType , XMLNS, uri )
{
变种 xmlProp 如 EA 。 SchemaProperty ;
变种 xmlPropEnum 如 EA 。 SchemaPropEnum ;
变种 xmlChoiceEnum1 如 EA 。 SchemaTypeEnum ;
变种 xmlChoiceEnum2 如 EA 。 SchemaTypeEnum ;
会议。 输出 ( “类型:” + xmlType 。类型名称 + “在命名空间中:” + xmlns + “:” + uri );
xmlPropEnum = xmlType 。性质;
如果 ( xmlPropEnum )
{
xmlProp = xmlPropEnum 。 GetFirst ();
而 ( xmlProp )
{
如果 (XMLTYPE。IsEnumeration())
{
会议。 输出 ( “” + xmlProp 。名称);
}
其他
{
变种 sPropDesc = xmlProp 。名称;
sPropDesc + = “ ::”
如果 (xmlProp。IsPrimitive())
sPropDesc + = xmlProp 。 PrimitiveType ;
其他
sPropDesc + = xmlProp 。 TypeName ;
如果 (xmlProp。IsByReference())
{
sPropDesc + = “(参考)” ;
}
如果 (xmlProp。IsInline())
{
sPropDesc + = “(内联)” ;
}
会议。 输出 ( “” + sPropDesc + “,基数:” + xmlProp 。基数);
xmlChoiceEnum1 = xmlProp 。选择;
xmlChoiceEnum2 = xmlProp 。 SchemaChoices ;
变种 计数 = xmlChoiceEnum1 。 GetCount () + xmlChoiceEnum2 。 GetCount ();
如果 ( count > 1 )
{
会议。 输出 ( “选择:” );
xmlChoice = xmlChoiceEnum1 。 GetFirst ();
而 ( xmlChoice )
{
会议。 输出 ( “” + xmlChoice 。 TypeName );
xmlChoice = xmlChoiceEnum1 。 GetNext ();
}
xmlChoice = xmlChoiceEnum2 。 GetFirst ();
而 ( xmlChoice )
{
会议。 输出 ( “” + xmlChoice 。 TypeName );
xmlChoice = xmlChoiceEnum2 。 GetNext ();
}
}
}
xmlProp = xmlPropEnum 。 GetNext ();
}
}
}
功能 主要()
{
变种 图式 如 EA 。 SchemaComposer ;
变种 xmlType 如 EA 。 SchemaType ;
变种 xmlTypeEnum 如 EA 。 SchemaTypeEnum ;
变种 xmlNamespaceEnum 如 EA 。 SchemaNamespaceEnum ;
变种 xmlNS 如 EA 。 SchemaNamespace ;
//获取SchemaComposer
图式 = 仓库。 SchemaComposer ;
//打印名称空间引用
xmlNamespaceEnum = 模式。命名空间;
如果 ( xmlNamespaceEnum )
{
xmlNS = xmlNamespaceEnum 。 GetFirst ();
而 ( xmlNS )
{
会议。 输出 ( “ xmlns:” + xmlNS 。名称 + “ URI =” + xmlNS 。 URI );
xmlNS = xmlNamespaceEnum 。 GetNext ();
}
}
//获取架构类型枚举器
xmlTypeEnum = 模式。 SchemaTypes ;
xmlType = xmlTypeEnum 。 GetFirst ();
而 ( xmlType )
{
变种 xmlns = 模式。 GetNamespacePrefixForType ( xmlType 。类型ID );
乌里 = 模式。 GetNamespaceForPrefix ( xmlns );
printType ( xmlType , XMLNS, uri );
xmlType = xmlTypeEnum 。 GetNext ();
}
}
main ();
脚本中的智能感知帮助
Enterprise Architect的脚本编辑器通过在其自动化接口的属性和方法上提供Intelli-sense,将帮助您编写与Schema Composer交互的脚本。
模型转换中的定型映射
刻板印象构成了MDG技术方法的很大一部分。 MDG技术的各个UML配置文件定义了构造型,以为其元素提供有用的分类。从核心框架转到业务模型或子域以重新分配构造型时,这是常见的要求。使用CCTS框架时,所生成的业务组件将根据CCTS规范定义的映射(例如,从ACC到ABIE)由Enterprise Architect自动生成其Enterprise Architect 。
在Schema Composer中打开或创建模型转换概要文件时,可以指定脚本来为您执行此映射。可以从“属性”窗口中选择脚本。
该脚本可以用JavaScript,JScript或VBScript编写,并且仅需实现此功能(此处以JavaScript表示法描述):
函数TranslateStereotype(srcStereo)
{
var destStereo = srcStereo
如果(srcStereo ==“ BDT”)
{
destStereo =“ My_BDT”
}
返回destStereo;
}