Interacción con BPEL HumanTask usando JSF

Uso de JSF para proporcionar la funcionalidad de BPC Explorer

Este artículo explica el caso de uso de desarrollo de BPEL con HumanTask e interfaz de usuario basada en Internet con JSF usando WebSphere Integration Developer 6.1. El artículo discute cómo JSF presenta la funcionalidad de Business Process Choreographer Explorer de WebSphere Process Server para interactuar con el flujo de procesos de negocios. También explica cómo proporcionar una interfaz Web personalizada para interactuar con BPEL HumanTask de una manera amigable para el usuario.

Sridevi Pinniti, Application Developer, IBM  

Sridevi Pinniti photoSridevi trabaja en IBM desde hace 3 años. Su experiencia incluye el desarrollo de aplicaciones J2EE y activos reutilizables para SOA. Ha entregado activos para la “Enrollment to File of Healthcare CBS and Provider Collaboration Suite”. Sus áreas de interés incluyen el modelado de software, el aprendizaje de tecnologías futuras y la exploración de nuevos productos en SOA.



03-08-2011

Visión general sobre BPEL

BPEL significa Business Process Execution Language (Lenguaje de Ejecución de Procesos de Negocios), una de las tecnologías clave para la Arquitectura Orientada a Servicios (SOA, por su sigla en inglés), y proporciona un motor de orquestaciones que permite describir los intercambios de información interna o externamente. BPEL se ocupa explícitamente de los aspectos funcionales de los procesos de negocios: flujo de control (rama, bucle, paralelo), conversaciones asincrónicas y correlación, unidades de trabajo anidadas de larga ejecución, errores y compensación.

BPEL aborda directamente los siguientes desafíos de procesos de negocios:

  • Coordinación de la comunicación asincrónica entre los servicios,
  • Correlación de los intercambios de mensajes entre las partes,
  • Implementación de procesos paralelos de actividades,
  • Manipulación de datos entre interacciones asociadas,
  • Soporte a transacciones y actividades de negocios de larga ejecución.

Interacción de usuarios en procesos de negocios

Los procesos de negocios de BPEL se definen como recolecciones de actividades que invocan servicios. BPEL no hace distinción alguna entre servicios provistos por aplicaciones y otras interacciones (tales como las interacciones humanas). Esto es importante, ya que los procesos de negocios reales a menudo integran no sólo sistemas y servicios sino también usuarios. Las interacciones de usuarios en negocios complejos pueden ser simples, como la aprobación de ciertas tareas o decisiones, o complejas, como la delegación, la renovación, el escalamiento, la nominación o la ejecución en cadena.

La aprobación de tareas es la interacción de usuario más simple y probablemente la más común de todas. En un proceso de negocios de seguros, por ejemplo, para aprobar una reclamación al seguro podría ser necesaria una interacción de usuario que permita decidir si la reclamación cuenta o no con aprobación de pago. Si la situación es más compleja, un proceso de negocios podría requerir aprobación por parte de varios usuarios, ya sea en secuencia o en paralelo. En escenarios secuenciales, es habitual que el usuario siguiente quiera ver la decisión tomada por el usuario anterior. A veces, especialmente en interacciones paralelas de usuarios, a los usuarios no se les permite ver las decisiones de otros usuarios. Esto mejora el potencial de decisión. A veces un usuario ni siquiera sabe qué otros usuarios están involucrados – o incluso si hay otros usuarios involucrados.

BPEL proporciona el componente HumanTask para la interacción humana con el proceso de negocios.


Creación de BPEL con HumanTask

Comencemos con un estudio de caso de muestra en que el Enviador y el Aprobador de las reclamaciones son los actores, la aprobación de la reclamación al seguro será el proceso de negocios y el estado de aprobación se realizará mediante HumanTask. Se necesitan detalles personales del cliente y detalles de la reclamación, como el ID del cliente, el nombre del cliente, la descripción de la reclamación y su monto. En negocios reales seguimos estos detalles en base a Normas de Atención de la Salud como HIPPA y HL-7 de manera de hacerlos interoperables en sistemas heterogéneos.

A continuación se muestran los pasos para crear procesos de negocios de reclamación al seguro.

  • Conmutación a la Perspectiva de Interacción de Negocios.
  • Crear un nuevo Módulo de Interacción de Negocios a través de File (Archivo) > New (Nuevo) > Module (Módulo).
  • Hacer clic en Finish (Finalizar) para crear elInsuranceClaimModule.
