gpt4 book ai didi

enterprise-architect - 导出 Enterprise Architect 图表的自动化方法?

转载 作者:行者123 更新时间:2023-12-03 23:48:37 27 4
gpt4 key购买 nike

问题:我们的许多设计和架构文档都是在 Enterprise Architect 中创建和维护的。 ——无论好坏,就是这样。这些文档存储在我们的 subversion 存储库中——这对于创建和更新它们的人来说非常有效——因为我们有 EA 的许可证——但是许多在我们的代码库上工作并需要制作的开发人员(内部和外部)使用图表,但并非都拥有 EA 许可证。

糟糕的解决方案:我们可以手动将 EA 文档导出为可移植格式,然后将其 checkin ,但有时可移植格式版本与 EA 文档已过时,因为它依赖于人来执行步骤手动转换。

更好的解决方案:我们一直在寻找一种自动化转换的方法。这可以作为提交后 Hook 或作为我们持续集成系统的一部分运行。我们缺少的部分是允许我们自动转换的部分。有任何想法吗?

最佳答案

在示例代码中,我刚刚发现了一个函数 whish 将完全按照您的意愿行事。但是被 这个不太有用的名字隐藏起来了项目接口(interface)示例 :

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),但这是一个好的开始。

关于enterprise-architect - 导出 Enterprise Architect 图表的自动化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1441479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com