Trucos y Trampas [Guía de Usuario de Enterprise Architect]

Top Previous Next

Trucos y Trampas

button_main button_prev button_next

Temas

Tema

Detalle

Ver También

Notas de Usuario de Visual Basic 5/6

Los usuarios de Visual Basic 5/6 deberían notar que el número de versión de la interfaz de Enterprise Architect es almacenado en el archivo de proyecto VBP de una manera similar a la siguiente:

 

Reference=*\G{64FB2BF4-9EFA-11D2-8307-C45586000000}#2.2#0#..\..\..\..\Program Files\Sparx Systems\EA\EA.TLB#Enterprise Architect Object Model 2.02

 

Si experimenta problemas pasando de una versión de Enterprise Architect a otra, abra el archivo VBP en un editor de texto y elimine esta línea. Luego abra el proyecto en Visual Basic y utilice Referencias de Proyecto para crear una nueva referencia al modelo de Objeto de Enterprise Architect.

 

 

Los Add-In no se Cargan

Desde el lanzamiento de Enterprise Architect 7.0, los Add-Ins creados antes del 2004 ya no son soportados. Si un Add-In se suscribe a la interfaz Addn_Tmpl.tlb (estilo 2003), no se carga. En este evento, póngase en contacto con el vendedor o con el autor del Add-In y solicite una actualización.

 

 

Guardando Información de Estado

Es posible para un Add-In guardar información de estado, significando que esos datos pueden ser almacenados en variables de miembros en respuesta a un evento y recuperado en otro. Hay algunos peligros de hacer esto:

Los Objetos de Automatización de Enterprise Architect no se actualizan a ellos mismos en respuesta a la actividad del usuario, a la actividad en otras estaciones de trabajo, o incluso a las acciones de otros objetos en el mismo cliente de automatización; retener los manejadores de tales objetos entre llamadas puede resultar en que el segundo evento consulte objetos que no tienen relación con el estado actual de Enterprise Architect

Cuando cierra Enterprise Architect, se les pide a todos los Add-Ins que se apaguen; si hay algunos clientes de automatización externa Enterprise Architect debe mantenerse activo, en cuyo caso todos los Add-Ins se vuelven a cargar, perdiendo todos los datos

Enterprise Architect actuando como un cliente de automatización no se cierra si un Add-In todavía le mantiene una referencia (liberando todas las referencias en el evento Disconnect() evita este problema)

 

Se recomienda que, a no ser que haya una razón específica para hacerlo, el Add-In debería utilizar el parámetro de repositorio y su método y propiedades para proporcionar los datos necesarios.

 

 

Enterprise Architect No Cierra

Problemas Específicos de .NET

La Automatización revisa el uso de objetos y no permitirá que ninguno de ellos se destruya hasta que ya no estén siendo utilizados.

Como se establece en el tema de Interfaz de Automatización, si su controlador de automatización fue escrito utilizando el marco de trabajo .NET, Enterprise Architect no se cierra incluso después de que le suelte todas sus referencias. Para forzar el lanzamiento de los punteros COM, llame a las funciones de administración de memoria como se muestra abajo:

 

GC.Collect();

GC.WaitForPendingFinalizers();

 

Además, ya que los clientes de automatización se engancha en Enterprise Architect, que crea Add-Ins que a su vez se enganchan devuelta a Enterprise Architect, es posible entrar en una situación de bloqueo donde Enterprise Architect y los Add-Ins no se van a soltar y se mantienen mutuamente activos. Un Add-In podría retener ganchos hacia Enterprise Architect ya que:

Mantiene una referencia privada en un objeto de Enterprise Architect (vea Guardar Información de Estado arriba), o

Ha sido creado por .NET y el mecanismo GC no ha alcanzado a lanzarlo

 

Hay dos acciones requeridas para evitar situaciones de bloqueo:

Los Controles de Automatización deben llamar Repository.CloseAddins() en algún punto (presumiblemente al final del procesamiento)

Los Add-Ins deben lanzar todas las referencias a Enterprise Architect en el evento Disconnect(); vea el tema Eventos Add-In para detalles

 

Es posible que su cliente de Automatización controle una instancia en ejecución de Enterprise Architect donde los Add-Ins no han compilado con la regla de arriba. En este caso podría llamar Repository.Exit() para finalizar Enterprise Architect.

 

Misceláneo

Al desarrollar Add-Ins utilizando el marco de trabajo .Net debe seleccionar la Interoperabilidad COM en las propiedades del proyecto para que pueda ser reconocido como un Add-In.

Algunos entornos de desarrollo no registran COM DLLs automáticamente cuando se cran. Puede que tenga que hacerlo manualmente antes de que Enterprise Architect reconozca el Add-In.

Puede utilizar su clave de Add-In privada (como es requerido para el despliegue del Add-In) para almacenar información de configuración pertinente a su Add-In.

 

Interfaz de Automatización

Guardando Información de Estado

Eventos Add-In

Llamadas Simultáneas

En los lanzamientos de Enterprise Architect superiores al 7.0, hay una posibilidad de que Enterprise Architect pudiera llamar a dos métodos del Add-In simultáneamente si el Add-In llama:

Una caja de mensaje

Una ventana modal

VB DoEvents, Aplicación .NET DoEvents o el equivalente en otros lenguajes

 

En tales casos, Enterprise Architect podría iniciar un segundo método del Add-In antes de que el primero vuelva (re-entrada). En el lanzamiento 7.0. y los lanzamientos siguientes, Enterprise Architect no puede hacer tales llamadas simultáneas.

Si está desarrollando Add-Ins, asegúrese de que los usuarios de Add-In están ejecutando el lanzamiento 7.0 de Enterprise Architect o un lanzamiento posterior para evitar cualquier riesgo de llamadas de métodos simultáneos.