lunes, 12 de septiembre de 2011

Herramienta de Ingeniería Reversa en Dynamics AX

Navegando por internet encontre información muy interesante acerca de la herramienta de ingeniería reversa que tiene MS Dynamics AX, espero que les guste. :)
--------------------------------------------------------------------------------------------------
Microsoft Dynamics AX dispone de una muy buena herramienta de ingeniería inversa gracias a la cual podemos visualizar un modelo de datos u objetos de la aplicación en UML y ERX.


Generando Modelos y Archivos ERX
La herramienta de ingeniería inversa puede generar un modelo UML de datos u objetos o un archivo .erx para elementos de aplicación desde un proyecto privado o compartido o incluso desde una perspectiva. Si se desea utilizar proyectos privados o compartidos lo primero es crear el proyecto y llevar los elementos, que tu deseas modelar, al proyecto.

Modelo UML de Datos y Objetos
Bien, como ya hemos mencionado la herramienta de ingenería inversa puede crear los siguientes tipos de modelos de datos:
  • Modelo de Datos UML: este modelo nos provee una representación visual de los metadatos de las tablas y de las relaciones y vistas. Este modelo contiene una clase por cada tabla y vista. Esta clase captura los atributos y asociaciones, así como tambien los tipos de datos de los campos, índices, y relaciones. Para crear un modelo de datos UML en Visio debemos seguir los siguientes pasos:
    • En el ciente de Microsoft Dynamics AX, en la barra de menú, seleccionar Herramientas, luego Herramientas de desarrollo y luego hacer clic en Ingeniería inversa. El cuadro de dialogo de Ingeniería inversa se abrirá.
    • Seleccionamos Modelo de datos UML de Visio.
    • Seleccionamos el tipo de ítem desde el que deseamos generar nuestro modelo, estos pueden ser: Proyecto privado, Proyecto compartido, o Perspectiva, y seleccionamos los ítems desde la lista desplegable.
    • Si deseamos cambiar el nombre o la ruta de alojamiento del archivo, hacemos clic en ícono de la carpeta, y especificamos un nombre y una dirección para el archivo.
    • Hacemos clic en OK.
    • Despues de que el modelo de datos es creado, Visio se abrirá y ya contendrá todos los elementos UML con el diagrama en blanco. Usando el explorador de modelo arrastramos los elementos del modelo al diagrama.
  • Modelo de Objetos UML: este modelo nos provee una representación visual de los metadatos de clases, interfaces, vistas, tablas y relaciones. Un modelo de objeto contiene una clase para cada clase, vista, tablas e interfaces para cada interfaz de Microsoft Dynamics AX. Este modelo capatura atributos, así como tambien referencias a tablas y clases, extended data type, base enums, y tipos de datos nativos. El modelo tambien contiene cualquier clase que se extienda de otra clase, clases que son implementadas en las intefaces, y clases que son llamadas por otras. Para crear un modelo de objetos UML en Visio debemos seguir los siguientes pasos:
    • En el cliente de Microsoft Dynamics AX, en la barra de menú, seleccinar Herramientas, luego Herramientas de desarrollo y luego hacer clic en Ingeniería inversa. El cuadro de dialo de Ingeniería inversa se abrirá.
    • Seleccionamos Modelo de Objetos UML de Visio.
    • Seleccionamos el tipo de ítem desde el que deseamos generar nuestro modelo, estos pueden ser: Proyecto privado, Proyecto compartido, o Perspectiva, y seleccionamos los ítems desde la lista desplegable.
    • Si deseamos cambiar el nombre o la ruta de alojamiento del archivo, hacemos clic en ícono de la carpeta, y especificamos un nombre y una dirección para el archivo.
    • Hacemos clic en OK.
    • Despues de que el modelo de objetos es creado, Visio se abrirá y ya contedrná todos los elementos UML con el diagrama en blanco. Usando el explorador de modelo arrastramos los elementos del modelo al diagrama.
En resumen, los siguientes elementos son incluidos en los diagramas UML:
  • Modelo de Datos
    • Tablas
    • Propiedades de los grupos de tablas
    • Campos
    • Campos con información indexada
    • Todos los extended data type
    • Todos los base enums
    • Todos los tipos de datos X++
    • Todas las tablas referenciadas
    • Vistas
    • Campos de vistas
  • Modelo de Objetos
    • Tablas
    • Campos
    • Métodos
    • Parámetros de métodos
    • Clases
    • Todos los extended data type
    • Todos los base enums
    • Todos los tipos de datos X++
    • Todas las referencias a tablas y clases
    • Vistas
    • Campos de vistas
Aqui les dejo un ejemplo para generar en visio un diagrama Entidad Relación, basado en objetos existentes en AX, utilizando el formato ERX de ERwin.
Para facilitar el ejemplo creamos un nuevo proyecto e incluimos algunas tablas con la función Ordenación/filtro avanzados. Se incluira todas las tablas que empiezan por InventDim

Con esto se genera un proyecto razonablemente pequeño.

Ahora vamos a la opción de menú:
Herramientas > Herramientas de desarrollo > Utilizar técnicas de ingeniería inversa
Configuramos un destino para el fichero exportado, elegimos la opción de formato ERX y buscamos el proyecto que acabamos de guardar para decirle al sistema qué objetos debe exportar.

A partir de aquí trabajamos con Microsoft Office Visio, en mi caso con la versión 2007. Vamos a crear un nuevo diagrama de modelo de bases de datos:


Al crear un diagrama de este tipo, visio nos habilita el menú Base de datos > Importar > Importar archivo ERX de ERwin. Buscamos el fichero exportado por AX y Aceptar.
Visio nos incluirá todas las tablas en la ventana Tablas y vistas (Menú Base de datos > Ver > Tablas y vistas). Desde aquí se pueden seleccionar las tablas que se quiera y arrastrarlas directamente al diseño:
Y eso es todo:



Saludos.

2 comentarios:

  1. Hola

    Es justo lo que estaba buscando para conocer las "tripas" de AX pero me atasco con el siguiente error en el paso dos.

    "El argumento no esta definifdo como una instancia de tipo de nodo de árbol"

    ¿Alguna pista?

    Gracias

    Iñigo

    ResponderEliminar
  2. Hola, le has dado la jerarquia como esta en la imagen data_diccionary, tables?

    ResponderEliminar