Vous êtes sur la page 1sur 8

Desarrollo de un Traductor de BPEL4WS a YAWL

Ingeniera de Software y Sistemas de Informacin


Gregorio Lpez-Lpez y Luciano Garca-Bauelos
Universidad Autnoma de Tlaxcala
Departamento de Ciencias Bsicas, Ingeniera y Tecnologa
Calzada de Apizaquito s/n, Apizaco Tlaxcala, Mxico.
lo_lo_gre@yahoo.com.mx lgarcia@ingenieria.uatx.mx
Resumen. BPEL4WS (o BPEL) es un lenguaje para la integracin de
aplicaciones en el contexto de los Servicios Web. Resultado de la fusin de
XLang y WSFL, este carece sin embargo de fundamentos formales que
permitan el desarrollo de herramientas de verificacin y simulacin. As, nos
interesamos en desarrollar un mecanismo sistematizado para traducir procesos
BPEL a YAWL. YAWL es un lenguaje derivado de Redes de Petri, con una
notacin compacta y con operadores avanzados que lo hacen presumiblemente
ms apropiado. En este artculo, presentamos un primer avance en el desarrollo
del mecanismo de traduccin, en el que no se incluyen todas las caractersticas
de BPEL. Un prototipo nos ha permitido verificar la viabilidad de la traduccin,
adems de su utilidad.
Palabras clave: BPEL4WS, YAWL, Integracin de aplicaciones, Workflow,
Redes de Petri.

1 Introduccin
El uso de las tecnologas de Workflow en la integracin de aplicaciones ha captado
gran inters en las comunidades industriales y acadmicas. Esto es evidente, de manera
particular, en el rea de los Servicios Web con la aparicin de lenguajes tales como
XLang [11] y WSFL [5] propuestos por Microsoft e IBM, respectivamente. La alianza
de estos dos industriales dio lugar a un nuevo lenguaje llamado BPEL4WS [1] (o
BPEL), que es resultado de una fusin de sus predecesores. Este lenguaje ha sido
aceptado como estndar de facto y sigue en este momento un proceso para su
estandarizacin formal por OASIS.
Uno de las deficiencias en el documento de la especificacin de BPEL es la falta de
una descripcin formal de su semntica. El documento slo hace una descripcin en
ingls, complementada por ejemplos. Se ha reconocido la expresividad de BPEL pero,
de igual manera, los problemas de ambigedad en el lenguaje. Esto se atribuye a la
combinacin de los dos lenguajes predecesores y particularmente a la
complementariedad de sus construcciones. As, se ha demostrado que un mismo
problema puede ser escrito de mltiples maneras y la equivalencia no fcil de
evidenciar. La preocupacin ms importante es, sin embargo, la falta una

especificacin de la semntica operacional que permitira el desarrollo de herramientas


de verificacin y simulacin de procesos escritos en BPEL.
Se han reportado ya algunos trabajos con una semntica operacional para BPEL.
Nosotros apostamos al uso de YAWL, como lenguaje para el desarrollo de tal
semntica operacional. YAWL [12] es un lenguaje basado en Redes de Petri que, sin
embargo, tiene una notacin compacta y construcciones avanzadas que la hacen ms
apropiada. En este artculo, presentamos el desarrollo del mecanismo de traduccin de
BPEL a YAWL, en el que no se incluyen todas las caractersticas de BPEL. Un
prototipo nos ha permitido verificar la viabilidad de la traduccin, adems de su
utilidad.
El resto del documento est organizado de la siguiente manera. La seccin 2
presenta algunos trabajos relacionados. Las secciones 3 y 4 describen brevemente los
lenguajes BPEL y YAWL, respectivamente. La seccin 5 da algunos ejemplos de
equivalencias entre ambos lenguajes. La seccin 6 describe brevemente nuestro mtodo
de traduccin. La seccin 7 describe la arquitectura y la implementacin de un
traductor y la seccin 8 presenta algunas pruebas realizadas al mismo. La seccin 9
concluye y esboza los trabajos futuros.

