Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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