Автоматизированный метод для экспорта диаграмм Enterprise Architect?
Проблема: большая часть нашей документации по дизайну и архитектуре была создана и поддерживается в Enterprise Architect - к лучшему или худшему, вот как это делается, Эти документы хранятся в нашем репозитории subversion, который хорошо подходит для людей, которые создают и обновляют их, поскольку у нас есть лицензии для EA, но многие из разработчиков (как внутренних, так и внешних), которые работают на нашей кодовой базе и должны сделать использование диаграмм, но не все имеют лицензии EA.
Плохое решение. Мы могли вручную экспортировать документы EA в переносимый формат, а затем проверить их, но неизбежно будут случаи, когда версия портативного формата устарела с документом EA, поскольку она полагается на человека выполните шаги для преобразования вручную.
Лучшее решение: мы искали способ автоматизации преобразования. Это можно запустить как крюк после фиксации или как часть нашей системы непрерывной интеграции. Нам не хватает части, которая позволяет нам автоматизировать преобразование. Любые идеи?
Ответы
Ответ 1
В примере кода я только что открыл функцию, которая сделает то, что вы хотите. Но спрятанное не очень полезным именем ProjectInterfaceExample:
option explicit
!INC Local Scripts.EAConstants-VBScript
'
' Examples of how to access and use the Project Interface.
'
' Related APIs
' =================================================================================
' Project Interface API - http://www.sparxsystems.com/uml_tool_guide/sdk_for_enterprise_architect/project_2.html
'
' Global reference to the project interface
dim projectInterface as EA.Project
sub ProjectInterfaceExample()
' Show the script output window
Repository.EnsureOutputVisible "Script"
Session.Output( "VBScript PROJECT INTERFACE EXAMPLE" )
Session.Output( "=======================================" )
set projectInterface = Repository.GetProjectInterface()
' Iterate through all model nodes
dim currentModel as EA.Package
for each currentModel in Repository.Models
' Iterate through all child packages and save out their diagrams
dim childPackage as EA.Package
for each childPackage in currentModel.Packages
DumpDiagrams childPackage
next
next
Session.Output( "Done!" )
end sub
'
' Recursively saves all diagrams under the provided package and its children
'
sub DumpDiagrams ( thePackage )
' Cast thePackage to EA.Package so we get intellisense
dim currentPackage as EA.Package
set currentPackage = thePackage
' Iterate through all diagrams in the current package
dim currentDiagram as EA.Diagram
for each currentDiagram in currentPackage.Diagrams
' Open the diagram
Repository.OpenDiagram( currentDiagram.DiagramID )
' Save and close the diagram
Session.Output( "Saving " & currentDiagram.Name )
projectInterface.SaveDiagramImageToFile "c:\\temp\\" + currentDiagram.Name + ".emf"
Repository.CloseDiagram( currentDiagram.DiagramID )
next
' Process child packages
dim childPackage as EA.Package
for each childPackage in currentPackage.Packages
DumpDiagrams childPackage
next
end sub
ProjectInterfaceExample
Возможно, вам придется настроить его на litte (i.E. не записывать все в C:\Temp), но это хороший старт.
Ответ 2
Я не знаком с этим продуктом, но на веб-сайте, на который вы ссылаетесь, упоминается интерфейс автоматизации. Это должно позволить вам контролировать Enterprise Architect с языка сценариев, такого как VBScript или JavaScript. Возможно, это можно будет распечатать через этот интерфейс; Если это так, вы можете установить драйвер принтера PDF (или распечатать файл с помощью общего драйвера принтера PostScript и использовать GhostScript, чтобы преобразовать его в PDF.
Ответ 3
У нас есть Enterprise Architect, и у нас он хорошо интегрирован с Word. Мы написали собственный Wicket/Jetty WebApp, который публикует ссылки на EA diragrams в качестве URL-адреса HTTP, которые мы затем "вставляем и добавляем" в наши документы UCR (или что-то еще). Веб-приложение отображает дерево как структуру ссылок, по одному для каждого пакета, а затем мы просто копируем ссылку в документ слова.
Это работает очень хорошо. Мы можем внести столько изменений, сколько нам нравится в EA, а затем в документе Word просто перейдите CTRL + A, чтобы выбрать все, и нажмите F9, чтобы обновить все ссылки. К сожалению, я не написал код, поэтому не могу точно сказать, как он опубликован в EA. Я думаю, что есть какой-то Java-код, который просто проверяет сервер EA и высасывает все, если обнаруживает изменения.
Ответ 4
VBScript - это действительно легкая и быстрая возможность. Я вычислил небольшой script, который позволяет экспортировать диаграмму. Единственное, что вам нужно знать, это GUID.
Set MyRep = CreateObject("EA.Repository")
If NOT MyRep.OpenFile("D:\Repository.eap") Then
MsgBox("Error opening file")
WScript.Quit -1
End If
Set Project = MyRep.GetProjectInterface
My_Diagram_GUID = "{2256B231-99F6-4c78-9AB0-72E24486D578}"
'Vector export emf/wmf
Project.PutDiagramImageToFile My_Diagram_GUID,"D:\Test.emf",0
'Bitmap export png/bmp/...
Project.PutDiagramImageToFile My_Diagram_GUID,"D:\Test.png",1