Figura 1. Creación de un Módulo de Negocios
Creación de un Módulo de Negocios
Figura 2. Creación de Objetos de Negocios
Creación de Objetos de Negocios
  • Una vez que se ha creado el Módulo de Negocios, se abre el Módulo como se muestra en la Figura 2.
  • Crear los objetos de negocios (Tipos de datos) necesarios.
  • Hacer clic derecho en Data Types (Tipos de datos) > New (Nuevo) > Business Object (Objeto de Negocios).
  • Hacer clic en Finalizar: se creará un objeto vacío.
  • Agregar los campos necesarios con sus tipos a este objeto.
Figura 3. Agregar campos al objeto de negocios
Agregar campos al objeto de negocios

Los objetos de negocios necesarios para nuestro escenario serían CustomerInformation y ClaimInfomation, donde CustomerInformation contiene valores como ID del Cliente, Nombre del Cliente, etc., y ClaimInformation contiene la descripción y el monto. El típico Objeto de Negocios en el Editor de Negocios tendrá el aspecto que se ve en la Figura 3.

Figura 4. Creación de Interfaces
Creación de Interfaces

Crear las interfaces InsuranceClaim y ClaimReview.

Figura 5. Agregar operaciones a la interfaz
Agregar operaciones a la interfaz
  • La interfaz InsuranceClaim tendrá processClaim() como operación, siendo CustomerInformation y ClaimInformation las entradas y la decisión la salida.
  • La interfaz ClaimReview tendrá review() como operación, siendo ClaimInformation la entrada y el resultado la salida.
Figura 6. Creación de procesos de negocios
Creación de procesos de negocios
  • Crear nuevo Proceso de Negocios.
  • Hacer clic derecho en Business Logic (Lógica de negocios) > New (Nuevo) > Business Process (Proceso de negocios).
Figura 7. Seleccionar tipo de proceso
Seleccionar tipo de proceso

Como se muestra en la Figura 7, se ha de seleccionar el proceso de larga ción, ya que éste involucra interacción humana.

Figura 8. Seleccionar una Interfaz
Seleccionar una Interfaz
  • Aquí se selecciona la interfaz que necesita mapearse con el proceso que se tomará como entrada para la actividad Receive (Recibir).
  • Para lograrlo, tenemos que hacer clic en el botón de radio Select an Interface (Seleccionar una interfaz) y seleccionar la interfaz InsuranceClaim y la operación processClaim().
  • Haciendo clic en Finalizar, se creará ClaimBusinessProcess.
Figura 9. Mapear los Campos
Mapear los Campos
  • Se ha de mapear la actividad Recibir, la interfaz InsuranceClaim, la operación processClaim operación y las entradas.
  • La actividad Reply (Responder) se mapea a la decisión de cadena de salida.
Figura 10. Editor de procesos de negocios
Editor de procesos de negocios

En el extremo superior derecho del editor de negocios, podemos ver los Interface Partners (Asociados de interfaz) y sus correspondientes Variables (Variables). Como se ilustra en la Figura 10 que muestra el editor de procesos de negocios con el flujo de macros que contiene las actividades Recibir y Responder, agregamos la tarea humana arrastrándola de la paleta.

Figura 11. Agregar HumanTask
Agregar HumanTask

La decisión central para el procesamiento de la reclamación se toma usando HumanTask, donde se selecciona la interfaz apropiada que conducirá el flujo del proceso en función de la decisión del usuario. En nuestro caso, es la interfaz ClaimReview que tendrá la operación review(), devolviendo el valor booleano y, de esta manera, enunciando la aprobación de la reclamación. Como se muestra en la Figura 11, debemos dar un nombre a la tarea, seleccionar la interfaz apropiada, y luego agregar una nueva variable “result” de tipo booleano.

Figura 12. Agregar propiedades a HumanTask
Agregar propiedades a HumanTask
  • Agregar variables de mapeo a la operación review() en la pestaña de propiedades.
  • Agregar fragmento de código después de la actividad HumanTask para visualizar el resultado de la HumanTask y proporcionar el código Java siguiente al fragmento de código.
if(result.booleanValue() == true) {decision =
                “approved”;} else {decision = “rejected”;}
                System.out.println(“result:”+decision);
Figura 13. Agregar fragmento de código
Agregar fragmento de código
  • La vista típica del flujo de proceso y del editor del fragmento de código Java sería como se muestra en la Figura 13.
  • Una vez hecho esto con el mapeo apropiado, se debe guardar el módulo.

Generar interfaz de usuario para HumanTask

