2009-09-17 7 views
12

Problem: Wiele z naszej dokumentacji projektowej i architektury zostało stworzonych i utrzymywanych w Enterprise Architect - na lepsze lub na gorsze, tak właśnie jest. Dokumenty te są przechowywane w naszym repozytorium subversion - co działa całkiem dobrze dla osób, które je tworzą i aktualizują - ponieważ mamy licencje na EA - ale wielu programistów (zarówno wewnętrznych, jak i zewnętrznych), którzy pracują nad naszym kodem i muszą zrobić korzystać ze schematów, ale nie wszystkie mają licencje EA.Zautomatyzowana metoda eksportu diagramów Enterprise Architect?

Słabe rozwiązanie: Możemy ręcznie wyeksportować dokumenty EA do formatu przenośnego, a następnie je sprawdzić, ale czasami obowiązują wersje przenośne, które są przestarzałe w stosunku do dokumentu EA, ponieważ bazują na podjąć kroki, aby ręcznie dokonać konwersji.

Lepsze rozwiązanie: Szukaliśmy metody automatyzacji konwersji. Może to być uruchamiane jako hak po zatwierdzeniu lub jako część naszego ciągłego systemu integracji. Brakuje części, która pozwala nam zautomatyzować konwersję. Jakieś pomysły?

Odpowiedz

8

W kodzie przykładu właśnie odkryłem funkcję, która zrobi dokładnie to, co chcesz. Ale ukryte pod nazwą nie tak pomocny od 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 

Być może trzeba dostroić to Litte (to znaczy nie pisać wszystko w C: \ Temp), ale jest to dobry początek.

1

Nie znam tego produktu, ale witryna internetowa, do której prowadzi łącze, wymienia interfejs automatyzacji. Powinno to pozwolić na kontrolowanie Enterprise Architect z poziomu języka skryptowego, takiego jak VBScript lub JavaScript. Może być możliwe drukowanie za pośrednictwem tego interfejsu; jeśli tak, można zainstalować plik PDF printer driver (lub wydrukować do pliku za pomocą ogólnego sterownika drukarki PostScript i użyć GhostScript, aby przekonwertować go do formatu PDF.)

1

Mamy Enterprise Architect i mamy go ładnie zintegrowany z Word. Wicket/Jetty WebApp, który publikuje linki do diragramów EA jako URL HTTP, które następnie "Wstawiamy & Link" do naszych dokumentów UCR (lub czegokolwiek innego.) Aplikacja internetowa wyświetla strukturę drzewiastą linków, po jednym dla każdego pakietu, a następnie po prostu skopiuj link do dokumentu tekstowego:

Działa bardzo dobrze, możemy wprowadzić dowolną liczbę zmian w EA, a następnie w dokumencie Worda wystarczy nacisnąć CTRL + A, aby wybrać wszystkie i nacisnąć F9, aby zaktualizować wszystkie linki Niestety nie zrobiłem tego rytuję kod, więc nie mogę powiedzieć dokładnie, jak jest opublikowany z EA. Myślę, że istnieje kod Java, który właśnie odpytuje serwer EA i wysysa wszystko, jeśli wykryje zmiany.

+0

Jest to interesujące, przypuszczam, że punktem wyjścia jest to, że istnieje co najmniej niektóre API Java, które możemy wykorzystać. Jednak nie korzystamy z serwera EA - tylko samodzielna aplikacja. –

1

VBScript jest naprawdę łatwą i szybką możliwością. Wymyśliłem mały skrypt, który pozwala wyeksportować diagram. Jedyne, co musisz wiedzieć, to 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 
+0

Niezły start. Ale potrzebny byłby sposób eksportu wszystkich diagramów za jednym razem. Powinien być możliwy przy użyciu skryptu VBA. – Martin