2009-09-17 8 views
12

समस्या: Enterprise Architect में हमारे बहुत सारे डिज़ाइन और आर्किटेक्चर दस्तावेज़ों को बनाए और बनाए रखा गया था - यह बेहतर है या नहीं। ये दस्तावेज़ हमारे सबवर्जन रिपोजिटरी में संग्रहीत हैं - जो उन लोगों के लिए बहुत अच्छी तरह से काम करते हैं जो उन्हें बनाते हैं और अपडेट करते हैं - क्योंकि हमारे पास ईए के लिए लाइसेंस हैं - लेकिन कई डेवलपर्स (आंतरिक और बाहरी दोनों) जो हमारे कोडबेस पर काम करते हैं और बनाने की आवश्यकता है आरेखों का उपयोग लेकिन सभी में ईए लाइसेंस नहीं हैं।एंटरप्राइज़ आर्किटेक्ट आरेखों को निर्यात करने के लिए स्वचालित विधि?

खराब समाधान: हम मैन्युअल रूप से ईए दस्तावेजों को एक पोर्टेबल प्रारूप में निर्यात कर सकते हैं और फिर उनको जांच सकते हैं, लेकिन ऐसे समय होते हैं जब पोर्टेबल प्रारूप संस्करण ईए दस्तावेज़ के साथ पुराना है क्योंकि यह मानव पर निर्भर करता है मैन्युअल रूप से कन्वर्ट करने के लिए कदम उठाने के लिए।

बेहतर समाधान: हम रूपांतरण को स्वचालित करने के लिए एक विधि की तलाश में हैं। इसे पोस्ट-प्रतिबद्ध हुक के रूप में या हमारे निरंतर एकीकरण प्रणाली के हिस्से के रूप में चलाया जा सकता है। जो हिस्सा हम गायब हैं वह वह टुकड़ा है जो हमें रूपांतरण को स्वचालित करने की अनुमति देता है। कोई विचार?

उत्तर

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 

आप ठीक धुन करने के लिए हो सकता है यह एक litte (अर्थात सी में सब कुछ लिख नहीं: \ अस्थायी) लेकिन यह एक अच्छी शुरुआत है।

1

मैं इस उत्पाद से परिचित नहीं हूं लेकिन जिस वेबसाइट से आप लिंक करते हैं वह ऑटोमेशन इंटरफ़ेस का उल्लेख करता है। यह आपको एंटरप्राइज़ आर्किटेक्ट को एक स्क्रिप्टिंग भाषा जैसे VBScript या जावास्क्रिप्ट से नियंत्रित करने की अनुमति दे सकता है। इस इंटरफ़ेस के माध्यम से प्रिंट करना संभव हो सकता है; यदि हां, तो आप एक सामान्य पोस्टस्क्रिप्ट प्रिंटर ड्राइवर का उपयोग कर एक फाइल करने के लिए एक PDF printer driver (या प्रिंट स्थापित कर सकता है और GhostScript का उपयोग यह पीडीएफ कन्वर्ट करने के लिए।

1

हम एन्टरप्राइज़ आर्किटेक्ट है और हम इसे अच्छी तरह से वर्ड के साथ एकीकृत किया है। हम अपने लिखा था विकेट/जेट्टी वेब ऐप जो ईए डीराग्राम को एक HTTP यूआरएल के रूप में प्रकाशित करता है, जिसे हम अपने यूसीआर (या कुछ और) दस्तावेज़ों में "& लिंक" डालें। वेब ऐप लिंक की संरचना जैसे पेड़ को प्रदर्शित करता है, प्रत्येक पैकेज के लिए एक और फिर हम बस शब्द दस्तावेज़ में लिंक कॉपी करें।

यह वास्तव में अच्छी तरह से काम करता है। हम ईए में जैसे कई बदलाव कर सकते हैं और फिर Word दस्तावेज़ में बस सभी का चयन करने के लिए CTRL + A पर जाएं और सभी लिंक अपडेट करने के लिए F9 दबाएं दुर्भाग्य से मैं डब्ल्यू नहीं था कोड को संस्कार करें ताकि मैं आपको बिल्कुल नहीं बता सकूं कि यह ईए से कैसे प्रकाशित हुआ है। मुझे लगता है कि कुछ जावा कोड हैं जो सिर्फ ईए सर्वर को चुनाव करते हैं और यदि यह परिवर्तनों का पता लगाता है तो सब कुछ बेकार हो जाता है।

+0

यह दिलचस्प है, मुझे लगता है कि दूर लेना यह है कि कम से कम कुछ जावा एपीआई हम उपयोग कर सकते हैं। हालांकि, हम एक ईए सर्वर नहीं चला रहे हैं - केवल स्टैंड अकेले ऐप। –

1

वीबीस्क्रिप्ट वास्तव में एक आसान और त्वरित संभावना है। मैंने एक छोटी सी लिपि निकाली जो एक आरेख निर्यात करने की अनुमति देता है। आपको केवल इतना ही पता होना चाहिए कि यह 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

अच्छी शुरुआत। लेकिन एक ही समय में सभी आरेखों को निर्यात करने का एक तरीका आवश्यक होगा। यह एक वीबीए स्क्रिप्ट का उपयोग करना संभव होना चाहिए। – Martin

संबंधित मुद्दे