En la sección previa, hemos creado un proceso de negocios que toma la información, la procesa, y entrega la salida en función de la HumanTask. Este BPEL completo se expone ahora como una interfaz para la cual necesitamos seguir los pasos siguientes:

  • Colocar el componente BPEL en el Assembly Diagram (Diagrama de montaje).
  • Hacer doble clic en el Diagrama de Montaje para abrir el Editor del Diagrama de Montaje.
  • Arrastrar el ClaimBusinessProcess BPEL dentro de ese editor.
  • Hacer clic derecho en ClaimBusinessProcess que se halla dentro de Procesos y seleccionar Generate User Interfaces (Generar interfaces de usuario).
Figura 14. Generar interfaz de usuario
Generar interfaz de usuario
Figura 15. Asistente de interfaz de usuario
Asistente de interfaz de usuario
  • De manera predeterminada, se selecciona el Tipo de Generador como cliente personalizado JSF y HumanTask en nuestro proceso BPEL.
  • Hacer clic en Siguiente para Continuar.
Figura 16. Creación de un Módulo Web
Creación de un Módulo Web

La interfaz de usuario generada debería estar en algún proyecto Web. Esto puede realizarse a través de los siguientes pasos:

  • Nombrar el proyecto Web.
  • Seleccionar el estilo de interfaz de usuario para las páginas generadas y hacer clic en Finalizar.
  • Se crearán el proyecto Web dinámico y su correspondiente EAR.

Ejecución del Proyecto

Ahora ha llegado el momento de poner a prueba nuestra HumanTask BPEL. Para ello, es necesario llevar a cabo los pasos siguientes:

  • Iniciar el servidor y agregar estos dos proyectos al servidor.
  • Hacer clic derecho en Server (Servidor) > seleccionar Add and Remove Projects (Agregar y quitar proyectos) > seleccionar proyecto BPEL y EAR de proyecto Web, y hacer clic en Finish.
Figura 17. Agregar Proyecto BPEL y Proyecto Web
Agregar Proyecto BPEL y Proyecto Web
Figura 18. Agregar Proyecto BPEL y Proyecto Web, Paso 2
Agregar Proyecto BPEL y Proyecto Web, Paso 2
  • Cambiar a diagrama de montaje.
  • Hacer clic derecho en el componente BPEL > seleccionar el componente de prueba.
  • Completar todos los detalles en la sección de parámetros de solicitud inicial.
  • Seleccionar Invoke (Invocar) en la sección Events (Eventos) y hacer clic en Continue (Continuar).
  • El Proceso estará suspendido en HumanTask esperando ingreso de datos.
  • Para invocar HumanTask, ejecute el Proyecto Web.
Figura 19. Ejecutar la interfaz de usuario JSF
Ejecutar la interfaz de usuario JSF
  • Iniciar sesión con las credenciales de servidor, que nos redirigirá a la página settings.jsp.
  • Seleccionar Open Link (Abrir Vínculo) para trabajar con HumanTask. La ventana exhibirá las tareas pendientes.
Figura 20. HumanTask pendientes
HumanTask pendientes

Seleccionar la tarea que exhibe los datos de entrada requeridos y el botón Claim (Reclamar).

Figura 21. Parámetros de ingreso recibidos
Parámetros de ingreso recibidos

Hacer clic en el botón Claim.

Figura 22. Decisión de HumanTask
Decisión de HumanTask
  • Para aprobar la reclamación, hacer clic en la casilla de verificación de Result (Resultado).
  • Para colocar la tarea en estado pendiente, hacer clic en el botón Save (Guardar).
  • Para rechazar la reclamación, hacer clic en Release (Liberar).
Figura 23. Visualización de resultados
Visualización de resultados

La Figura 23 exhibe los resultados del fragmento de código y continúa con las actividades restantes en el BPEL.

En un escenario en tiempo real, esto mismo puede diseñarse de manera de redirigirse a otra página que ayude al usuario a navegar dentro de otras pantallas/acciones. La Interfaz de Usuario que hemos usado en este caso de uso es la predeterminada provista por WebSphere Integration Developer. Para tener una visión más rica y un mayor confort de uso, siempre podemos personalizarla en función de nuestros requisitos de negocios.


Conclusión

Este artículo resume el desarrollo de aplicación SOA usando tecnologías BPEL y JSF. El mismo se enfoca en el desarrollo de una interfaz de usuario personalizada para la HumanTask BPEL, que suele ser necesaria en todos los procesos de negocios.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=WebSphere
ArticleID=468422
ArticleTitle=Interacción con BPEL HumanTask usando JSF
publish-date=08032011