He tenido que llamar a un servicio web desde una orquestación de biztalk 2004.
- He agregado la referencia web, me ha generado los esquemas perfectamente
(ya que el web service tenía datos complejos, si no no genera los xsd, si solamente tiene datos simples) - He hecho el mapeo para crear el mensaje de llamada al web service.
- He creado el puerto configurado para el servicio web.
- En la orquestación he creado 2 mensajes del tipo ServicioWebRequest y ServicioWebResponse
- También he agregado una “caja” de send y otra de “receive” para enviar y recibir el mensaje hacia y
desde el web service. - He conectado las “cajas” de send y receive con la operación del puerto correspondiente al método web
que quiero llamar.
He compilado, enlazado los puertos y hecho el deploy y hasta aquí todo bien.
Pero el servicio web nunca era llamado desde la orquestación, me daba un problema que en el EventLog
me decía que el mensaje no era correcto y que el adaptador SOAP había suspendido el envío hacia el
servicio web.
Tras muchos “golpes” veo que el puerto está mal creado, entonces:
- Borré el puerto existente para el web service
- He creado el puerto configurado, indicándole que use un tipo de puerto existente
y seleccionando el tipo de puerto web que se correspondía con el web service.
Ok, ahora que tengo esto configurado bien hago el deploy nuevamente (tuve que reiniciar el servicio de
biztalk también)
Peeeero, la llamada al servicio web sigue dando el mismo problema.
Tras otros muchos “golpes” doy con el problema.
El problema en sí es que el mensaje está mal hecho, ya que el esquema del web service indicaba
unos campos “obligatorios” o sea que el minoccurs=1, y estos datos estaban vacíos en el mensaje
que se le enviaba.
Cómo dí con el problema?
Depurando la orquestación cuando llegué al momento del send hacia el servicio web, miro
el mensaje que le envío (busco el valor del part) y lo guardo como xml.
Luego, miré la descripción del web service y noté que esos campos son obligatorios.
Cuanod decido hacer una prueba de validación del esquema, con el archivo xml que guardé,
VOILÁ!!! la validación me da error, pero Visual Studio me dice cual es el problema.
Moraleja : Validar siempre los mensajes con los esquemas, para no tener problemas.
Hola… muy interesante tu información ya que me ha permitido darme cuenta del porque no me genera el .xsd al importar mi servicio web en un proyecto biztalk (no tiene datos complejos), pero el tema es ¿que hacemos en el caso de que el WS no tenga datos complejos?
bueno, cualquiera que quiera compartir información de BTS 2006… via msn o correo…
elquellonino@hotmail.com
Saludos…
Por: Claudio el marzo 6, 2008
a las 2:44 pm