Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
20.03.2016
Размер:
7.31 Mб
Скачать

StarUML. Руководство разработчика. Глава 7. Написание профилей UML

75 / 139

Имена дограмм

DeploymentDiagram

CompositeStructureDiagram

Элемент AVAILABLEPALETTELIST: Определяет список активных палитр для типа диаграммы.

Элемент AVAILABLEPATTE: Определяет палитру, активируемую для типа диаграммы. Значением этого элемента должно быть имя палитры, определенной в профили, или встроенной палитры StarUML.

Имена встроенных палитр

UseCase

Class

SequenceRole

Sequence

CollaborationRole

Collaboration

Statechart

Activity

Component

Deployment

CompositeStructure

Annotation

Регистрация профиля UML

Чтобы профиль автоматически распознавался программой StarUML, его следует разместить в подкаталоге каталога модулей StarUML (<install-dir> \modules). StarUML находит и читает все профили, расположенные в каталоге модулей, и автоматически регистрирует их когда стартует. Если файл профиля некорректен или имеет расширение не .prf, StarUML игнорирует его. Рекомендуется размещать профили в отдельном подкаталоге каталога модулей StarUML, во избежание их смешивания.

Обратите внимание: Чтобы зарегистрировать иконку профиля, создайте файл иконки (с таким же именем) и поместите его в каталог профиля. Иконка профиля будет показана рядом с названием профиля в списке диалога [Profiles]. Если файл иконки не найден, ему присваивается заданная по умолчанию иконка.

Обратите внимание: Просто удалите файл профиля из каталога модулей StarUML (<install-dir> \modules), чтобы он больше не использовался.

Управление объектом элемента расширения

Описание элементов расширения

К элементам расширения, определенным в профиле, можно обратиться через StarUML™ API. COM-интерфейс, связанный с расширением StarUML™, организован тем же самым способом как и актуальная структура расширения UML, и управляется через интерфейс IExtensionManager. Разработчики редко непосредственно управляют объектами элемента расширения. Напротив, разработчику намного удобнее получать стереотипы или значения тегов от актуальных расширенных модельных элементов. В этом случае могут использоваться методы, предоставленные интерфейсом IExtensionModel. Для получения детальной информации

StarUML. Руководство разработчика. Глава 7. Написание профилей UML

76 / 139

относительно интерфейса IExtensibleModel и элементов моделирования, см. "Главу 4. Использование открытого API".

Как было упомянуто ранее, элементы расширения не создаются в процессе собственно моделирования, они предварительно определены структурами расширения. Поскольку они не должны изменяться после загрузки программы или проекта, большинство свойств, определенных в этих интерфейсах, только читается.

Следующие интерфейсы доступны для обработки объектов элемента расширения.

IExtensionManager: Управляет профилями, зарегистрированными в программе, и предоставляет методы поиска элементов расширения. IExtensionManager - первый интерфейс, который получает доступ к профилю или элементам расширения, определенным в профиле.

IProfile: Управляет элементами расширения, определенными в профиле, и предоставляет методы доступа к ним. Он также содержит информацию о профиле. IProfile поддерживает элементы расширения, определенные в профиле, как коллекции элементов IStereotype, ITagDefinition и IDataType.

IStereotype: Предоставляет информацию о стереотипах.

ITagDefinitionSet: Предоставляет информацию о наборе тегов, и управляет определениями тегов, содержащимися в наборе, как коллекцией элементов ITagDefintion.

ITagDefintion: Предоставляет информацию о теге.

IDataType: Предоставляет информацию о типе данных.

Следующая диаграмма иллюстрирует организацию COM-интерфейсов для элементов расширения

StarUML.

StarUML. Руководство разработчика. Глава 7. Написание профилей UML

77 / 139

StarUML. Руководство разработчика. Глава 7. Написание профилей UML

78 / 139

Вызов IExtensionManager

Чтобы управлять профилями и элементами расширения, сначала должна быть получена ссылка на интерфейс IExtensionManager. IStarUMLApplication предоставляет свойство для обращения к объекту ExtensionManager. Следующий код - пример получения ссылки к IExtensionManager на Jscript.

var app = new ActiveXObject("StarUML.StarUMLApplication"); var ext = app.ExtensionManager;

Включение и отключение профиля

IExtensionManager предоставляет методы для включения или исключая профиля в проекте. Метод IncludeProfile() включает указанный профиль в текущий проект, а ExcludeProfile() исключает указанный профиль из текущего проекта. Профиль, указанный как параметр в этих методах, должен быть зарегистрирован в системе. Если указанный профиль не существует или не зарегистрирован в системе, происходит ошибка. Сигнатуры методов следующие.

IExtensionManager.IncludeProfile(Profile: String)

IEXtensionManager.ExcludeProfile(Profile: String)

Ниже представлен пример на JScript исключения профиля "UMLStandard" из текущего проекта.

var app = new ActiveXObject("StarUML.StarUMLApplication"); var ext = app.ExtensionManager; ext.ExcludeProfile("UMLStandard");

Вызов элементов расширения, определенных в профиле

Объект расширения, определённый в профиле, доступен через интерфейс IProfile. IProfile предоставляет следующие методы доступа к коллекциям, позволяющие обратиться к интерфейсам объектов расширения (IStereotype, ITagDefinitionSet, и IDataType). Аргумент индекса, используемый в GetStereotypeAt (), GetTagDefinitionSetAt (), GetDataType (), и т.д. должен быть меньше или равен чем (Count - 1) для коллекции.

IProfile.GetStereotypeCount(): Integer

IProfile.GetStereotypeAt(Index: Integer): IStereotype

IProfile.GetTagDefinitionSetCount(): Integer

IProfile.GetTagDefinitionSetAt(Index: Integer): ITagDefinitionSet

IProfile.GetDataTypeCount(): Integer

IProfile.GetDataTypeAt(Index: Integer): IDataType

Следующий пример на Jscript показывает перебор всех стереотипов, определенных в профиле.

 

 

var app

= new ActiveXObject("StarUML.StarUMLApplication");

var ext

= app.ExtensionManager;

var prf

= ext.FindIncludedProfile("UMLStandard");

if (prf

!= null) {

var

st;

for

(i = 0; i <= prf.GetStereotypeCount() - 1; i++) {

 

st = prf.GetStereotypeAt(i);

}}

// do something...

 

Соседние файлы в папке ПиАПС ЛР2