13

問題: 多くの設計およびアーキテクチャ ドキュメントは、Enterprise Architectで作成および管理されていました。良くも悪くも、それが現状です。これらのドキュメントは、サブバージョン リポジトリに保存されます。これは、EA のライセンスを持っているため、それらを作成および更新する人々にとっては非常にうまく機能します。図を使用していますが、全員が EA ライセンスを持っているわけではありません。

貧弱な解決策: EA ドキュメントを手動でポータブル フォーマットにエクスポートしてからチェックインすることもできますが、ポータブル フォーマット バージョンは EA ドキュメントと比べて古い場合があります。手動で変換します。

より良い解決策: 変換を自動化する方法を探していました。これは、コミット後のフックとして、または継続的インテグレーション システムの一部として実行できます。欠けている部分は、変換を自動化できる部分です。何か案は?

4

4 に答える 4

9

サンプルコードで、私はちょうどあなたが望むことを正確に実行する関数を発見しました。しかし、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に書き込むわけではありません)、良いスタートです。

于 2012-02-02T10:43:35.230 に答える
1

私はこの製品に詳しくありませんが、あなたがリンクしている Web サイトには Automation インターフェイスについて言及されています。これにより、VBScript や JavaScript などのスクリプト言語から Enterprise Architect を制御できるようになります。このインターフェイスを介して印刷できる場合があります。その場合は、PDF プリンター ドライバーをインストールできます(または、一般的な PostScript プリンター ドライバーを使用してファイルに出力し、 GhostScriptを使用して PDF に変換します。

于 2009-09-17T22:12:38.290 に答える
1

Enterprise Architect があり、Word とうまく統合されています。私たちは独自の Wicket/Jetty WebApp を作成し、EA ダイラグラムへのリンクを HTTP URL として公開し、それを UCR (またはその他のもの) ドキュメントに「挿入してリンク」します。Web アプリは、パッケージごとに 1 つのリンクの構造のようなツリーを表示し、リンクを Word ドキュメントにコピーするだけです。

それは本当にうまくいきます。EA で好きなだけ変更を加えてから、Word ドキュメントで CTRL+A を押してすべてを選択し、F9 を押してすべてのリンクを更新します。残念ながら私はコードを書いていないので、EA からどのように公開されているかを正確に伝えることはできません. EAサーバーをポーリングし、変更を検出した場合にすべてを吸い出すJavaコードがあると思います。

于 2009-09-17T22:17:05.887 に答える
1

VBScript is really an easy and quick possibility. I figured out a small script that allows to export a diagram. The only think you have to know is it's 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
于 2011-07-28T11:48:48.953 に答える