前页 | 后页 |
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 编辑器属性编写脚本,方法是在智能感知脚本中提供编辑脚本或其自动化接口的交互和方法。
模型变换中的构造型映射
构造型构成了MDG 技术方法的很大一部分。 MDG 技术的单独UML配置文件定义了构造型以为其元素提供有用的分类。从核心框架转到业务模型或子域时,重新分配构造型是一个常见的要求。当您使用 CCTS 框架时,您生成的业务组件的原型由Enterprise Architect根据 CCTS 规范定义的映射(例如,ACC 到 ABIE)自动生成。
当您在Schema 编辑器中打开或创建模型转换配置文件时,您可以指定一个脚本来为您执行此映射。可以从属性窗口中选择脚本。
该脚本可以用JavaScript 、 JScript 或 VBScript 编写,并且只需要实现这个函数(这里用JavaScript表示法描述):
函数TranslateStereotype(srcStereo)
{
var destStereo = srcStereo
if (srcStereo == "BDT")
{
destStereo = "My_BDT"
}
返回目标立体声;
}