2015-08-24 2 views
2

Мне нужно изменить тип диаграммы большого количества диаграмм в моей модели Enterprise Architect. Изменения могут быть сделаны вручную, используя следующий вариант (который работает, как ожидалось):Enterprise Architect: изменить тип диаграммы (MetaType) по сценарию

Выберите схема - схема - Дополнительно - Изменить тип ...

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

Мне нужно изменить «MetaType» объекта диаграммы. Но это только для чтения (см. http://www.sparxsystems.com/enterprise_architect_user_guide/12/automation_and_scripting/diagram2.html). Поэтому я получил ошибку.

var currentDiagram as EA.Diagram 
currentDiagram = theDiagram 
currentDiagram.MetaType = MY_DIAGRAM_METATYPE // ERROR 

На следующем этапе я искал соответствующие функциональные возможности в Repository интерфейса (http://www.sparxsystems.com/enterprise_architect_user_guide/12/automation_and_scripting/repository3.html) и в интерфейсе проекта. Но я не нашел ничего подходящего.

Я использую Enterprise Architect 12.0.1215, и я использовал JScript.

Кто-нибудь уже пробовал это по сценарию? Я что-то пропустил? Есть ли другой подход к изменению типа диаграммы по сценарию?

Заранее благодарен!

ответ

2

Вы должны сделать это в два этапа (если вы перейдете на разные типы диаграмм ЦРТ). Например. для изменения диаграммы классов на BPMN2.0 :: BPEL вы сначала меняете Diagram_Type от . Логический до Анализ. Дополнительно вам нужно добавить MDGDgm = BPMN2.0 :: BPEL; - StyleEx. Если ваша старая диаграмма из другой ЦРТ, вам необходимо изменить существующий атрибут MDGDgm в StyleEx.

Как отметил Уффе, тип диаграммы в API равен r/o. Так что, если вам нужно изменить, что вам нужно будет сделать что-то вроде

Repository.Execute("UPDATE t_diagram SET Diagram_Type='Analysis' WHERE Diagram_ID=<theId>") 

где <theId> будет правильно схема ID.

+0

Как отмечено в вопросе, атрибут Type для класса Diagram доступен только для чтения, поэтому для его изменения вам необходимо обновить его непосредственно в базе данных. – Uffe

+0

Предлагаемое решение сработало для меня! Большое спасибо. Мне не нужно менять тип диаграммы, но только мета-тип (другой ЦРТ), и для этого достаточно изменить свойство StyleEx. Что касается соответствующих диаграмм, доступна пустая запись «MDGgm», я могу использовать следующий код: «currentDiagram.StyleEx = currentDiagram.StyleEx.replace (« MDGDgm =; »,« MDGDgm = »+ FSM_DIAGRAM_METATYPE +»; »)' –

+0

@Uffe Спасибо. Я соответствующим образом обновил ответ. –