2009-09-17 25 views
12

Vấn đề: Rất nhiều tài liệu thiết kế và kiến ​​trúc của chúng tôi đã được tạo và duy trì trong Enterprise Architect - để tốt hơn hoặc tệ hơn, đó là cách thực hiện. Các tài liệu này được lưu trữ trong kho lưu trữ subversion của chúng tôi - hoạt động khá tốt cho những người tạo và cập nhật chúng - vì chúng tôi có giấy phép cho EA - nhưng nhiều nhà phát triển (cả bên trong và bên ngoài) làm việc trên codebase của chúng tôi và cần thực hiện sử dụng các sơ đồ nhưng không phải tất cả đều có giấy phép EA.Phương thức tự động xuất biểu đồ Kiến trúc sư doanh nghiệp?

Giải pháp kém: Chúng tôi có thể xuất thủ công các tài liệu EA sang định dạng di động và sau đó kiểm tra các tài liệu đó, nhưng có giới hạn thời gian khi phiên bản định dạng di động lỗi thời với tài liệu EA vì nó dựa trên con người thực hiện các bước để chuyển đổi theo cách thủ công.

Giải pháp tốt hơn: Chúng tôi đã tìm kiếm một phương pháp để tự động chuyển đổi. Điều này có thể được chạy như một móc hậu cam kết hoặc là một phần của hệ thống tích hợp liên tục của chúng tôi. Phần chúng tôi thiếu là phần cho phép chúng tôi tự động chuyển đổi. Bất kỳ ý tưởng?

Trả lời

8

Trong mã ví dụ tôi vừa phát hiện ra một hàm whish sẽ làm chính xác những gì bạn muốn. Nhưng ẩn đi bằng tên không quá hữu ích của 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 

Bạn có thể phải tinh chỉnh nó một litte (ví dụ: không viết tất cả mọi thứ vào C: \ Temp) nhưng nó là một khởi đầu tốt.

1

Tôi không quen thuộc với sản phẩm này nhưng trang Web bạn liên kết đề cập đến giao diện Tự động hóa. Điều này sẽ cho phép bạn điều khiển Enterprise Architect từ một ngôn ngữ kịch bản như VBScript hoặc JavaScript. Có thể in qua giao diện này; nếu có, bạn có thể cài đặt PDF printer driver (hoặc in ra tệp bằng trình điều khiển máy in PostScript chung và sử dụng GhostScript để chuyển đổi sang PDF.

1

Chúng tôi có Kiến trúc sư doanh nghiệp và chúng tôi đã tích hợp độc đáo với Word. Wicket/Jetty WebApp xuất bản các liên kết đến các biểu đồ EA dưới dạng một URL HTTP mà chúng tôi sau đó "Chèn & Liên kết" vào tài liệu UCR của chúng tôi (hoặc bất kỳ tài liệu nào khác). Chúng tôi có thể thực hiện nhiều thay đổi như chúng ta thích trong EA và sau đó trong tài liệu Word chỉ cần nhấn CTRL + A để chọn tất cả và nhấn F9 để cập nhật tất cả các liên kết Thật không may tôi đã không w rite mã vì vậy tôi không thể cho bạn biết chính xác nó được xuất bản từ EA như thế nào. Tôi nghĩ rằng có một số mã Java mà chỉ cần thăm dò ý kiến ​​các máy chủ EA và hút ra tất cả mọi thứ nếu nó phát hiện những thay đổi.

+0

Điều này thật thú vị, tôi cho rằng điểm lấy đi là có ít nhất một số API Java mà chúng tôi có thể sử dụng. Tuy nhiên, chúng tôi không chạy một máy chủ EA - chỉ là ứng dụng độc lập. –

1

VBScript thực sự là một khả năng dễ dàng và nhanh chóng. Tôi đã tìm ra một tập lệnh nhỏ cho phép xuất biểu đồ. Chỉ nghĩ rằng bạn phải biết đó là 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

Bắt đầu tuyệt vời. Nhưng những gì cần thiết là một cách để xuất tất cả các Sơ đồ trong một lần. Có thể sử dụng tập lệnh VBA. – Martin

Các vấn đề liên quan