Opciones Avanzadas para Invocar un Servicio Web
De
<keywords content="keywords"> soa, interface, interfaces, servicio web, servicios web, servicioweb, web service, web services, webservice, webservices, soa interface </keywords>
Contenido |
Opciones Avanzadas para invocar un Servicio Web
Preferiblemente, un servicio web siempre deberia modelarse en una Tarea de Servicio y haciendo uso de las opciones basicas del Asistente de Interfaces. Para casos excepcionales, si esto no es posible, Bizagi permite usar otras formas para invocar un servicio web. A continuación se explican, incluyendo las opciones avanzadas del Asistente de Interfaces.
Desde una Regla de Negocio
En este ejemplo, se muestra un servicio web que tiene un método web que recibe y devuelve tipos de datos simples (entero, cadena, booleano, etc.):
En un proceso de Solicitud de Vacaciones, se invoca un Servicio Web al comienzo del proceso (la expresión que se va a crear en este ejemplo no se encuentra incluída por defecto en la plantilla del proceso de Solicitud de Vacaciones que viene con el instalador de Bizagi; es decir, se ha modificado el proceso para mejorar la explicación).
1. Abra el proceso para editar y crear expresiones. Haga clic derecho sobre el link de Acciones de Actividad (Eventos), en el cuarto paso de la vista de ayudante (Reglas de Negocio).
2. Haga clic sobre la Actividad que se va a modificar (en este caso, la Actividad Automática Verify Available Vacation Days).
3. Hacer clic en On Enter o On Exit, dependiendo del momento en el cual se va a ejecutar la expresión. Al final de la ventana Acciones de la Actividad, haga clic en el signo de 'más' verde que se activa y seleccione Expresión (Expression).
4. Se abre una ventana para crear una nueva Expresión. En ella digite el Nombre, Nombre para Mostrar y Descripción de la expresión.
5. Cree una variable para los servicios web haciendo clic derecho en el botón Inicio (Start) y elija Declaración de Variable (Variable Declaration).
6. En la ventana Declaración de Variable (Variable Declaration), haga clic en Adicionar (Add), seleccione en la columna Tipo (Type) entero (int), escriba un Nombre (Name) y ajuste el valor inicial a cero (0). Haga clic en OK.
7. Haga clic derecho sobre la flecha vertical y seleccione Adicionar Servicio Web (Add Web Service).
8. En la ventana Servicio Web - Descripción (Web Service - Description) escriba una descripción y haga clic en OK.
9. Haga doble clic en el módulo de Servicio Web para abrir la ventana Invocación de Servicio Web (Web Service Invocation).
10. Ingrese la ubicación del servicio web y haga clic en Siguiente (Next).
11. Seleccione la operación de la lista y haga clic en Siguiente (Next).
12. Si la operación elegida requiere parámetros de entrada estos deben ser ingresados aquí. Seleccione el parámetro a ser configurado y haga clic en el botón Asignar Valor (Set Value). En la ventana Asignar Valor (Set Value) una expresión XPath es usada para encontrar el nombre de usuario del aplicante. Haga clic en OK y luego en Siguiente (Next).
13. Para finalizar la configuración del servicio web, seleccione la variable en donde el resultado va a ser guardado y haga clic en Siguiente (Next).
14. La respuesta del servicio web es usada para configurar un atributo del proceso. Haga clic derecho sobre la flecha vertical luego del módulo de Servicio Web y seleccione Adicionar Asignación (Add Assignment).
Escriba una descripción para la asignación y haga clic en OK. Haga doble clic sobre el módulo Asignación (Assignment) y haga clic en el botón Adicionar (Add) para incluir una. Al lado izquierdo de la asignación seleccione el atributo de destino eligiendo la opción seleccionar atributo (select attribute) (para este ejemplo es VacationRequest.DaysAvailableNumber). Al lado, primero seleccione Expresión (Expression) y luego escriba la variable que tiene la respuesta del servicio web (DaysNumber).
15. Finalmente, haga clic en OK en cada ventana para cerrarlas y guarde los cambios. En la ventana Acciones de Actividad (Activity Actions), también haga clic en OK.
Como una Interface SOA (Avanzada)
Esta es la mejor forma para invocar un servicio web si los métodos web reciben y devuelven un documento XML, una representación en forma de cadena de un documento XML, cuando no se puede usar la configuración básica.
En el mismo proceso de Solicitud de Vacaciones, los últimos tres pagos de nómina para un aplicante son requeridos en la actividad Aprobar Solicitud de Vacaciones. La información está en un sistema externo que requiere del siguiente servicio web sea invocado para esta consulta:
Para esta interface un archivo XSD es provisto, este define la estructura de los mensajes de entrada y salida.Para encontrar información adicional sobre como invocar Servicios Web con tipos de dato personalizados, por favor dirigirse al siguiente Artículo. El xmlInput debe cumplir con esta estructura:
Y la siguiente para el UserPayrollResult:
Como se puede ver del primer esquema, el nombre de usuario del aplicante necesita ser enviado. Esta información puede ser obtenida desde Bizagi en un documento XML pero no con la estructura que el servicio web requiere. Es por lo tanto necesario transformar el XML usando un XSL/XSLT. También, la información devuelta en un formato XML puede ser guardado en Bizagi pero tiene que ser transformado en una estructura que Bizagi entienda. Es necesario usar otro XSL/XSLT. Los siguientes pasos son tomados para lograr esto, pero primero es importante entender el modelo de datos, para que el recibir y guardar información pueda ser hecho. Este modelo de datos es usado:
1. Abra el proceso para editarlo. Haga clic derecho sobre el enlace Acciones de Actividad (Eventos), en el cuarto paso del ayudante.
2. Haga clic en la Actividad y luego haga clic en Al Salir (On Exit).
3. Al final de la ventana Acciones de Actividad, haga clic en el signo de más, verde, que se activa y seleccione Interface.
4. Se iniciará el asistente de interfaces.
Nota: Para esta configuración desde el asistente de interfaces, primero seleccionamos SOAP como el tipo de servicio:
|
Seguidamente, escribir la URL del servicio y oprimir Ir (Go). El sistema tiene una opción por defecto que se puede cambiar por un sistema previamente definido.
5. Cuando se oprime el botón de Resolver, los métodos se despliegan. Seleccione el que desea y de clic en Siguiente (Next).
Cuando se selecciona un método, se sugiere un nombre de Sistema y de Interface. Estos valores pueden cambiarse si se desea.
6. La interfaz espera el nombre de usuario del que hace la solicitud en un documento XML. Este puede ser obtenido usando XPath, XSD y XSL. Sobre la siguiente ventana haga clic en Seleccionar XPath para Recuperar datos (Select Bizagi XPath to Retrieve data), un cuadro se abre, expanda los atributos para VacationRequest y seleccione Peticionario (Petitioner) haciendo doble clic sobre éste, esta sería la "entidad de contexto".
7. Luego haga clic en Definir Esquema si se espera XML o Tipo Complejo (Define Schema if XML or complex type expected). Una ventana pequeña se abre para seleccionar el tributo (o atributos) que son enviados a la interfaz. Por esta razón, para este ejemplo, únicamente el atributo Nombre de Usuario (userName9 es seleccionado. Haga clic en OK cuando acabe de seleccionar los atributos.
Es posible ver el XSD haciendo clic en Esquema de Vista (View schema), en esta ventana éste puede también ser editado directamente. Es también útil copiarlo y usarlo para construir la transformación que sigue:
Haga clic en Siguiente (Next).
8. Ahora haga clic en Definir transformación XSL (Define XSL transformation), esto abrirá una ventana para encontrar y seleccionar un archivo XSLT en el sistema de archivos del computador. Un archivo XSLT puede ser escrito usando Altova XMLSpy o generarlo con Altova MapForce, encuéntrelos aquí: http://www.altova.com/
Una vez que el XSLT es subido, éste puede ser visto y cambiado, haga clic en Vista XSL (View XSL).
Haga clic en Siguiente (Next) para continuar.
9. Para configurar los parámetros de salida, como la interfaz devuelve un documento XML, haga clic en Subir validador XDS o transformación si se requiere (Upload XSD validator or transformation if needed), luego clic en Adicionar un XSL a transformación XML de respuesta (tipo complejo) (Add a XSL to transform XML (complex type) response). En la ventana que se abre, encuentre y seleccione un archivo XSLT del sistema de archivos. Cuando termine, haga clic en Siguiente (Next).
10. Para el manejo de errores seleccione en Error al invocar Servicios Web - Acción (Error invoking Web Service - Action), Lanzar Excepción (Throw Exception).
Alerta: XML tiene un conjunto especial de caracteres que no se pueden utilizar en texto normal, como las cadenas entre las etiquetas. Estos caracteres son:
Si se necesita utilizar estos caracteres se debe usar una sección CDATA (vea getEntities). Por ejemplo: En lugar de <Company>Johnson & Johnson</Company> usar <Company><![CDATA[Johnson & Johnson]]></Company> |
Desde un Botón en una Forma
Es posible además invocar un servicio web cuando el usuario la quiere en una actividad manual. Esto es logrado incluyendo un botón en la forma de la actividad. Luego, dentro de Propiedades (Properties), en Render encuentre Interface haga clic en la celda del valor y seleccione Adicionar/Editar (Add/Edit). Esto debería abrir el asistente de Interfaces donde la interfaz puede ser configurada como se explicó antes.
Nota: Si un servicio web Java quiere ser utilizado desde un proyecto de Bizagi, hay que considerar si la definición de la implementación del servicio web ha mapeado el acceso de tal forma que la invocación al servicio termina en ?wsdl o .wsdl. Se recomienda tener conocimientos acerca de la especificación del servicio web, o contactar a alguien que si los tenga. |
Temas Avanzados y Temas Relacionados
- Para aprender más sobre reglas y familia de reglas, haga clic aquí.
- Lea más sobre Tareas de Servicio (Service Tasks) en éste artículo.
- Tareas de Servicios Asincrónicos (Asynchronous Service Tasks) o Actividades son explicadas en esta página.
- Si otras funciones son necesarias para manipular XML's en reglas, lea esto.
- Lea más en este Artículo sobre cómo invocar Servicios Web urilizando el ayudante.
<comments />