Exponer un trabajo como servicio web
Con este ejemplo aprenderá a exponer un trabajo de FlowForce Server como servicio web. El trabajo ejecuta una asignación de datos diseñada con Altova MapForce. La asignación lee datos de una base de datos SQLite y recupera solo los registros que coinciden con un valor dado como parámetro al llamar al servicio web. En este apartado aprenderá a implementar la asignación en FlowForce Server desde MapForce y a convertirlo en un servicio web. Cuando termine podrá invocar al servicio web desde un explorador.
Requisitos del sistema
•Licencias necesarias: MapForce Enterprise o MapForce Professional, MapForce Server o MapForce Server Advanced Edition y FlowForce Server.
•Los servicios FlowForce Web Server y FlowForce Server deben escuchar en la en la dirección de red y en el puerto configurados previamente.
•Debe tener una cuenta de usuario de FlowForce Server con permisos para uno de los contenedores (en este ejemplo se usa el contenedor /public porque está automáticamente abierto a todos los usuarios autenticados).
•El trabajo de asignación genera un archivo XML en un directorio local. Por tanto, en el sistema operativo en el que se ejecuta FlowForce Server debe existir un directorio con acceso de escritura donde se creará el resultado del trabajo. En este ejemplo usamos C:\FlowForceExamples\GetPersonRecords.
•El trabajo de este ejemplo lee datos de una base de datos SQLite y no necesita que instale más controladores de BD. Sin embargo, si quiere usar una BD distinta debe instalar los controladores correspondientes no solo en el equipo en el que se diseña la asignación, sino también en el servidor en el que se ejecuta el trabajo. Por ejemplo, en el caso de las bases de datos de Microsoft Access debe instalar Microsoft Access Runtime (https://www.microsoft.com/en-us/download/details.aspx?id=50040) en el equipo en el que se ejecuta FlowForce Server.
Archivos de muestra
Para el ejemplo se usan los archivos que aparecen a continuación, disponibles en la carpeta en la que está instalado MapForce. ..\Documentos\Altova\MapForce2023\MapForceExamples\Tutorial.
•FilterDatabaseRecords.mfd (el archivo de diseño de la asignación de datos de MapForce)
•Nanonull.sqlite (la base de datos SQLite de la que lee datos la asignación).
¿Qué hace la asignación de datos?
La asignación de este ejemplo se llama FilterDatabaseRecords.mfd y se encuentra en la carpeta "Tutorial" de MapForce (..\Documentos\Altova\MapForce2023\MapForceExamples\Tutorial).
Como se ve más arriba, el componente de origen es una BD que almacena registros de usuarios. El componente de destino es un archivo XML. La conexión entre users y row crea una fila por cada registro de BD extraído del componente de origen. La asignación también contiene un parámetro de entrada que debe suministrarse en tiempo de ejecución. Haga doble clic en la barra del título del parámetro de entrada para ver sus propiedades:
La asignación también contiene un componente SQL-WHERE situado entre el componente de origen y el de destino. El objetivo del componente SQL-WHERE es pasar al componente de destino solamente los registros de BD que coincidan con la condición last_name LIKE :sqlparam. Puede configurarlo desde las propiedades del componente:
En la asignación el valor :sqlparam se obtiene concatenando el parámetros de entrada con el carácter %. Por tanto, si el emisor de la llamada suministra el parámetro de entrada "m" en tiempo de ejecución, la asignación recuperará los registros de usuarios cuyos apellidos empiecen por "m".
Para más información sobre cómo diseñar asignaciones como esta consulte la documentación de MapForce (https://www.altova.com/es/documentation) .
Preparar la asignación para implementarla en FlowForce Server.
En las instrucciones siguientes el término "equipo de origen" hace referencia al equipo en el que está instalado MapForce y "equipo de destino" se refiere al equipo en el que está instalado FlowForce (los dos pueden ser el mismo equipo o no).
Antes de intentar implementar la asignación en el equipo de destino:
1.Asegúrese de que el servicio "FlowForce Web Server" está configurado para escuchar solicitudes de clientes HTTP(S), véase Definir la configuración de red. Por ejemplo, si FlowForce Server está instalado en el mismo equipo y tiene conserva la configuración predeterminada, entonces debería poder acceder a él tecleando http:/localhost:8082 en su explorador. Si FlowForce Server se está ejecutando en un equipo distinto, asegúrese de que las conexiones entrantes de la dirección y el puerto indicados no están bloqueados por el cortafuegos.
2.Asegúrese de que el servicio "FlowForce Server" también está configurado para que escuche solicitudes de clientes HTTP(S). Este servicio administra solicitudes a trabajos expuestos como servicios web, consulte también Funcionamiento. Por lo tanto, para que un servicio web sea accesible a cliente HTTP ajenos al host local, el servicio "FlowForce Server" se debe configurar para que escuche en todas las interfaces o en una dirección en concreto, en lugar de en el host local. Para comprobar si el servicio está configurado correctamente basta con ir a esta URL: http(s)://<host o IP address><port>/service/ . Cuando deba introducir su contraseña, use la de su cuenta de FlowForce Server. Todos los trabajos que están expuestos como servicios web (si los hay) aparecen como enlaces directamente en la ventana del explorador.
3.Compruebe que la asignación está configurada para que use rutas relativas en lugar de absolutas:
a)Abra la asignación FilterDatabaseRecords.mfd en MapForce, haga clic con el botón derecho en el área de asignación y seleccione Configurar asignación en el menú contextual.
b)Si corresponde, desmarque la casilla Convertir las rutas de acceso en absolutas en el código generado.
Nota: | la casilla Convención de Windows no se puede usar con asignaciones diseñadas en lenguaje BUILT-IN, como la de este ejemplo. Esta casilla solo es relevante si el lenguaje de la asignación es XSLT o XQuery. |
c)Guarde la asignación.
Las bases de datos basadas en archivos, como Microsoft Access o SQLite, no se implementan en el equipo de destino junto con la asignación. Por tanto, la base de datos SQLite debe copiarse a mano del equipo local al equipo de destino. Copie el archivo de base de datos Nanonull.sqlite del directorio ..\Documents\Altova\MapForce2023\MapForceExamples\Tutorial del equipo de origen a un directorio vacío del equipo de destino. En este ejemplo usamos el directorio de destino C:\FlowForceExamples\GetPersonRecords. No olvide apuntar esta ruta porque necesitará hacer referencia a ella más tarde desde el trabajo de FlowForce.
La asignación ya está lista y se puede implementar en FlowForce Server. Para más información sobre la implementación de asignaciones que incluyan conexiones a bases de datos puede consultar Preparar archivos para su ejecución en servidor.
Implementar la asignación
Para implementar la asignación en FlowForce Server:
1.En el menú Archivo haga clic en Implementar en FlowForce Server. Si está implementando una asignación en FlowForce Server en un equipo distinto, cambie la dirección del servidor y el puerto de "localhost:8082" a los que definió en la configuración de red de FlowForce Server.
2.Como en los otros ejemplos, vamos a implementar la asignación en el contenedor /public/Examples. Haga clic en Examinar y cambie la ruta del contenedor a /public/Examples. Si ha seguido los pasos de los ejemplos anteriores, el contenedor /public/Examples debe existir ya; de lo contrario puede crearlo haciendo clic en Crear contenedor.
3.Asegúrese de marcar la casilla Abrir el explorador web para crear un trabajo nuevo.
4.Haga clic en Aceptar.
Para ver la referencia de configuración de todas las implementaciones consulte Implementar asignaciones en FlowForce Server.
Crear el trabajo de FlowForce
La asignación ya está implementada en FlowForce Server y la página de configuración de trabajos está abierta en el explorador (asumiendo que se marcara la casilla Abrir el explorador web para crear un trabajo nuevo en el cuadro de diálogo "Implementar asignación"). De lo contrario, inicie sesión en la interfaz de administración web de FlowForce Server, abra la función de asignación que acaba de implementar (que debería estar en el contenedor /public/Examples) y después haga clic en Crear trabajo.
Para configurar el trabajo:
1.En la sección Parámetros de entrada del trabajo debe crear un parámetro de entrada nuevo de tipo cadena de texto. Este valor lo suministran los emisores de llamadas del servicio web al invocar el trabajo. Le daremos el nombre "LookupValue".
2.Configure como sigue el paso de ejecución:
•Cambie el valor del parámetro input a "LookupValue", que creamos en los pasos anteriores.
•Cambie el directorio de trabajo a C:\FlowForceExamples\GetPersonRecords. Si siguió los pasos anteriores este directorio ya existe en el sistema de archivos y contiene la BD de origen Nanonull.sqlite.
3.Para convertir este trabajo en un servicio web, marque la casilla Permitir acceso a este trabajo por HTTP... e introduzca el nombre del servicio web, por ejemplo:
Apunte este nombre del servicio porque lo necesitará más tarde para llamar al servicio web.
4.Debajo de Credenciales seleccione un registro de credencial actual o especifique una credencial local.
Nota: | use las credenciales de su cuenta de usuario del sistema operativo y no las que usó para acceder a la interfaz de administración web de FlowForce Server. La cuenta de usuario debe poder acceder al archivo de BD Nanonull.sqlite desde el directorio de trabajo; de lo contrario el trabajo no se ejecutará correctamente. |
5.Por último, haga clic en Guardar.
Invocar al servicio web
Ha terminado de configurar el trabajo. Este trabajo está expuesto como servicio web, por lo que puede ejecutarlo de varias maneras:
•Vaya a Inicio y haga clic en Ver los desencadenadores y servicios activos. Después haga clic en la URL del trabajo que aparece en la columna "Información".
•Introduzca http://127.0.0.1:4646/service/GetPersonRecordsService en la barra de direcciones del explorador. Tenga en cuenta que esta URL solo funciona si el servicio FlowForce Server escucha en la dirección host y el nombre de puerto predeterminados. Si su puerto y host tienen otra configuración vaya a la Configuration page y cambie la dirección.
•Si configura el campo Nombre de host de FlowForce Server desde la página de configuración puede ejecutar la llamada al servicio web directamente desde la página de configuración del trabajo. Para ello haga clic en el botón que hay junto a la casilla Permitir acceso a este trabajo por HTTP. Este botón solo se habilita si configura este campo Nombre de host. Si no lo ha hecho, puede llamar al servicio web escribiendo la URL manualmente en la barra de dirección.
Si la aplicación le pide credenciales al acceder al servicio web, use las mismas que usó para acceder a FlowForce Server.
Recomendamos usar las credenciales de FlowForce Server para la autenticación HTTP solo en casos de prueba. Para producción es mejor crear un usuario nuevo, darle el permiso Servicio - Uso en el contenedor en el que está el trabajo y después acceder al servicio web con esa cuenta. Para desactivar la autenticación HTTP y hacer público el servicio web debe dar el permiso Servicio - Uso al usuario Anónimo, véase ¿Cómo funcionan los permisos?. |
Como este trabajo tiene parámetros, el explorador solicitará valores de parámetros antes de otorgar acceso al servicio web.
Si introduce una ruta de directorio válida, como por ejemplo M, el trabajo consultará la BD y devolverá solamente las filas que contengan apellidos que empiecen por "M", por ejemplo:
Si el trabajo falla aparecerá el mensaje "Error en la ejecución de servidor" en el explorador. Si es el caso, puede ir a Vista de registro para obtener más información.