Google Android vs Microsoft Dynamics AX (I)

Desde hace algún tiempo tengo la inquietud personal de investigar una solución móvil para conectar a Microsoft Dynamics AX 2009. Lo aparentemente mas lógico sería intentarlo con Windows Phone 7 pero el entorno Android me parece muy interesante para investigar, así que el proceso de investigación será doble.

Para conectar a AX desde el exterior podríamos optar por una solución “out of the box” como por ejemplo el conector AIF pero ya que este es un proceso de investigación personal (no es una solución real para un cliente por el momento) he decidido implantar “manualmente” todo el proceso según el siguiente esquema:

Android vs AX 2009

El entorno de desarrollo es el siguiente:

Dicho esto, en esta primera parte describiré por encima la construcción de la primera versión del web service en .NET C# ya que en este momento lo mas complicado ha sido configurar todos los componentes para poder comunicarse sin problemas de permisos.

En sucesivas versiones intentaré realizar algún proceso mas complejo
desde android, conforme avance en el desarrollo de esta plataforma en la
que soy totalmente novato.

La instalación de AX 2009 no tiene, de momento, ningún componente particular. Es una instalación normal configurada para ser utilizada mediante el .NET Business Connector

Respecto al web service, parto de un servicio muy sencillo que sirve sólamente para validar que la comunicación se está realizando con éxito, éste es el código:

using System;
using System.Net;
using System.Web;
using System.Web.Services;

using Microsoft.Dynamics.BusinessConnectorNet;

namespace jaee.ax.ws
{
    ///
    /// Servicio Web de conexión AX
    ///
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string Prueba()
        {
            Microsoft.Dynamics.BusinessConnectorNet.Axapta ax;
            NetworkCredential nc = new NetworkCredential("USUARIO", "PASSWORD", "DOMINIO");

            string labelId = "@SYS53716";
            object res = null;

            try
            {
                ax = new Axapta();
                ax.LogonAs(nc.UserName, nc.Domain, nc, null, null, null, null);
            }
            catch (Exception e)
            {
                return String.Format("Error en login: {0}", e.Message);
            }

            try
            {
                res = ax.CallStaticClassMethod("SysLabel", "labelId2String2", labelId);
            }
            catch (Exception e)
            {
                ax.Logoff();
                return String.Format("Error en CallStaticClassMethod: {0}", e.Message);
            }

            ax.Logoff();

            return String.Format("El texto correspondiente a la label {0} es: {1}.", labelId, res.ToString());
        }
    }
}

En este ejemplo sólo tenemos un método Prueba que usaremos para validar que la conexión se realiza correctamente. Pedimos a AX solamente la “traducción” de una etiqueta para validar que está procesando la petición.

Y el resultado esperado desde el emulador de Android:

Android vs AX 2009

En la siguiente entrega publicaré el código de android para algún resultado mas complejo. Pero eso será a la próxima …

CONTINUACIÓN

  • Google Android vs Microsoft Dynamics AX (II)
  • 3 comentarios
    • jaestevan
      diciembre 7, 2012

      I don’t have any tutorial but IMHO there is no way to connect from Android other than using web services. You can use built in AX services if you use AX 2012, or develop your own services if using AX 2009.

    • Ariston Javier
      diciembre 6, 2012

      Hi,

      Do you have any tutorial how Android Phone connect to AX AOS

    • Helios
      marzo 23, 2011

      Muy buen post. Espero poder sacar algo de tiempo y probar la conexión.

      Espero también que sigas posteando sobre el tema