Ejemplo para métodos de obtención de información

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Asistente de Procesos > Integrar > Integración con aplicaciones > Conector de servicios Web > Invocar servicios REST >

Ejemplo para métodos de obtención de información

El siguiente ejemplo da una breve descripción de cómo usar los métodos GET y DELETE a través de la invocación de un servicio REST del API de Google Maps directamente en nuestros procesos de Bizagi. El consumo de los servicios será explicado con datos XML y JSON.

 

Como se describió previamente en Invocar servicios REST, es necesario entender previamente la estructura de la invocación del servicio REST de Google Maps.

 

Esta información se encuentra en el sitio web de la fuente: developers.google.com/maps/documentation/geocoding/.

 

 

InvokingREST01_Geocoding

 

 

En este ejemplo específico, vamos a usar el Geocoding API, expuesto a través de Web Services para enviar una dirección y obtener las coordenadas correspondientes en latitud y longitud.

 

También, vamos a usar un servicio REST disponible que retorna la información de la respuesta en una estructura XML (tenga en cuenta que estos servicios se proveen comúnmente en formato XML y JSON).

 

Ilustraremos como invocar un servicio de REST, usando el Proceso Crear Vendedor en Bizagi:

InvokingREST02_createvendor

 

 

En este ejemplo, nuestro modelo de datos es:

 

InvokingREST03_datamodel

 

 

Note que este ejemplo usa la invocación de servicio de REST de Google Maps (un servicio externo de Web). Por esta razón el servidor donde está instalado Bizagi debe tener acceso a Internet. Se pueden requerir configuraciones adicionales para permitir que el navegador muestre el mapa (incluir a Google maps como un sitio seguro).

 

Creando una interfaz de invocación

Nuestro primer paso es crear una invocación de interfaz en nuestra Tarea de Servicio Consultar posición de geocódigo.

Esto se hace desde el paso 6 del asistente de Proceso (Integración) en la opción Definir interfaces de integración:

 

InvokingREST04_Step6

 

En esta vista, demos clic en la Tarea de Servicio Consultar posición de geocódigo para crear la invocación de la interfaz.

 

Especificar el tipo de servicio, la URL y el método

Ahora debemos especificar que esta configuración invoca un tipo de servicio REST, así como su URL, método y parámetros.

 

En la ventana de interfaz que aparece, seleccionamos REST como el tipo de servicio:

 

REST00

 

Desde la información presentada en la página de API de Google Maps, especificamos su ubicación URL separada en: la URL Base y la URL de Servicio.

 

note_pin

La URL Base y la URL de servicio también se especifican en la documentación del servicio REST.

Note que la URL Base es el prefijo en el cual no se especifica invocación de parámetros aun. La URL de servicio usualmente contiene parámetros de consulta, cuyos valores varían por invocación.

Se recomienda que ésta no contenga espacios en blanco de sobra.

 

La URL Base de este ejemplo para contenido XML es: http://maps.googleapis.com/maps/api/geocode/xml?

La URL Base de este ejemplo para contenido JSON es: http://maps.googleapis.com/maps/api/geocode/json?

La URL de servicio de este ejemplo es: address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

 

Note que la URL de servicio anterior, incluye un ejemplo estático de una dirección ("1600+Amphitheatre+Parkway,+Mountain+View,+CA").

 

En nuestro proceso, vamos a enviar dinámicamente esta información desde el atributo "Street Address" en el modelo de datos.

 

Por lo tanto y con el fin de definir que el parámetro de la dirección es mapeado dinámicamente, definimos tantas variables como sea necesario dentro de la URL de servicio, usando los caracteres "{", "}".

 

Nuestra URL de Servicio final es: address={Value1}&sensor=true

 

REST02

 

Observe que el método que estamos invocando es GET (solo para consultar información) y que también retorna la información en una estructura XML o JSON.

 

Nombramos nuestra interfaz y damos clic en Siguiente.

 

Mapear toda la información de entrada para el servicio.

A continuación, mapearemos la información a ser enviada a través de las variables definidas previamente.

 

