Obtener Diagramas |
Superior Previo Próximo |
Utilice esta interfaz para recuperar información sobre un diagrama - incluyendo, nombre, tipo, características y una lista de elementos dentro del diagrama. Esta interfaz requiere que pase un identificador de diagrama (GUID) - generalmente recuperado desde la interfaz EnumDiagrams, y devuelve un documento XML detallando los atributos del diagrama.
La interfaz está definida como GetDiagram(const VARIANT FAR& DiagramGUID)
Un ejemplo del XML devuelto por esta interfaz:
<Document xmlns:UML="omg.org/UML1.3"> <Diagram> <UML:Diagram name="Overview" xmi.id="EAID_DA388E78_CF6B_4331_932A_565F1AADE18A" diagramType="UseCaseDiagram" owner="owner" toolName="Enterprise Architect 2.5"> <UML:ModelElement.taggedValue> <UML:TaggedValue tag="documentation" value="This diagram provides an overview of the Customer's available activities in the proposed system - from logging on to browsing the book store, selecting items and making purchases." /> <UML:TaggedValue tag="version" value="1.0" /> <UML:TaggedValue tag="author" value="Geoffrey Sparks" /> <UML:TaggedValue tag="created_date" value="6/30/2001" /> <UML:TaggedValue tag="modified_date" value="6/30/2001" /> <UML:TaggedValue tag="package" value="EAPK_508A37AC_5B27_4b98_8BBE_81D6AA03E8B4" /> <UML:TaggedValue tag="documentation" value="This diagram provides an overview of the Customer's available activities in the proposed system - from logging on to browsing the book store, selecting items and making purchases." /> <UML:TaggedValue tag="type" value="Use Case" /> <UML:TaggedValue tag="EAStyle" value="ShowPrivate=1;ShowProtected=1;ShowPublic=1;HideRelationships=0;Locked=0;Border=1;HighlightForeign=1;PackageContents=1;SequenceNotes=0;ScalePrintImage=0;DocSize.cx=826;DocSize.cy=1169;ShowDetails=0;Orientation=P;Zoom=100;ShowTags=1;OpParams=1;" /> </UML:ModelElement.taggedValue>
<UML:Diagram.element> <UML:DiagramElement geometry="Left=32;Top=49;Right=222;Bottom=125;" subject="EAID_942CA067_D717_433d_85DB_87A4A4B28660" seqno="1" /> <UML:DiagramElement geometry="Left=124;Top=411;Right=367;Bottom=499;" subject="EAID_D4597C98_506F_421a_AC73_75E9B3619602" seqno="2" /> <UML:DiagramElement geometry="Left=291;Top=207;Right=336;Bottom=297;" subject="EAID_2F73E1ED_B7E2_4ce4_8758_02223B6C17B2" seqno="3" /> <UML:DiagramElement geometry="SX=0;SY=0;EX=0;EY=0;" subject="EAID_4E742B84_D86E_4e37_B91C_8D3E25299646" style="Mode=1;;Hidden=0;" /> <UML:DiagramElement geometry="SX=0;SY=0;EX=0;EY=0;" subject="EAID_0D03CF69_61BF_4041_9CD8_540901F171F9" style="Mode=1;;Hidden=0;" /> </UML:Diagram.element> </UML:Diagram> </Diagram> </Document>
El siguiente código Visual Basic muestra el uso de esta interfaz
Private Sub GetDiagram(DiagramGUID As String) On Error GoTo errDiagram
'obtiene un diagrama del modelo - incluye 'todos los atributos y valores etiquetados
Dim xmlNode As MSXML2.IXMLDOMNode Dim xmlDiagram As New MSXML2.DOMDocument Dim xmlDoc As New MSXML2.DOMDocument Dim xmlTagged As MSXML2.IXMLDOMNode Dim xmlElement As MSXML2.IXMLDOMNode
Dim n As Integer
EAProject.PutDiagramImageOnClipboard DiagramGUID, 0
xmlDiagram.loadXML EAProject.GetDiagram(DiagramGUID)
' Debug.Print xmlDiagram.xml
Set xmlNode = xmlDiagram.selectSingleNode("Document/Diagram")
'va al primer elemento - será el diagrama actual (ej. UML:StateChart) Set xmlNode = xmlNode.firstChild()
AddToDebugList "---------------------------" AddToDebugList xmlNode.nodeName
'obtiene primero atributos For n = 0 To xmlNode.Attributes.length - 1 AddToDebugList xmlNode.Attributes.item(n).nodeName + " =: " + xmlNode.Attributes.item(n).Text Next n
'luego obtiene valores etiquetados Set xmlTagged = xmlNode.selectSingleNode("UML:ModelElement.taggedValue/UML:TaggedValue") Do While (Not xmlTagged Is Nothing) AddToDebugList xmlTagged.Attributes(0).Text + " =: " + xmlTagged.Attributes(1).Text Set xmlTagged = xmlTagged.nextSibling Loop
'ahora obtiene los elementos del diagrama Set xmlElement = xmlNode.selectSingleNode("UML:Diagram.element/UML:DiagramElement") Do While (Not xmlElement Is Nothing) 'obtiene primero los atributos AddToDebugList "... Diagram Element ..." For n = 0 To xmlElement.Attributes.length - 1 AddToDebugList xmlElement.Attributes.item(n).nodeName + " =: " + xmlElement.Attributes.item(n).Text Next n Set xmlElement = xmlElement.nextSibling Loop
Exit Sub
errDiagram: AddToDebugList "ERROR: " + Error$
End Sub |