前页 后页

查询方法

在Shape脚本中使用IfElse语句时,条件通常是对象具有特定的标记或属性,并且可能是该标记或属性具有特定的值。您可以使用此处介绍的两种查询方法之一来设置条件语句以检查属性和值。

查询

方法

描述

也可以看看

布尔HasTag(字符串标记名,
(字符串tagvalue))

如果'tagname'存在并且其值为非空,则HasTag(tagname)的计算结果为'True';否则评估为“假”。

如果存在'tagname'并且其值为'tagvalue',则HasTag(tagname,tagvalue)的计算结果为'True'。

如果'tagname'不存在且'tagvalue'为空,则HasTag(tagname,tagvalue)也将评估为'True',在此上下文中将'empty'和'missing'视为相同。

标记值

boolean HasProperty(string propertyname,
(字符串属性值))

如果关联元素具有名称为propertyname的属性,则计算为True。

如果提供了第二个参数propertyvalue,则该属性必须存在,并且该属性的值必须等于propertyvalue,该方法才能评估为True。

propertyvalue参数可以有多个值,以逗号分隔;例如:

if(HasProperty(“ Type”,“ Class,Action,Activity,Interface”))

{

SetFillColor(255,0,0);

DrawNativeShape();

}

该形状脚本将对除if(HasProperty())语句中指定的四种类型之一以外的任何类型的元素使用标准元素填充颜色;这四种类型中任何一种的元素将显示为红色填充。

显示元素/连接器属性

HasProperty和用户选择的设置

HasProperty()方法的一个特殊应用是检查属性设置,在该属性中您已经为用户提供了为使用原型元素的特定实例设置该属性的功能。因此,用户可以将元素拖动到图上,并通过元素上下文菜单设置形状脚本在渲染图对象时响应的一个或多个属性。因此,该元素可能在一个图上具有一个外观,而在另一个图上具有不同的外观,因为该元素在两个图上具有不同的属性设置。

要在个人资料中指定用户可选择的属性,请创建适当的Stereotype元素,然后-对于要定义的每个属性-向该元素添加构造型为«diagram property»的属性。对于属性名称,键入将在构造型元素的上下文菜单上显示的选项的文本;例如“是红色”。还要给该属性一个别名,该别名将是存储该属性时的名称,并且HasProperty()方法将对其进行评估。如果将属性的初始值设置为1,则将首先设置上下文菜单选项;否则,将设置为0。如果没有初始值,则属性选项将默认为未设置。

还要使用Shape脚本定义一个_image属性,该脚本应用HasProperty()方法。在此示例中,Shape脚本为HasProperty()方法定义了两个Class属性(Is Red和Is Triangle),以检查是否设置了该选项。

形状主体

{

如果(HasProperty(“ IsRed”,“ 1”))

{

SetFillColor(255,128,128);

}

如果(HasProperty(“ IsTriangle”,“ 0”))

{

多边形(50,50,3,50,0);

}

其他

{

DrawNativeShape();

}

}

当定义了扩展元素类型的构造型时,它将类似于以下内容:

A UML Profile diagram showing how to define diagram properties.

在创建MDG技术并将其发布给用户后,当他们从工具箱中拖动构造型元素时,它将根据已定义属性的当前设置进行渲染,用户可以通过上下文菜单访问和重新设置该属性,如图所示:

Showing the use of diagram properties to change the appearance of elements on a diagram.

学到更多