¿Integración con Microsoft Dynamics AX? (I)

Muchas son las veces que en los diferentes proyectos que nos solicitan o en los que participemos nos debemos integrar con el ERP del cliente.

En ocasiones esta fachada para podernos integrar nos puede venir preparada y en otras ocasiones no. Dada la complejidad de un ERP y la de multitud de procesos que puede llevar a cabo para simplemente guardar un cliente, se desaconseja hacer operaciones de escritura en sus DB de SQL directamente.

Por este motivo y también por seguridad para todos, en Microsoft Dynamics AX, existen diferentes mecanismos de integración,

–  Services and Application Integration Framework (AIF): Expone la lógica de negocio interna a sistemas externos para que pueda ser consumida mediante servicios de Windows Communication Foundation (WCF).

–  .NET Business Connector: Mediante la librería permite a otras aplicaciones obtener y enviar datos además de poder usar la lógica de negocio.

–  .NET Framework: Con su integración con X++, permite llamar a ensamblados manejados por el CLR y proviene de clases generadas con C# o VB para ser usadas desde X++. Estas clases las debes generar con Microsoft Visual Studio.

En este primer capítulo explicaremos cómo crear una librería para que esta pueda ser usada posteriormente desde AX.

Desde AX, si eres programador, vas a usar X++ para escribir las diferentes instrucciones que necesites para poder implementar la lógica de negocio dentro del ERP y una vez realizadas las diferentes operaciones, deberás devolver un resultado.
Para los sistemas externos que se quieren integrar con el ERP, y más en la actualidad dónde todo lo que es tipado es mucho más simple de manejar, es muy probable que se te solicite que los datos que devuelvas sean objetos de .NET.

Lo primero que necesitáis, además del método desarrollado en X++, es tener la librería de objetos a devolver. Para ello lo primero que debemos hacer, es desarrollar esta librería en Visual Studio con C# o VB. En ella definiremos los objetos POCO que se usarán simplemente cómo objetos de transferencia de objetos (Si, DTO’s).
Si usas Microsoft Dynamics AX 2009 debes usar el Framework 2.0 y si usas Microsoft Dynamics AX 2012 debes usar el Framework 4.0.

Como veis tan solo se trata de crear una nueva biblioteca de clases con la definición de objetos que necesitemos con sus propiedades  get y set. Dada mi experiencia con estos sistemas, os aconsejo que hagáis heredar todas las clases de intercambio de datos de otra clase  para que esta pueda contener códigos de error, mensajes de error o mensajes informativos. Esto es debido a que el manejo con la primera forma que veremos de hacer la integración devuelve excepciones de la propia librería  pero no puede especificar errores personalizados de la lógica de negocio, por ejemplo en un método de autentificación, informar de un error  personalizado con código “10001” que signifique que la contraseña es incorrecta, de ahí, la clase propuesta de ResultData.

DataExchange_Solution

Una vez tengamos la librería realizada la debemos compilar y desde el AOT de AX agregar esta referencia.
Es muy importante que esta librería para que pueda ser cargada correctamente se registre en el GAC de los ensamblados de Windows  y se firme con una clave segura para garantizar la existencia única de la misma.

Custom_Reference

Posteriormente, para usar la misma deberemos ir al AOT en nuestras Classes y crear una Nueva Class poniendo su declaración cómo  public.

Custom_Class

Por último, dentro, crearemos un método llamado GetCustomer que hace uso de nuestra DLL de .NET desde dentro de X++.

Custom_Method

Está claro que dentro de este método deberemos realizar la lógica de negocio que necesitemos para devolver el cliente o incluso pasar parámetros.

¿Fácil verdad?
En el próximo capítulo veremos cómo llamar este método desde .NET mediante el Business Connector.

3 pensamientos en “¿Integración con Microsoft Dynamics AX? (I)

  1. Pingback: Integración con Microsoft Dynamics AX a través de .NET | francesc jaumot

  2. florentino

    Al momento de generar el código en la clase de AX me marca error me dice “Error de sintaxis ” si agregó como tipo de dato de retorno: DataExchange.Customer en la definición del método.

    Saludos

  3. Francesc Autor

    Hola Florentino,
    Si te devuelve este error es que estas poniendo código .NET dentro de AX, correctamente DataExchange.Customer. Recuerda que en AX debes trabajar con X++ y devolver el tipo básico y, posteriormente en .NET, hacer la conversión.
    Ya me dirás!
    Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada.