Altova MapForce 2023 Enterprise Edition

Este ejemplo explica cómo crear un servicio web SOAP en MapForce. El proyecto de asignación creado en este ejemplo también está disponible en la siguiente ruta: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\Query Person database.mfp. El servicio web de este ejemplo tiene los siguientes objetivos:

 

obtener de una BD SQLite en un servidor un conjunto de registros que cumplan con cierto criterio de búsqueda, mediante una solicitud SOAP. (La consulta se introduce en el momento de la ejecución en el cliente y luego se envía al servidor. Entonces el servidor devuelve una respuesta XML con los resultados de la búsqueda.)

insertar nuevos registros en la BD SQLite, también con solicitudes SOAP. (Los detalles de la persona se incluyen en la solicitud SOAP. Si funciona, el servidor devuelve una confirmación de que los detalles de la persona se han añadido correctamente a la BD.)

 

Tenga en cuenta lo siguiente:

 

el proceso de crear un servicio web en MapForce no depende del lenguaje de programación de destino; es el mismo al generar servicios web Java o C#. Las diferencias aparecen solo al compilar e implementar el servicio web en el servidor web, como se explica más adelante en esta documentación.

para generar una solicitud SOAP de prueba para previsualizar el resultado de la asignación, este ejemplo usa XMLSpy Enterprise Edition. El archivo WSDL de origen de este proyecto de MapForce también se creó con XMLSpy (y se puede validar con él). También es posible diseñar servicios web en MapForce sin XMLSpy; sin embargo, en este caso necesitará un cliente SOAP capaz de generar solicitudes SOAP a partir de archivos WSDL.

 

Crear un proyecto de servicio web

Como hemos explicado antes, para crear un servicio web con MapForce se necesita un archivo WSDL. En este ejemplo usaremos un archivo WSDL que se creó con XMLSpy Enterprise Edition. En la imagen siguiente se puede ver la estructura tal y como aparece en la vista WSDL de XMLSpy. Lo que queremos resaltar de esta imagen es que en esa estructura se definen dos operaciones (getPerson y putPerson), que se corresponden con los dos objetivos enumerados más arriba.

mff_soap_wsdl_view

 

Nota:el archivo WSDL debe ser válido para que pueda usarlo para crear un servicio web de MapForce.

 

Para crear un proyecto de servicio web a partir de este servicio web, siga estos pasos:

 

1.En el menú Archivo, haga clic en Nuevo y seleccione "Proyecto de servicio web".

mff_soap_new_project

2.Navegue hasta el archivo query.wsdl, que encontrará en la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\. Después de seleccionar el archivo WSDL, MapForce rellena automáticamente el resto de los campos.

mff_soap_insert_wsdl

3.Haga clic en Aceptar.

4.Cuando la aplicación lo solicite, introduzca el nombre del nuevo proyecto WSDL y haga clic en Guardar.

 

La ventana Proyecto muestra el proyecto y el nombre WSDL, además de las operaciones definidas en el archivo WSDL. Las dos operaciones son getPerson y putPerson.

mff_soap_ws_project

 

Diseñar la operación "getPerson"

 

En la ventana Proyecto, haga doble clic en el archivo getPerson.mfd para cargar el contenido del mismo en el panel principal. El componente getPersonSoapIn contiene la consulta (elemento) que se usará para consultar la BD mediante el servicio web. El componente getPersonSoapOut contiene la estructura Person, que está definida en el archivo WSDL.

mff_soap_getPerson1

En el menú Insertar, haga clic en Base de datos y añada al área de asignación la siguiente base de datos SQLite: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\people.sqlite. La BD contiene solo una tabla, Persons, cuyos campos se corresponden con los del componente getPersonSoapOut. Para más información sobre cómo añadir bases de datos como componentes de una asignación, consulte el apartado Bases de datos en MapForce.

mff_soap_getPerson2

Dibuje las conexiones entre componentes como se muestra a continuación:

mff_soap_getPerson3

El diseño de la asignación anterior todavía no está completo, pero ilustra claramente lo que pasará en tiempo de ejecución. La conexión entre part:Query y part:Result representa la llamada al servicio web. El elemento part:Query del componente getPersonSoapIn es el marcador de posición de la consulta (es donde se introduce la cadena de la consulta en el cliente SOAP). Las conexiones entre la tabla de BD y el elemento Person del componente getPersonSoapOutput extraen valores de los campos de BD correspondientes y los pasa a los respectivos elementos de destino. Siga estos pasos para obtener rápidamente una vista previa del resultado:

 

1.Haga clic con el botón derecho en el componente getPersonSoapInput y seleccione Propiedades del menú contextual.

2.Haga clic en Examinar y seleccione el siguiente ejemplo de solicitud: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\getPersonRequest.xml.

3.Haga clic en Aceptar.

4.Haga clic en la pestaña Resultados.

 

Tal y como está la asignación, de momento solo extrae todos los registros de la tabla de BD, lo que no es muy útil. Por lo tanto necesitamos añadir un filtro que nos permita extraer solamente los elementos que coincidan con la cadena de la consulta.

 

1.Añada la función concat arrastrándola desde la ventana Bibliotecas. Esta función se usa para concatenar los nombres First y Last de cada persona.

2.En el menú Insertar, haga clic en Constante y añada una constante que contenga un carácter de espacio. Esta constante insertará el espacio entre el nombre y el apellido que extraigamos de la BD.

3.Añada la función contains arrastrándola desde la ventana Bibliotecas.

4.Haga clic con el botón derecho en la conexión entre la tabla de origen Persons y el nodo de destino Persons y seleccione Insertar filtro: nodos/filas del menú contextual.

5.Dibuje las conexiones entre componentes como se muestra a continuación.

 

mff_soap_getPerson4

Asignación "getPerson"

Como se ve en la imagen anterior, la función contains devuelve true si la cadena de la consulta coincide con el nombre, completo o en parte, de alguna persona de la BD (donde "nombre" viene dado por la función concat y consiste en el nombre, seguido de un espacio, seguido del apellido). Si hay una coincidencia, los detalles de la persona se incluyen en el mensaje de respuesta. Por lo tanto, en este ejemplo el valor de búsqueda "Ro" devolvería los siguientes registros: "Martin Rope", "Ronald Superstring", "Robert Darkmatter", and "Roger Gravity".

 

Diseñar la operación "putPerson"

 

En la ventana Proyecto, haga doble clic en el archivo putPerson.mfd para cargar el contenido del mismo en el panel principal. El componente putPersonSoapInput proporciona la estructura de la consulta (elementos que se insertarán en la BD mediante el servicio web). El componente putPersonSoapOutput representa el resultado de la llamada al servicio web y contiene una parte de confirmación para mostrar el resultado de la llamada al servicio web.

mff_soap_putPerson1

Siga los mismos pasos para añadir a la asignación:

 

la BD people.sqlite (aquí es donde se insertan los datos obtenidos con la llamada al servicio web)

la función concat y cinco constantes (que se usarán para construir la cadena de confirmación que se le muestra al autor de la llamada al servicio web)

 

Dibuje las conexiones como sigue:

mff_soap_putPerson2

Asignación "putPerson"

En la asignación anterior, la conexión entre part: Put y la BD hará que la BD se actualice en tiempo de ejecución. En el lado de destino, la respuesta parte: Confirmation se obtiene concatenando varios campos de la solicitud y el texto obtenido de las constantes. Para más información sobre asignaciones que actualizan bases de datos, consulte el apartado Asignar datos a bases de datos.
 
Para previsualizar el resultado de la asignación:

 

1.Haga clic con el botón derecho en el componente getPersonSoapInput.

2.Haga clic en Examinar y seleccione el siguiente ejemplo de solicitud: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\putPersonRequest.xml.

3.Haga clic en la pestaña Resultados.

 

Cuando genere la vista previa de la asignación MapForce producirá la consulta INSERT necesaria para actualizar la BD y mostrarla en la ventana Resultados, pero no actualizará la base de datos. Para ejecutar la consulta en la BD, seleccione el comando de menú Resultados | Run SQL-Script.

mff_soap_putPerson3

 

En cambio, cuando el servicio web compilado se implementa en un servidor y recibe una llamada de un cliente, la BD se actualizará de manera inmediata. Consulte también el apartado Ejecutar asignaciones que modifican BD.

 

Vista previa del resultado de la asignación

 

Las asignaciones creadas a partir de archivos WSDL se pueden previsualizar en MapForce antes de implementarlos en un servidor web. Para previsualizar este tipo de asignaciones hace falta una solicitud SOAP conforme al archivo WSDL. Puede crear una solicitud de prueba por cada operación (asignación) dentro de su proyecto de servicio web con XMLSpy o el cliente SOAP que prefiera. Si usa XMLSpy, ejecute el comando SOAP | Crear solicitud SOAP nueva para generar la solicitud. Si además de MapForce tiene instalado XMLSpy, puede generar una solicitud de prueba directamente desde MapForce, por ejemplo:

 

1.Haga clic con el botón derecho en el componente getPersonSoapInput de la asignación y seleccione Propiedades del menú contextual.

mff_soap_create_request

2.Haga clic en Crear.

3.Cuando la aplicación lo solicite, guarde el archivo XML en una ubicación en disco.

 

El archivo de solicitud se ha generado con valores de entrada de prueba (por ejemplo "String") en vez de con parámetros de entrada. Antes de usar el archivo de solicitud, asegúrese de que reemplaza los valores de prueba con los valores de solicitud que quiere usar en realidad. Para este proyecto existen dos solicitudes de prueba:

 

1.<Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\getPersonRequest.xml. Use este archivo para previsualizar el resultado de la asignación getPerson. Este archivo de solicitud proporciona por defecto el valor "Ro" como entrada para el servicio web. De esta forma se obtiene de la BD todos los registros de gente cuyo nombre o apellido contiene el texto "Ro".

2.<Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\putPersonRequest.xml. Use este archivo para previsualizar el resultado de la asignación putPerson. Por defecto, este archivo de solicitud proporciona los detalles de una persona ficticia como entrada para el servicio web.

 

Por lo tanto, para obtener un resultado distinto al previsualizar las dos asignaciones edite los archivos anteriores para que contengan los valores de entrada que quiera probar.

 

Siguientes pasos

 

Ahora está listo para generar el código que luego aplicará en el servicio web (Java o C#), compilará e implementará en un servidor, como se describe en estos ejemplos:

 

Ejemplo: generar servicios web SOAP (C#)

Ejemplo: generar servicios web SOAP (Java)

© 2017-2023 Altova GmbH