<< Clic para mostrar Tabla de Contenidos >> Invocar servicios Web (SOAP) |
Introducción
Bizagi ofrece un conector de servicios Web (el cual hace parte de su capa de integración) que promueve una configuración sencilla para la invocación de servicios Web externos.
Este conector soporta tanto la invocación de servicios Web SOAP estándar, como la de servicios REST.
En este artículo describiremos la integración con servicios Web SOAP.
Para la integración con servicios REST externos, consulte Invocar servicios REST.
La siguiente imagen ilustra este concepto:
El intercambio de información entre Bizagi y el sistema externo se realiza por medio de XMLs.
De esta manera, la integración es independiente de las plataformas o tecnologías involucradas, y del lenguaje de programación de la implementación del servicio.
Bizagi tiene integración con WebSphere Enterprise Service Bus de IBM, basados en el consumo de servicios Web a través de SOAP, los servicios expuestos con el WebSphere Enterprise Service Bus de IBM deben tener endpoints HTTP, los servicios con endpoints JMS no están soportados. |
Qué se necesita hacer en Bizagi
Para establecer la configuración de un servicio web SOAP, se deben seguir los pasos a continuación:
1. Resolver la URL del servicio Web.
2. Definir los parámetros de entrada.
3. Definir los parámetros de salida.
4. Configurar manejo de errores.
En el primer paso, Resolver URL del servicio Web, usted puede escoger: si el servicio a invocar es un servicio Web SOAP o un servicio REST.
Para el segundo y tercer paso, usted podrá utilizar el mapeo gráfico o las opciones avanzadas para incluir transformaciones personalizadas.
En este artículo ilustraremos como utilizar el asistente de interfaces de Bizagi con sus opciones de mapeo gráfico, para invocar un servicio Web SOAP.
Ejemplo
En el siguiente ejemplo, utilizaremos el Proceso de Solicitud de Licencia de Vacaciones en el cual, un empleado ingresa una solicitud de vacaciones y consulta el número de días disponibles para sus vacaciones.
Este Proceso puede puede ser descargado desde las Plantillas gratuitas de Proceso en la Central de Procesos.
Para esta configuración, vaya al sexto paso del Asistente de Procesos y dé clic en la opción Definir Interfaces.
En la vista del Proceso para definición de interfaces, dé clic en la tarea automática donde se invocará el servicio web externo.
Observe que cuando un Proceso se abre en esta vista (a través del paso de Integración), solo las tareas automáticas se resaltarán (y estarán disponibles).
En la siguiente imagen, la tarea automática escogida para nuestro ejemplo es Verificar días disponibles de vacaciones en la cual Bizagi obtendrá, desde otro sistema, el número de días de vacaciones disponibles para ese empleado.
Cuando se da clic en la tarea automática, el asistente de interfaces se lanzará y presentará los pasos para configurar la invocación (como se describe a continuación.
Cuando la longitud de los atributos de tipo cadena retornados por un servicio excede el tamaño del atributo de Bizagi en donde se almacena la información, Bizagi truncará el resultado para que se ajuste a dicho atributo. |
Resolver la URL del Servicio Web
En este primer paso, seleccione SOAP como el Tipo de servicio para esta invocación.
Luego ingrese la URL del servicio Web, y dé clic en el botón Go.
En este ejemplo utilizamos la URL: http://www.bizagi.com/ESB/ESBServices.asmx?wsdl
El sistema buscará y refrescará una lista de métodos Web disponibles para ese servicio Web (desde el archivo descriptor de lectura WSDL). (3)
Seleccione el puerto de servicio que desea utilizar (usualmente SOAP1.2 si el servicio presenta dicha posibilidad):
Los puertos que figuran en dicho listado corresponderán a los especificados por el servicio (4), siempre y cuando sean para protocolo SOAP:
Seguidamente seleccione el método Web a ser usado y asigne un Nombre de Interfaz para esta configuración.
Dé clic en Siguiente.
Defina los Parámetros de Entrada
En el paso Datos a Enviar, el asistente de interfaces presentará el modelo de datos perteneciente al Proceso actual ( como una tabla de Datos de Bizagi en la izquierda), y la información estructurada esperada por ese método de servicio Web (como otra tabla a la derecha).
Las entidades Runtime están disponibles para el mapeo de entrada también. Éstas se presentan en el mapeo simple (no se soportan en el mapeo avanzado.
Para cada uno de los parámetros de entrada necesarios para establecer la comunicación con los sistemas externos, el asistente mostrará las opciones para mapear el atributo del modelo de datos utilizando XPath.
De esta manera, la información requerida desde el modelo de datos se configurará en los parámetros del método web.
Para este ejemplo, mapearemos el nombredeusuario del Solicitante al parámetro esperado de nombredeusuario del servicio Web.
Otra opción para mapear al Solicitante en este caso podría ser usando las entidades Runtime, como se muestra a continuación. En el siguiente ejemplo, asignamos el FullName. Observe que las entidades Runtime se muestran al mismo nivel que la entidad de proceso para asignar atributos de entrada.
Si uno o más valores de salida corresponden a un identificador de una entidad paramétrica, habilite la Llave de Negocio para dicha entidad de tal forma que Bizagi pueda cargar la referencia completa. Para hacer esto, revise Llaves de Negocio. |
Definir Parámetros de Salida
En el paso de Datos de Respuesta, el mapeo del resultado que retorna el servicio web, se configura de forma similar al mapeo de las entradas.
Con esta configuración, Bizagi actualizará automáticamente la respuesta recibida, en el modelo de datos del Proceso.
En este ejemplo, mapeamos el resultado número de días de vacaciones disponibles al atributo NumberOfDaysAvailable.
Configure el manejo de Errores
Bizagi presenta una opción para configurar manejo de errores de negocio.
Esto es especialmente útil en los siguientes escenarios:
•Cuando el XML de la respuesta contiene un error de negocio de servicio Web (por ejemplo, mensajes como "El ID del Cliente no existe").
•Cuando el Proceso modelado considera una transición diferente del flujo de trabajo si ocurre un error.
Para utilizar el manejo de errores, se debe especificar el mensaje de error que se lanza basado en los posibles escenarios de la invocación.
Para el segundo escenario, se requiere que la Tarea de Servicio utilizada posea un Evento de Error adjunto a sus límites.
En este ejemplo no se especifica manejo de errores personalizado.
Para ver más información acerca de las opciones de manejo de errores, consulte Manejo de Errores en Interfaces.
Dé clic en Finalizar.
En este punto, la Tarea de Servicio Verificar Días Disponibles de Vacaciones en el Proceso de Solicitud de Vacaciones, ha sido configurado para invocar un servicio Web externo SOAP.
Observe que cuando usted da clic en el botón Finalizar, la interfaz se creará (o actualizará) automáticamente en el módulo de Sistemas (vista de Experto) de su proyecto Bizagi. Esto quiere decir que la configuración de los parámetros y opciones de autenticación de la interfaz, pueden ser revisados o editados desde el módulo de Sistemas (vea la siguiente sección Consideraciones Adicionales).
Consideraciones Adicionales
1. Bizagi guardará de manera precisa la configuración para su invocación y mapeo, incluso si después se cambia el método de servicio Web.
Esto significa que si su servicio Web externo cambia (por ejemplo, su definición tiene parámetros nuevos o diferentes), usted necesitará considerar si es necesario reconfigurar la invocación en Bizagi Studio.
Sería recomendable examinar la invocación de sus servicios Web y navegar por su configuración para revisar el mapeo de parámetros nuevos o alterados.
Observe que usted también puede administrar sus interfaces en ambientes de pruebas o producción (útil por ejemplo ante eventuales cambios como por ejemplo, si se mueven los servidores que alberguen servicios web externos).
Para mayor información, consulte Administración de Interfaces.
2. En caso de que la configuración a un servicio Web no se pueda realizar mediante el Conector de servicios Web de Bizagi y el mapeo gráfico, entonces podrá optar por estas opciones:
•Realizar la invocación al servicio Web mediante una regla de negocio donde se utilicen los métodos del objeto ayudante CEntityXmlHelper.
Para mayor información, consulte los Métodos para interfaces.
•Desarrollar un componente para la invocación al servicio Web. Este componente debe crearlo como una librería de clase que se registra en Bizagi a través de la funcionalidad de la Librería de componentes (aplica para las ediciones Enterprise).
Para mayor información, consulte Librería de componentes.
3. Para mejores prácticas orientadas a interoperabilidad, la URL de los servicios Web tipo SOAP:
•Debe ser definida explícitamente con la terminación ?wsdl (p.e http://www.bizagi.com/ESB/ESBServices.asmx?wsdl).
•No debe contener espacios en blanco de sobra (después de la URL).
•No debe ser una referencia a un wsdl en una ruta local física, sino que debe ser una URL basándose en el protocolo HTTP o HTTPS.
De esta manera se asegura una correcta referencia al descriptor, cuando se tengan servicios no construidos bajo la tecnología de .NET.
4. La configuración del puerto de servicio, le permite la posibilidad de escoger implícitamente el Framework más apropiado según el estándar soportado para el tipo de servicio (por ejemplo y al seleccionar un puerto SOAP 1.2, el Conector de servicios web en .NET utilizará svcutil.exe en vez de wsdl.exe).
Bizagi de manera automática sugerirá el puerto de servicio, sobretodo en caso de que identifique que alguno de los posibles frameworks no es compatible con el estándar en cuestión.
5. Puede en cualquier momento utilizar las características y funciones especiales para mapear fácilmente los parámetros de salida, a partir de una vista gráfica, al maximizar esta ventana.
Para mayor información consulte Características y funciones de mapeo.
6. Cuando se mapean los parámetros de salida de un servicio Web, usted cuenta con la posibilidad de incluir archivos de transformación personalizados (XSLTs). Para hacerlo, dé clic sobre el ícono de Mapeo avanzado:
Para mayor información sobre su uso, consulte El mapeo avanzado.
7. Si tiene mapeos extensos, como buena práctica recomendamos exportarlos para su uso posterior.