Frage

Problem: Viele unserer Design und Architektur-Dokumentation wurden in Enterprise Architect erstellt und gepflegt - für eine bessere oder schlimmer noch, das ist, wie es ist. Diese Dokumente werden in unserer Subversion-Repository gespeichert - was für die Leute ziemlich gut funktioniert, die erstellen und aktualisieren, um sie - da wir Lizenzen für EA - aber viele der Entwickler (intern und extern), die auf unserer Code-Basis arbeiten und muß dafür Verwendung der Diagramme aber nicht alle EA-Lizenzen.

Schlechte Lösung: Wir könnten die EA-Dokumente auf ein tragbares Format manuell exportieren und dann die in überprüfen, aber es sind verpflichtet, Zeiten zu sein, wenn die tragbare Format Version veraltet mit dem Dokument EA ist, da sie auf dem menschlichen verlassen sich auf nehmen Sie die Schritte manuell zu konvertieren.

Bessere Lösung: Wir haben für eine Methode suchen, um die Umwandlung zu automatisieren. Dies könnte als ein post-commit Haken oder im Rahmen unseres kontinuierlichen Integrationssystem ausgeführt werden soll. Der Teil, den wir vermissen ist das Stück, das uns die Umwandlung zu automatisieren. Irgendwelche Ideen?

War es hilfreich?

Lösung

Im Beispielcode entdeckte ich nur eine Funktion whish tun genau das, was Sie wollen. Aber versteckt durch die nicht so hilfreich Namen 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

Sie können zur Feinabstimmung haben es ein leidet (das heißt nicht alles in C schreiben: \ Temp). Aber es ist ein guter Anfang

Andere Tipps

Ich bin nicht vertraut mit diesem Produkt, aber die Website, die Sie zu verknüpfen erwähnt eine Automatisierungsschnittstelle. Dies sollte Ihnen ermöglichen, Enterprise Architect von einer Skriptsprache wie VBScript oder JavaScript zu steuern. Es kann möglich sein, über diese Schnittstelle zu drucken; wenn ja, könnten Sie einen PDF-Druckertreiber (oder drucken installieren eine Datei, die ein generischen Postscript-Druckertreiber und die Verwendung Ghost verwendet es in PDF zu konvertieren.

Wir haben Enterprise Architect und wir haben es gut mit Word integriert. Wir schrieben unsere eigenen Wicket / Jetty WebApp, die Links zu EA diragrams als HTTP-URL, die wir dann „Insert &-Link“ in unsere UCR (oder etwas anderes) Dokumente veröffentlicht. Der Web-App zeigt einen Baum wie Struktur der Verbindungen, eines für jedes Paket und dann kopieren wir einfach auf den Link in das Word-Dokument.

Es funktioniert wirklich gut. Wir können so viele Änderungen vornehmen, wie wir in EA mögen und dann im Word-Dokument nur STRG + A gehen alle zu markieren und drücken Sie F9, um alle Verknüpfungen zu aktualisieren. Leider habe ich den Code nicht schreiben, damit ich nicht genau sagen kann, wie man es von EA veröffentlicht wird. Ich denke, es gibt einige Java-Code, der nur fragt den EA-Server und saugt alles, wenn es Änderungen erkennt.

VBScript ist wirklich eine einfache und schnelle Möglichkeit. Ich dachte, ein kleines Skript aus, das ein Diagramm zu exportieren. Das einzige, was Sie wissen müssen, ist, es ist 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top