2009-09-17 12 views
12

問題:私たちの多くの設計およびアーキテクチャのドキュメントは、Enterprise Architectで作成され、維持されました。これらの文書はSubversionリポジトリに保存されています。これらのリポジトリは、EAのライセンスを持っているため、作成して更新する人にはうまくいきますが、コードベースで作業する多くの開発者(内部および外部)図の使用はすべてEAライセンスを持っていません。Enterprise Architectダイアグラムを自動エクスポートする方法は?

悪い解決策:手動でEA文書をポータブル形式にエクスポートしてからチェックインすることができますが、ポータブル形式のバージョンが人間に依存しているため、EA文書では古くなっている場合があります手動で変換する手順を実行します。

改善されたソリューション:変換を自動化する方法を探していました。これはコミット後のフックとして、または継続的な統合システムの一部として実行できます。私たちが欠けているのは、私たちが変換を自動化できる部分です。何か案は?

答えて

8

例コードでは、ちょうどあなたが望むものを実行する機能を発見しました。しかし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に)を微調整する必要があるかもしれませんが、それは良いスタートです。

1

私はこの製品に精通していませんが、リンク先のWebサイトにはオートメーションインターフェイスが含まれています。これにより、VBScriptやJavaScriptなどのスクリプト言語からEnterprise Architectを制御できるようになります。このインタフェースを介して印刷することも可能です。その場合はPDF printer driverをインストールするか、汎用PostScriptプリンタドライバを使用してファイルに印刷し、GhostScriptを使用してPDFに変換することができます。

1

私たちはEnterprise Architectを所有しており、 Wicket/Jetty WebAppは、UCR(または何か他の)ドキュメントに「& Linkを挿入する」というHTTP URLとしてEAディーグラムへのリンクを公開しています。

EAで好きなだけ多くの変更を加えることができますし、Word文書でCTRL + Aを押してすべてを選択し、F9を押してすべてのリンクを更新してください残念ながら私はしなかったコードを照会して、EAからどのように出版されたかを正確に伝えることはできません。 EAサーバーをポーリングして変更が検出された場合はすべてを取り除くJavaコードがいくつかあると思います。

+0

これは面白いことですが、私が使用できるJava APIが少なくともあるということです。しかし、私たちはEAサーバーを実行していません - スタンドアロンのアプリだけです。 –

1

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 
+0

素敵なスタートです。しかし、必要なのは、すべてのダイアグラムを一度にエクスポートする方法です。 VBAスクリプトを使用することができます。 – Martin

関連する問題