2 Trabajos relacionados
Al momento, pocos han sido los trabajos que reportan algn mecanismo para la
verificacin de procesos descritos en BPEL. Christian Stahl [10] propone una
semntica operacional para BPEL basada en redes de Petri [7], misma que permite
traducir procesos BPEL a Redes de Petri siguiendo un conjunto de patrones. Los
autores reportan en [9] un caso de estudio en el que un proceso de compras descrito en
BPEL es transformado en una Red de Petri con 158 lugares y 259 transiciones. La red
resultante fue pasada a una herramienta llamada LoLA [8] en la que los autores
realizaron una verificacin del proceso.
Farahbod y col. [2] proponen usar las Mquinas de Estado Abstractas (ASM, del
ingls Abstract State Machines) como formalismo para describir la semntica
operacional de BPEL. Para su verificacin, las mquinas ASM pueden ser traducidas a
mquinas de estado finito que, a su vez, pueden ser verificadas y simuladas. El artculo
[2] describe un ejercicio en el que los autores traducen un proceso BPEL en ASM y
posteriormente la simulan en el ambiente ASML. Los autores no dan detalles sobre el
proceso de traduccin de los procesos BPEL a ASM.
A partir de estas experiencias, nos interesamos en la definicin e implementacin de
un traductor de procesos BPEL a YAWL. Consideramos que el uso de YAWL es
conveniente, ya que su notacin es compacta y el uso de la construccin cancelacin
de YAWL (que elimina los tokens en una subred de Petri) podra ofrecer una ventaja
con respecto a las redes de Petri.

3 Lenguaje YAWL
YAWL [12] (del ingls Yet Another Workfow Languaje) es un lenguaje para la
definicin de flujos de trabajo. YAWL es un lenguaje formal basado en redes de Petri.
En YAWL, toda definicin de flujo de trabajo est compuesta de tareas y condiciones:

Una tarea es una representacin abstracta de un trabajo a realizar (e.g.


invocacin de una operacin de un servicio Web).
Una condicin es un requisito que se debe cumplir para poder continuar con el
flujo de trabajo (e.g. que una tarea previa se haya completado).

En la Tabla 1 se presentan algunos de los smbolos utilizados en YAWL para


modelar flujos de trabajo, con una breve descripcin de ellos. Para una descripcin
detallada se puede consultar [12].
Nombre y Smbolo

Descripcin

Condicin de Entrada

Marca el inicio de un flujo de trabajo.

Condicin de Salida

Marca el fin de un flujo de trabajo.

Tarea Atmica

Representa una tarea.


Especifica que una vez completada la tarea todas las tareas
subsecuentes podrn ejecutarse.
Especifica que una vez completada la tarea slo una tarea
subsecuente podr ejecutarse.
Especifica que una vez completada la tarea una o ms
tareas subsecuente podrn ejecutarse.
Especifica que la tarea se ejecutar slo cuando todas sus
tareas precedentes se hayan completado.
Especifica que la tarea se ejecutar una vez que una de las
tareas precedentes se complete.
Especifica que la tarea se ejecutar slo cuando todas las
tareas previamente activadas se completen.

Tarea AND-Split
Tarea XOR-Split
Tarea OR-Split
Tarea AND-Join
Tarea XOR-Join
Tarea OR-Join

Tabla 1. Elementos del lenguaje grfico de YAWL.

4 Lenguaje BPEL4WS
BPEL4WS o simplemente BPEL [1] (del ingls Business Process Execution Lenguaje
for Web Services) es un lenguaje para la definicin de procesos de negocios. BPEL es
un lenguaje basado en XML. En BPEL, un proceso est compuesto de un conjunto de
actividades bsicas y/o estructuradas:

Una actividad bsica especifica una accin a realizar (e.g. invocar una
operacin de un Servicio Web).

Una actividad estructurada establece el orden de ejecucin de otras


actividades.

En la Tabla 2 se presentan las actividades bsicas y en la Tabla 3 las actividades


estructuradas utilizadas en BPEL, as como una breve descripcin de las mismas. Para
una descripcin detallada se puede consultar [1].
Elemento XML

Descripcin

<receive />
<reply/ >.
<invoke />
<assign />
<throw />
<terminate />
<wait />
<empty />
<compensate../>

Recibe la invocacin de una operacin.


Enva una respuesta a una invocacin (i.e. recibida con <receive/>.
Invoca una operacin sobre algn Servicio Web.
Asigna valores a variables, o bien, copia valores de una variable a otra.
Lanza una falla o excepcin.
Termina explcitamente un proceso.
Detiene el proceso durante un periodo de tiempo.
Actividad nula (no tiene ninguna efecto asociado).
Invoca la compensacin de un mbito.
Tabla 2. Actividades bsicas de BPEL.

Elemento XML

Descripcin

<sequence />
<flow />

Define un conjunto de actividades que se ejecutarn secuencialmente.


Define un conjunto de actividades que se ejecutarn en paralelo. Al
interior de esta construccin, es posible definir ligas (i.e. <link />). Las
ligas pueden especificar un flujo explcito de ejecucin.
Selecciona una actividad entre varias posibles en base a una condicin.
Ejecuta una actividad repetidas veces, mientras se cumpla una condicin.
Ejecuta una actividad entre varias posibles despus de la activacin de
una alarma, o bien, de la recepcin de un mensaje.
Define un mbito. Este tiene asociado un conjunto de variables, de
manejadores de fallos y de compensacin locales.

<switch />
<while />
<pick />
<scope />

Tabla 3. Actividades estructuradas de BPEL.

5 Equivalencias entre BPEL y YAWL


Despus de analizar brevemente ambos lenguajes, se hacen evidentes algunas
equivalencias. Por un lado, una actividad bsica de BPEL puede ser representada con
una tarea de YAWL dado que una tarea de YAWL es una representacin abstracta de
un trabajo a realizar. Por otro lado, las actividades estructuradas de BPEL se pueden
representar con ligas que unen tareas en YAWL. A continuacin se presentan algunos
ejemplos de equivalencia.
Una secuencia de dos actividades BPEL se puede representar con dos tareas
conectadas en un flujo secuencial como es mostrado en la Fig. 1.

Secuencia en BPEL

Flujo de trabajo en YAWL

<sequence>
<empty name=A />
<empty name=B />
</sequence>

Fig. 1. Flujo de Trabajo en YAWL equivalente a una actividad sequence de BPEL.

Una actividad flujo de BPEL, con dos actividades que deben ser ejecutadas en
paralelo se puede representar en YAWL con las tareas correspondientes entre tareas
AND-Split y AND-Join, como es mostrado en la Fig. 2.
Flujo en BPEL

Flujo de trabajo en YAWL

<flow>
<empty name=A />
<empty name=B />
</flow>

Fig. 2. Flujo de Trabajo en YAWL equivalente a una actividad flow de BPEL.

Para mostrar la versatilidad de BPEL, en la Fig. 3 se muestra como el flujo inducido


por ligas explcitas en una actividad flow, lleva a un flujo secuencial. Es esta
versatilidad que hace difcil el anlisis de procesos BPEL.
Secuencia en BPEL
<flow>
<links><link name=L/></links>
<empty name=A >
<source linkName=L>
</empty>
<empty name=B >
<target linkName=L>
</empty>
</flow>

Flujo de trabajo en YAWL

Fig. 3. Flujo de Trabajo en YAWL equivalente a una actividad flujo con ligas.

6 Mtodo de Traduccin
La traduccin de actividades bsicas BPEL a tareas YAWL se hace de manera directa,
estableciendo una correspondencia uno a uno. En cuanto a las actividades
estructuradas, se aplica de manera recursiva la traduccin de cada actividad
estructurada siguiendo el orden impuesto por la anidacin de las actividades
estructuradas.
Un aspecto crucial es el de determinar la conexin de las ligas de control de flujo en
YAWL. En el caso de una actividad BPEL SEQUENCE, las ligas se acomodan de
manera tal a forzar un flujo secuencial. Este caso es directo. En el caso de actividades

BPEL FLOW, sin embargo, la organizacin de las ligas de control de flujo se ve


afectado por el uso de ligas explcitas.
Para describir el proceso de traduccin, tome como ejemplo el cdigo BPEL en la
Fig. 4, describe la ejecucin en paralelo de dos secuencias. Cada secuencia consta a su
vez de dos actividades. Adems, una liga define un flujo explcito de control entre la
actividad A y la actividad D.
<flow>
<links> <link name=L/> </links>
<sequence>
<empty name=A> <source linkName=L> </empty>
<empty name=B/>
</sequence>
<sequence>
<empty name=C>
<empty name=D> <target linkName=L> </empty>
</sequence>
</flow>

Fig. 4. Ejemplo de una actividad BPEL FLOW con ligas explcitas.

La traduccin inicia agregando dos tareas: un AND-Split para marcar el inicio del
FLOW y otra AND-Join para marcar fin. Observe que las condiciones de entrada y de
salida estn presentes y unidas a las tareas que acabamos de agregar, para completar la
definicin del flujo de trabajo.

(a)

(b)

(c)

Fig. 5. Fases en la trasformacin de un proceso BPEL a un flujo en YAWL.

A continuacin, se construyen las dos secuencias. Iniciemos con la secuencia de


actividades A y B. En primer lugar, se agregan actividades para marcar el inicio y
fin de la secuencia (como para la actividad FLOW). A continuacin, se agregan las
tareas atmicas asociadas cada las actividades BPEL A y B. Todas estas tareas se
unen para formar la secuencia. Este proceso se repite para la secuencia de C y D,
llegando as al flujo mostrado en la Fig. 5b.

Posteriormente, las secuencias son conectadas a las tareas que marcan la entrada y
salida de la actividad FLOW. Finalmente, se agrega la arista que describe la liga de
control explcito. La Fig. 5c corresponde al resultado de la traduccin a YAWL para el
ejemplo.
En esta seccin, se ha esbozado el mtodo de traduccin de un proceso BPEL, a un
flujo en YAWL, mediante un par de ejemplos. En [6] se pueden encontrar la
descripcin del mtodo en mayor detalle.

7 Arquitectura e implementacin del traductor


La traduccin de un proceso en BPEL a un flujo de trabajo equivalente en YAWL se
puede hacer de manera sistematizada. La Fig. 6 muestra la arquitectura del traductor
que desarrollamos en el Lenguaje de programacin Java para este propsito.
Proceso en
BPEL

Proceso en
YAWL
Representacin
equivalente

rbol
DOM
Construccin de
la representacin
equivalente

Construccin
del
rbol
DOM

Generacin
de
cdigo
YAWL

Fig. 6. Arquitectura del sistema de traduccin.

La arquitectura est compuesta de varios mdulos. El mdulo Construccin del


rbol DOM, toma como entrada un proceso en BPEL y genera una representacin de
rbol DOM [4]. En la implementacin, se utiliza Apache Xerces [13]. A partir del rbol
DOM, se obtiene la informacin necesaria para construir una representacin
equivalente en YAWL (como descrito en la seccin anterior). Tal es el propsito del
mdulo Construccin de la representacin equivalente. Finalmente, el mdulo
Generacin de cdigo YAWL, genera el cdigo YAWL en su forma textual XML. El
documento generado puede desplegarse en el motor de ejecucin YAWL. La
generacin del cdigo es hecha con plantillas para Apache Velocity [3].

8 Evaluacin cualitativa
Se hicieron varias pruebas con el traductor propuesto. Se tomaron varios procesos
descritos en BPEL, para cada proceso el traductor gener una representacin textual de
un flujo de trabajo en YAWL.
Cada flujo de trabajo generado se despleg en el motor de ejecucin de YAWL y se
simularon algunos casos de prueba. Para todos ellos el comportamiento del proceso en
YAWL fue el esperado. Cabe mencionar que no existe una herramienta para la
generacin automtica de casos de prueba, lo que facilitara la evaluacin de los flujos
de trabajo generados.

9 Conclusiones y Trabajo Futuro


Verificar la correccin de procesos antes de su implementacin en un entorno real,
permite detectar y corregir errores. Aunque BPEL ha ganado aceptacin, carece de
fundamentos formales que permitan tal verificacin. El traductor propuesto representa
una etapa inicial en el desarrollo de un modelo que represente la semntica total de
BPEL. As, la traduccin de algunas caractersticas de BPEL, tales como los
manejadores de fallas y compensacin, adems del manejo de datos, an no se han
definido.

9 Referencias
[1] F. Curbera y col. Business Process Execution Language for Web Services, version 1.1.
Reporte tnico IBM 2003. Disp. en http://www106.ibm.com/developerworks/library/ws-bpel
[2] R. Farahbod, y col. A Formal Semantics for the Business Process Execution Language for
Web Services. En Web Services and Model-Driven Enterprise Information Systems, pages
144-155, Portugal, May 2005. INSTICC Press.
[3] W. Glass-Husain y col. Apache Velocity template engine, version 1.4. A. S. Foundation, Abril
2004. Disp. en http://jakarta.apache.org/velocity/index.html.
[4] P. Le Hgaret y col. Document Object Model Level 3 Specification. W3C DOM working
group, Octubre 1998. Disp. en http://www.w3.org/DOM/DOMTR#dom3.
[5] F. Leymann y col. Web Services Flow Language (WSFL), version 1.0, Reporte tcnico IBM
2001. Disp. en http://www306.ibm.com/software/solutions/webservices/pdf/WSFL.pdf.
[6] G. Lpez-Lpez. Desarrollo de un Traductor de BPEL4WS a YAWL. Tesis de Licenciatura.
Universidad Autnoma de Tlaxcala, Agosto 2005.
[7] C.A. Petri. Kommunikation mit Automaten. PhD thesis, Fakutat fur Mathematik und Physik,
Technische Hochschule Darmstadt, Darmstadt, Alemania, 1962.
[8] K. Schmidt. LoLA - A Low Level Analyser. En International Conference on Application and
Theory of Petri Nets, LNCS 1825, page 465 ff. Springer-Verlag, 2000.
[9] K. Schmidt y C. Stahl. A Petri net semantic for BPEL4WS - validation and application. En
Proceedings of the 11th Workshop on Algorithms and Tools for Petri Nets (AWPN'04).
Octubre 2004.
[10] C. Stahl. A Petri Net Semantics for BPEL. Reporte tcnico HU-188, Universidad de
Humboldt en Berlin, Julio 2005.
[11] S. Thatte. XLANG: Web Services for Business Process Design. Reporte tcnico Microsoft
2001. Disp. en http://www.gotdotnet.com/team/xml_Fwsspecs/xlang-Dc
[12] W.M.P. van der Aalst, A.H.M. ter Hofstede: YAWL: Yet Another Workflow Language,
Versin Revisada. Reporte Tcnico FIT-TR-2003-04, Universidad Tecnolgica de
Queensland, 2003.
[13] PMC. Apache Xerces XML parser versin 2.6.2. A. S. Foundation, Febrero 2004. Disp.en
http://xml.apache.org/xerces2-j/index.html.

Vous aimerez peut-être aussi