Para hacerlo, localizamos nuestro atributo Street Address en el modelo de datos del proceso de Bizagi (la tabla de la izquierda) y damos clic en él.

 

Una vez seleccionado, damos clic en la variable Value1 en la tabla QueryParams de la derecha. De esta manera, mapeamos y especificamos la información que será enviada a esta invocación:

 

REST03

 

Damos clic en Siguiente.

 

Mapear la información de respuesta retornada por el servicio

Ahora especificaremos cómo almacenar la información de respuesta en los atributos de nuestro modelo de datos de Proceso de Bizagi.

 

Para esto, necesitaremos incluir la estructura de la respuesta del servicio REST en los Datos de Respuesta.

 

Este ejemplo está orientado a respuestas con formatos XML y JSON.

La estructura de respuesta seleccionada se consulta en el API del servicio REST. Basados en esto, si la invocación espera un formato XML, vamos a developers.google.com/maps/documentation/geocoding/?hl=en#XML, de lo contrario, vamos a developers.google.com/maps/documentation/geocoding/?hl=en#JSON,

Copie el ejemplo de texto en un archivo con la respectiva extensión (.xml o .json).

 

Formato XML

 

InvokingREST10_input13

 

Formato JSON

 

InvokingREST10_input13_json

 

note_pin

Para el formato JSON, el tipo de contenido debe ser configurado en las propiedades de la interfaz localizadas en Experto > Sistemas > Default (u otro nombre), Interfaces > Nombre de su interfaz.

 

InvokingREST10_output_json

 

Damos clic derecho en la tabla de la izquierda e ingresamos la estructura de la respuesta.

Esto puede hacerse manualmente (agregando nodos) o de manera automática cargando la estructura de un archivo físico XSD, XML o JSON.

Dé clic aquí para más información acerca de opciones de configuración de servicios REST.

 

En este ejemplo, seleccionamos las opciones de importación, para cargar la estructura del archivo (localizando la estructura que guardamos previamente):

 

Para el archivo XML, seleccionamos Cargar desde un XML de ejemplo.

 

REST04_xml

 

Para el archivo JSON, seleccionamos Cargar desde un Json de ejemplo.

 

REST04_json

 

Una vez tenemos la estructura XML/JSON en nuestra Tabla de Respuesta de Google Maps, procedemos a mapear los valores entrantes la latitud ("lat") y la longitud ("lng") a nuestros atributos en Bizagi.

 

Para mapear estos valores, recuerde que puede dar clic sobre el primer atributo fuente (Datos de Respuesta) y luego en el atributo destino (Datos de Bizagi) o también, arrastrar una conexión desde la fuente y soltarla en el destino.

 

Al final, la información mapeada de la respuesta para nuestro ejemplo se mostrará de la siguiente manera:

 

REST05

 

Dé clic en Siguiente.

 

note_pin

Cuando se mapean los parámetros de un servicio REST, usted cuenta con la posibilidad de incluir archivos de transformación personalizados (XSLTs). Para hacerlo, dé clic sobre el ícono de Mapeo avanzado:

 

REST03_output_Advanced

 

Para mayor información sobre su uso, consulte el Mapeo Avanzado.

 

 

Configurar manejo de errores

Finalmente, para este ejemplo no necesitamos validación de manejo de errores.

Para ver más información acerca de las opciones de manejo de errores, consulte Manejo de Errores de Interfaz.

 

REST08

 

Dé clic en Finalizar.

 

Ejecución

Ejecute el Proceso de Creación de Vendedores y pruebe el resultado de la invocación en el Portal de Trabajo.

 

Para hacerlo. dé clic en el botón Ejecutar en la pestaña Inicio:

 

ComponentLibrary_Run

 

En el portal de trabajo, creamos un nuevo caso del proceso Crear Vendedor e ingresamos la dirección del vendedor en el campo de la tarea "Register Vendor information".

Para este ejemplo de servicio REST, todo el texto que compone la dirección está separado por el caracter "+":

 

REST06

 

Después de la invocación del servicio REST de Google Maps, obtendremos las coordenadas de latitud y longitud para la dirección del Vendedor:

 

REST07