前页 后页

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;

}

学到更多