Para consumir un servicio web o WCF desde biztalk se debe realizar los siguientes pasos:
En un proyecto Biztalk hacer click derecho, seleccionar “Add” y hacer click en la opción Add Generated Items
Una vez realizada la anterior operación, aparece una ventana emergente para agregar el ítem que se desea generar, se selecciona la opción “Consume WCF Service” y click en el botón “Add”.
Después de hacer click sobre el botón “Add”, se presenta una ventana wizard en dos formas para el consumo del servicio web, así:
-
La primera opción “Metadata Exchange (MEX) endpoint” opera si se tiene y se puede acceder a la URL del servicio web o del WCF.
-
La segunda opción “Metadata Files (WSDL and XSD)”, aplica cuando se tiene el WSDL del servicio web o WCF, para los casos en que éste haga referencia a esquemas adicionales se deben adicionar éstos también.
Para nuestro ejemplo se selecciona la opción “Metadata Exchange (MEX) endpoint”, y se hace click sobre el botón “Next >”
Posteriormente se escribe la URL del servicio web o WCF y se hace click en el botón “Get”, luego de un momento se carga el servicio web y se habilita el botón “Next >”.
A continuación, se escribe el namespace del servicio y se hace click en el botón “import >>“
Una vez se ha finalizado la importación del servicio web o WCF, se crean archivos dependiendo del wsdl, en este caso genera, dos XML (la diferencia de estos dos es el tipo de transporte WCF-BasicHttp y WCF-Custom) que contienen el bindings del puerto que se comunica con el servicio web o WCF y XSD que son los contratos de los objetos que puede tener el servicio web o WCF y la orquestación que contiene los multi-part message types y Port types que se obtuvieron del servicio web o WCF
Para probar la invocación del servicio web o WCF, se crea una orquestación que está compuesta por un Receive Port (puerto de entrada), dos send Port(Servicio Web o WCF) y una transformación (Mapa que contiene esquema personalizado con el esquema de request del Servicio Web o WCF).
Después de hacer el Deploy de los artefactos (orquestaciones, mapas, esquemas) para crear el send port del servicio, se abre la consola administradora de BizTalk Server, en la aplicación donde se hizo el despliegue de los artefactos mencionados anteriormente, se hace clic derecho se selecciona “Import” y luego se hace clic sobre “Bindings”
Aparece una ventana emergente y se busca el binding que se generó al importar el servicio web o WSDL, una vez seleccionado se da clic en el botón “Open”.
Luego se va a los Send Port y se busca el puerto que consume el servicio Web o WCF.
La orquestación arranca con un puerto de entrada tipo file para este ejemplo la estructura es:
La respuesta que se obtiene con la invocación del WCF es:
NOTA: No siempre cuando se importa un WCF o un servicio web se obtiene el Send Port Físico que se comunica con el servicio, para estos casos lo que se debe hacer es crear el send Port desde la consola administrador BizTalk. Se debe tener en cuenta es Transport type, Address (URI) y el action.
Para armar el SOAP action, se debe tener la siguiente estructura:
<BtsActionMapping xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<Operation Name=”Nombre del método del servicio” Action=”ruta del método en el WSDL del servicio” />
<Operation Name=”consultarPersonaByIdentificacion” Action=”http://tempuri.org/IPersonas/consultarPersonaByIdentificacion” />
</BtsActionMapping>