Автоматизированный метод экспорта диаграмм Enterprise Architect?

StackOverflow https://stackoverflow.com/questions/1441479

  •  10-07-2019
  •  | 
  •  

Вопрос

Проблема: большая часть нашей документации по проектированию и архитектуре была создана и размещена в Enterprise Architect - для лучшего или хуже, так оно и есть. Эти документы хранятся в нашем репозитории subversion - что очень хорошо подходит для тех, кто их создает и обновляет - поскольку у нас есть лицензии на EA - но многие разработчики (как внутренние, так и внешние) работают над нашей базой кода и должны использование диаграмм, но не у всех есть лицензии EA.

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

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

Это было полезно?

Решение

В примере кода я только что обнаружил функцию, которая будет делать именно то, что вы хотите. Но скрыто не очень полезным именем 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

Возможно, вам придется немного его настроить (т.е. не записывать все в C: \ Temp), но это хорошее начало.

Другие советы

Я не знаком с этим продуктом, но на веб-сайте, на который вы ссылаетесь, упоминается интерфейс автоматизации. Это должно позволить вам управлять Enterprise Architect с помощью языка сценариев, такого как VBScript или JavaScript. Это может быть возможно для печати через этот интерфейс; если это так, вы можете установить драйвер принтера PDF (или распечатать на файл с помощью универсального драйвера принтера PostScript и используйте GhostScript для преобразования его в PDF.

У нас есть Enterprise Architect, и он прекрасно интегрирован с Word. Мы написали наше собственное приложение Wicket / Jetty WebApp, которое публикует ссылки на диаграммы EA в виде URL-адреса HTTP, который мы затем «вставляем и вставляем». в наши документы UCR (или что-нибудь еще). Веб-приложение отображает древовидную структуру ссылок, по одной для каждого пакета, а затем мы просто копируем ссылку в текстовый документ.

Это работает очень хорошо. Мы можем сделать столько изменений, сколько захотим в EA, а затем в документе Word просто нажмите CTRL + A, чтобы выбрать все, и нажмите F9, чтобы обновить все ссылки. К сожалению, я не написал код, поэтому не могу точно сказать, как он опубликован в EA. Я думаю, что есть некоторый Java-код, который просто опрашивает сервер EA и высасывает все, если он обнаруживает изменения.

VBScript - это действительно простая и быстрая возможность. Я разобрался с небольшим скриптом, который позволяет экспортировать диаграмму. Единственное, что вам нужно знать - это 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top