预订演示
前页 后页

Schema 编辑器脚本集成

尽管Schema 编辑器提供了基于各种流行技术的开箱即用的模式组合,但它的脚本集成为您提供了一些灵活性,让您可以实现自己的需求。您可以通过三种方式在Schema 编辑器中利用脚本:

  • 使用脚本语言提供自定义模式生成
  • 使用脚本语言提供自定义模型转换
  • 提供自定义原型映射到任何标准模型转换(例如 UPCC)

脚本模型变换

虽然Schema 编辑器为各种框架提供内置转换,但您始终可以编写自己的转换,使用 Composer 的组合工具设计模式,然后使用手工制作的脚本执行自定义转换。

架构脚本生成

当您在Schema 编辑器中选择一条消息并单击生成时,您会看到多种导出格式。这些选择之一是“执行自定义脚本”

架构迭代脚本示例

这个例子演示了在一个用JavaScript编写的Enterprise Architect脚本中访问Schema 编辑器。该脚本首先获取到Schema 编辑器的接口,然后遍历模式,打印出类型及其每个属性。

/*

*示例名称:脚本Schema 编辑器脚本

*作者: Sparx Systems

* 目的:演示使用自动化和JavaScript访问Schema 编辑器

* 语言: JavaScript

* 日期:2020

*/

函数 打印类型( xml 类型 xmlns , 乌里

{

变量 xmlProp 作为 艺电架构属性

变量 xmlPropEnum 作为 艺电 SchemaPropEnum ;

变量 xmlChoiceEnum1 作为 艺电模式类型枚举

变量 xmlChoiceEnum2 作为 艺电模式类型枚举

会话.输出( "类型: " + xml 类型类型名称 + “在命名空间中:”    + xmlns + “:” + uri );

xmlPropEnum = xmlType .属性

如果( xmlPropEnum )

{

xmlProp = xmlPropEnum 获取第一();

( xmlProp )

{

if ( xmlType . IsEnumeration ())

{

会话.输出( " " + xmlProp .名称);

}

else

{

变量 sPropDesc = xmlProp .名称

sPropDesc += “::”

if ( xmlProp . IsPrimitive ())

sPropDesc += xml 属性原始类型

else

sPropDesc += xml 属性类型名称

if ( xmlProp . IsByReference ())

{

sPropDesc += “(通过引用)”

}

if ( xmlProp . IsInline ())

{

sPropDesc += “(内联)”

}

会话.输出( " " + sPropDesc + ",基数:" + xml 属性基数);

xmlChoiceEnum1 = xml 属性选择

xmlChoiceEnum2 = xml 属性模式选择

变量 数数 = xmlChoiceEnum1 获取计数() + xmlChoiceEnum2 获取计数();

如果(计数> 1 )

{

会话.输出 “选择:” );

xml选择 = xmlChoiceEnum1 获取第一();

( xmlChoice )

{

会话.输出( " " + xml 选择类型名称);

xml选择 = xmlChoiceEnum1 获取下一个();

}

xml选择 = xmlChoiceEnum2 获取第一();

( xmlChoice )

{

会话.输出( " " + xml 选择类型名称);

xml选择 = xmlChoiceEnum2 获取下一个();

}

}

}

xmlProp = xmlPropEnum 获取下一个();

}

}

}

函数 主要()

{

变量 图式 作为 艺电架构作曲家

变量 xml类型 作为 艺电模式类型

变量 xmlTypeEnum 作为 艺电模式类型枚举

变量 xml命名空间枚举 作为 艺电模式名称空间枚举

变量 xmlNS 作为 艺电模式命名空间

// 获取 SchemaComposer

图式 = 存储库架构作曲家

// 打印命名空间引用

xml命名空间枚举 = 架构命名空间

如果( xmlNamespaceEnum )

{

xmlNS = xmlNamespaceEnum 获取第一();

( xmlNS )

{

会话.输出( “xmlns:” + xmlNS .名称 + “URI=” + xmlNS URI );

xmlNS = xmlNamespaceEnum 获取下一个();

}

}

// 获取架构类型枚举器

xmlTypeEnum = 架构模式类型

xml类型 = xmlTypeEnum 获取第一();

( xmlType )

{

变量 xmlns = 架构 GetNamespacePrefixForType ( xml 类型类型ID );

乌里 = 架构 GetNamespaceForPrefix ( xmlns );

打印类型( xmlType , xmlns , uri );

xml类型 = xmlTypeEnum 获取下一个();

}

}

主要();

智能感知帮助脚本

编辑Enterprise Architect脚本帮助您使用Schema 编辑器属性编写脚本,方法是在智能感知脚本中提供编辑脚本或其自动化接口的交互和方法。

Intellisense is presented when using Schema Composer automation interfaces in scripts

模型变换中的构造型映射

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

当您在Schema 编辑器中打开或创建模型转换配置文件时,您可以指定一个脚本来为您执行此映射。可以从属性窗口中选择脚本。

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

该脚本可以用JavaScript 、 JScript 或 VBScript 编写,并且只需要实现这个函数(这里用JavaScript表示法描述):

函数TranslateStereotype(srcStereo)

{

var destStereo = srcStereo

if (srcStereo == "BDT")

{

destStereo = "My_BDT"

}

返回目标立体声;

}

了解更多