前页 后页

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交互的脚本。

Intellisense is presented when using Schema Composer automation interfaces in scripts

模型转换中的定型映射

刻板印象构成了MDG技术方法的很大一部分。 MDG技术的各个UML配置文件定义了构造型,以为其元素提供有用的分类。从核心框架转到业务模型或子域以重新分配构造型时,这是常见的要求。使用CCTS框架时,所生成的业务组件将根据CCTS规范定义的映射(例如,从ACC到ABIE)由Enterprise Architect自动生成其Enterprise Architect 。

在Schema Composer中打开或创建模型转换概要文件时,可以指定脚本来为您执行此映射。可以从“属性”窗口中选择脚本。

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

该脚本可以用JavaScript,JScript或VBScript编写,并且仅需实现此功能(此处以JavaScript表示法描述):

函数TranslateStereotype(srcStereo)

{

var destStereo = srcStereo

如果(srcStereo ==“ BDT”)

{

destStereo =“ My_BDT”

}

返回destStereo;

}

学到更多