Buscar en este blog
viernes, 17 de julio de 2015
Publicar un servicio intermedio .Net para comunicar AIF Dynamics Ax con Java
Me he topado con la no grata sorpresa que para consumir servicios de dynamics Ax 2012 R2 mediante lenguajes distintos a .Net como Java o PHP, la única solución viable es que se ponga un servicio intermedio de .Net que si exponga el wsdl como lo necesitan las distintas plataformas. La razón? que Java o PHP necesitan que se exponga el xsd dentro del wsdl y de momento esto solo lo ofrece .Net, quedando la comunicación como en la figura:
Así que comencemos, supongamos que nuestros servicios en Ax están desarrollados y expuestos, esto lo verificamos desde Administración del sistema –> Configuración –> Services and Application Integration Framework –> Puertos de entrada, en esta pantalla podemos observar la url con la que se expone nuestro servicio y que es la url que vamos a referenciar en nuestro “servicio intermedio” de .Net
Revisamos que podamos ver en el explorador el wsdl que expone la url de Ax
Ahora comenzamos con el servicio intermedio, lo primero es abrir Visual Studio, no hay diferencia si es 2010, 2012 o 2013. Elegimos un nuevo proyecto de tipo WCF –> WCF Web application
En las referencias, agregamos nuestra url del servicio de Ax que vamos a consumir en este servicio intermedio. Click derecho sobre el nodo Service References –> Agregar referencia a servicio… Pegamos nuestra url y vemos los servicios, aquí debemos visualizar los métodos disponibles expuestos por nuestro servicio de Ax, con esto ya agregamos nuestro servicio de Ax al servicio intermedio de .Net.
Después de esto, necesitamos agregar la lógica que reciba los datos de alguna plataforma externa (Java o Php) para enviarlos hacia Ax. En mi caso, en la interfaz de .Net yo expongo un servicio con dos métodos, en uno recibo datos para crear ordenes de venta y en otro recibo el identificador de una orden de venta y regreso el estatus de la misma.
Cada uno con la lógica respectiva. Ahora nos resta publicar el servicio en el IIS para que pueda ser consumido por las distintas plataformas.
Elijo que lo quiero publicar en un sistema de archivos para mandarlo al IIS
En el Target Location, eliges la carpeta del IIS y el sitio donde quieras publicar, lo puedes publicar dentro de Defatul Web Site en un web application nuevo para tus pruebas o si ya tienes un sitio definido lo eliges.
Te regresa la ruta que elegiste a la venta a de perfiles, haces click en el botón “Publicar” y ahora ya abrir el IIS donde vas a ver tu App publicada.
Ahora necesitamos verla en el explorador para saber si esta bien publicada. Si le damos click en Browse. De primera instancia nos aparecería este error: “HTTP Error 403.14 – Forbidden, The web server is configured to not list the contents of this directory.”
Vamos en el IIS a la opción de Directory Exploring y damos doble click para entrar a las propiedades del elemento. Dentro de las propiedades en la barra lateral derecha, esta la opción “Enable”, hacemos click sobre ella.
Si presionas de nuevo “Browse” se abre el explorador ya con el wsdl listo para consumir!
Ahora, este es el wsdl normalito (http://xx.xx.xx.xx/GAELTPortalNet/ServicioNet.svc?wsdl), si lo que buscas es que sea consumido por java, debes poner el xsd en el wsdl, para eso solo cambiamos la ruta agregándole el singlewsdl al final: http://xx.xx.xx.xx/GAELTPortalNet/ServicioNet.svc?singlewsdl
Espero te ayude.
Post que podrían interesarte:
Crear servicio personalizado AIF
Crear documentos asociados a un registro por código (DocuRef)
Teclas rápidas en Microsoft Dynamics Ax 2012
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
sábado, 4 de julio de 2015
Rellenar o incluir caracteres en cadenas con strRFix en Dynamics Ax 2012
Muchas veces necesitamos incluir en nuestras cadenas de texto ciertos caracteres porque requerimos que nuestra cadena cumpla con un formato especifico. Por ejemplo, si queremos que un folio en el que no usamos secuencias tenga una norma de 6 dígitos, necesitamos que cuando el usuario introduzca el número "1" se transforme en "00001".
Para esto tenemos la función strRFix, que se usa:
Y el resultado:
Si quisieras que los ceros los agregara del lado derecho, solo usamos la función strLFix. Por ejemplo:
Y el resultado:
Post que podrían interesarte:
Capturar errores del infolog mediante código x++
Crear documentos asociados a un registro por código (DocuRef)
Teclas rápidas en Microsoft Dynamics Ax 2012
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
Para esto tenemos la función strRFix, que se usa:
static void mascaraFolios(Args _args)
{
int folioSiguiente;
DimensionValue cedisMascara;
str folioMascara,
cedisSalesLine,
folioOriginal,
folioFinal;
cedisSalesLine = "13" ;
folioOriginal = "5" ;
//Modificación para incluir el cedis en el formato del folio
//Se requieren 3 dígitos para cedis
cedisMascara = strRFix(cedisSalesLine, 3 , '0' );
folioSiguiente = str2int(folioOriginal) + 1;
folioMascara = strRFix(int2str(folioSiguiente), 6, '0');
folioFinal = cedisMascara + "-" + folioMascara;
info(folioFinal);
}
Y el resultado:
Si quisieras que los ceros los agregara del lado derecho, solo usamos la función strLFix. Por ejemplo:
static void mascaraFolios(Args _args)
{
int folioSiguiente;
DimensionValue cedisMascara;
str folioMascara,
cedisSalesLine,
folioOriginal,
folioFinal;
cedisSalesLine = "13" ;
folioOriginal = "5" ;
//Modificación para incluir el cedis en el formato del folio
//Se requieren 3 dígitos para cedis
cedisMascara = strLFix(cedisSalesLine, 3 , '0' );
folioSiguiente = str2int(folioOriginal) + 1;
folioMascara = strLFix(int2str(folioSiguiente), 6, '0');
folioFinal = cedisMascara + "-" + folioMascara;
info(folioFinal);
}
Y el resultado:
Post que podrían interesarte:
Capturar errores del infolog mediante código x++
Crear documentos asociados a un registro por código (DocuRef)
Teclas rápidas en Microsoft Dynamics Ax 2012
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo. O comenta si quieres saber sobre algún tema en específico.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
Suscribirse a:
Entradas (Atom)