Pergunta

Problema: Um monte de nossa documentação de design e arquitetura foram criados e mantidos em Enterprise Architect - para melhor ou pior, que é como ele é. Estes documentos são armazenados em nosso repositório Subversion - que funciona muito bem para as pessoas que criam e atualizá-los - já que temos licenças para EA - mas muitos dos desenvolvedores (internos e externos) que trabalham em nossa base de código ea necessidade de fazer usar dos diagramas, mas não todos têm licenças EA.

Pobre Solução: Poderíamos exportar manualmente os documentos da EA para um formato portátil e, em seguida, verificar aqueles em, mas não estão vinculados a ser tempos quando a versão formato portátil está fora de data com o documento EA, uma vez que conta com o humano para tomar as medidas para converter manualmente.

Melhor Solução: Temos sido à procura de um método para automatizar a conversão. Isso pode ser executado como um gancho post-commit ou como parte de nosso sistema de integração contínua. A parte que está faltando é a peça que nos permite automatizar a conversão. Alguma idéia?

Foi útil?

Solução

No código Exemplo Acabei de descobrir uma função whish vai fazer exatamente o que você quer. Mas escondido pelo nome não é tão útil de 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

Você pode ter que afinar uma litte (ou seja, não escrever tudo em C: \ Temp). Mas é um bom começo

Outras dicas

Eu não estou familiarizado com este produto, mas o Web site que você conectar-se a menciona uma interface Automation. Isso deve permitir que você controle Enterprise Architect a partir de uma linguagem de script como VBScript ou JavaScript. Pode ser possível imprimir através desta interface; Se assim for, você poderia instalar um driver de impressora PDF (ou imprimir um arquivo usando um driver genérico de impressora PostScript e uso GhostScript para convertê-lo em PDF.

Temos Enterprise Architect e nós tê-lo bem integrado com o Word. Nós escrevemos nossa própria Wicket / Jetty WebApp que publica links para diragrams EA como um HTTP URL que, depois, "Inserir e Ligação" em nosso UCR (ou qualquer outra coisa) documentos. O aplicativo web exibe uma árvore como a estrutura de links, um para cada pacote e então nós apenas copiar o link para o documento do Word.

Ele funciona muito bem. Podemos fazer tantas mudanças como gostamos em EA e, em seguida, no documento do Word basta ir CTRL + A para selecionar todos e bateu F9 para atualizar todos os links. Infelizmente eu não escrever o código, então não posso dizer exatamente como ele é publicado a partir de EA. Eu acho que há algum código Java que apenas as pesquisas o servidor EA e suga tudo se detectar alterações.

VBScript é realmente uma possibilidade fácil e rápido. Eu descobri um pequeno script que permite exportar um diagrama. A única coisa que você tem que saber é que do 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top