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