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

En mi anterior post, os explicaba las diferentes opciones que tenemos para poder conectar con Microsoft Dynamics AX. En esta ocasión, y siguiendo el hilo, nos centraremos en ver cómo podemos hacer eso con el .NET Business Connector que no es mas que una librería que nos permite acceder a AX.

Para poder hacer uso de este conector deberemos proceder a realizar la instalación del BC en la maquina cliente de dónde vamos a desarrollar y en la máquina de dónde vamos a desplegar nuestro software. Si debemos desplegar un software cliente/servidor la comunicación debería ser a través de WCF y centrar toda la conexión hacía AX desde el servicio web en caso contrario, si nuestro software esta hospedado en un IIS por ser entorno web, el propio IIS es quien hará la conexión hacía AX. El entorno, en este caso, es muy importante y debemos tener este en cuenta antes de realizar cualquier solución conectada con AX pues el Business Connector tan solo funciona con un usuario del Active Directory desde dentro del dominio del Active Directory, de otra forma, no encontraría la instancia de AOS con la que trabaja Microsoft Dynamics AX.

Al momento de realizar la instalación en la parte del servidor, teniendo en cuenta que la instalación de Dynamics esta realizada correctamente y sobretodo el Active Directory configurado en modo nativo. Por defecto la instalación del Business Connector en el servidor de AX ha creado un usuario domain\bcproxy. Es recomendable indicar a este usuario que su contraseña no caduque nunca.

Si procedemos a realizar la instalación en el servidor o bien en el ordenador de desarrollo deberemos instalar el siguiente cliente,

Install_BC_AX

 

 

 

 

 

 

 

Si nuestra aplicación es una aplicación web, deberemos añadir la cuenta proxy al grupo local de Windows IIS. Si estás usando el BC desde SharePoint, deberás agregar la cuenta al grupo local de Windows SharePoint y así, con todos los diferentes grupos que tengas y que quieran conectar con AX desde un IIS de la misma red y dominio dónde esta instalado el AX. El usuario debe estar configurado en el Application Pool que queramos usar.

El último paso es configurar el usuario de negocios de proxy de conector dentro de la configuración AX para asegurarnos que tiene el usuario correctamente y el AOS funcionará correctamente,
1. Inicio Microsoft Dynamics AX (Inicio> Todos los programas> Microsoft Dynamics> Microsoft Dynamics AX)
2. Abra el cuadro de diálogo de negocios de proxy de conector: Administración> Configuración> Seguridad> Business Connector Proxy.
3. En el cuadro Alias​​, escriba el alias. En el cuadro de dominio de red, introduzca el dominio del usuario y luego cerrar el cuadro de diálogo.

Ahora ya lo tenemos todo, tenemos el BC instalado en la parte cliente, el BC configurado dentro de AX y el identity en el application pool para conectar con el AX en caso que sea web o bien sea un WCF. Para poder probar si todo va bien, en la máquina cliente, instala un script de power shell dónde podréis ver toda la información de vuestra instalación. Lo puedes descargar en el siguiente enlace PS BC. Si lo ejecutamos lo que veremos es el nombre de nuestro AOS y los datos de ejemplo,

BC_PS

 

 

 

 

Si esto funciona significa que desde el servidor dónde desplegaremos nuestra aplicación hasta la instancia de AOS, todo esta funcionando correctamente.
En nuestro anterior post hemos creado una clase que es la que nos servirá de intercambio entre Microsoft Dynamics y .NET a través del Business Connector.

En esta misma solución lo que haremos será agregar la librería Microsoft.Dynamics.BusinessConnectorNet.dll que se encuentra en C:\Program Files\Microsoft Dynamics AX\50\BusinessConnector\Bin en el caso de 64 bits o Program Files (x86) en el caso de 32 bits. Perfecto, ahora escribiendo unas pocas líneas de C# o de VB, podremos consumir nuestro método de AX.

using System;
using Microsoft.Dynamics.BusinessConnectorNet;
using DataExchange;

namespace ConsoleForAx
{
    class Program
    {

        static void Main(string[] args)
        {
            Axapta axClient = null;
            axClient = new Axapta();
            axClient.Logon(null, null, null, null);
            object customerResult = axClient.CallStaticClassMethod("DataExchange", "GetCustomer");
            axClient.LogOff();
            Customer cust = (Customer)customerResult;

            Console.WriteLine(cust.Name);
            Console.WriteLine(cust.Nif);
            Console.WriteLine(cust.Email);

            Console.ReadLine();
        }
    }
}

Por orden, tendremos el nombre de la clase de AX, el nombre del método a llamar de AX y por último simplemente obtenemos el objeto customerResult.
Si os fijáis en ningún momento hago ningún parser entre AX y .NET si no que el BC ya se encarga de obtener los datos de AX y devolver la clase de .NET cómo object y lo único que debemos hacer es indicar que nos convierta este object a un objeto conocido cómo Customer.

Aquí podéis obtener todo el código fuente de estos dos post; AX_Integration_NET.

Ya hemos realizado una pequeña integración entre Microsoft Dynamics y .NET :) Espero que os haya gustado y en el siguiente veremos cómo consumir listados y devolver los mismos a través del BC.

Deja un comentario

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