LENGUAJE DE EJECUCIÓN DE PROCESOS DE NEGOCIO2009UNIVERSIDAD VERACRUZANABusiness Process Execution LanguageSIO_EQUIPO02INTE...
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
BPEL_sio2009
Upcoming SlideShare
Loading in...5
×

BPEL_sio2009

885

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
885
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

BPEL_sio2009

  1. 1. LENGUAJE DE EJECUCIÓN DE PROCESOS DE NEGOCIO2009UNIVERSIDAD VERACRUZANABusiness Process Execution LanguageSIO_EQUIPO02INTEGRANTES:Cruz Pérez José JavierLeyva González Alejandra BereniceLing Martínez DanielVilla González Roberto DavidCATOGA<br />INTRODUCCIÓN<br />El Lenguaje de Ejecución de Procesos de Negocio para Servicios Web (BPEL4WS) es un lenguaje basado en XML que describe formalmente los procesos de negocio y protocolos de interacción. BPEL4WS define como se conectan entre sí los servicios Web a fin de realizar una determinada tarea. La especificación BPEL4WS se fundamenta en las especificaciones de servicios Web como XML, SOAP y WSDL, con el objetivo de facilitar el desarrollo de sofisticados escenarios de servicios Web que incluyen transacciones de negocio. BPEL4WS servirá como base para la orquestación de servicios Web mediante la creación de las especificaciones necesarias para describir formalmente procesos de negocio interoperables y protocolos de interacción entre ellos.<br />Business Process Execution Language<br />BPEL4WS o Business Process Execution Language for Web Services pretende ser el estándar para la composición de Workflows basados en servicios web y teniendo en cuenta el apoyo que está teniendo de diferentes fabricantes, va por buen camino.IBM ha estado ofreciendo durante los últimos meses una serie de artículos sobre BPEL4WS que nos pueden ayudar a comprender y a iniciarnos en esta tecnología. <br />Business Process Execution Language, (en castellano, Lenguaje de Ejecución de Procesos de Negocio), es un lenguaje estandarizado por OASIS para la composición de servicios web. Está desarrollado a partir de WSDL y XLANG, ambos lenguajes orientados a la descripción de servicios Web. Básicamente, consiste en un lenguaje basado en XML diseñado para el control centralizado de la invocación de diferentes servicios Web, con cierta lógica de negocio añadida que ayuda a la programación en gran escala.<br />BPEL es un lenguaje de orquestación, no un lenguaje coreográfico. La diferencia mayor entre ambos es el ámbito. Un modelo de orquestación provee un ámbito específicamente enfocado en la vista de un participante en particular (ejemplo: un modelo par-a-par). En cambio, un modelo coreográfico abarca todos los participantes y sus interacciones asociadas, dando una vista global del sistema. Las diferencias entre orquestación y coreografía están basadas en analogías: la orquestación describe un control central del comportamiento como un director en una orquesta, mientras que la coreografía trata sobre el control distribuido del comportamiento donde participantes individuales realizan procesos basados en eventos externos, como en una danza coreográfica donde los bailarines reaccionan a los comportamientos de sus pares.<br />A través de un documento XML BPEL, un analista de negocio es capaz de representar la lógica asociada y los elementos con los que se verá relacionado. Estos elementos serán servicios Web y la lógica el proceso BPEL.<br />Si imaginamos un flujo de negocio determinado, con una entrada A y una salida Z, este se podría componer de muchos procesos internos que se lanzarían dependiendo de valores y respuestas anteriores. BPEL sería el encargado de orquestar todo el proceso ordenando qué proceso ejecutar (servicio Web) y en qué momento.<br />Este lenguaje fue concebido por los grandes de la informática como lo son Oracle, BEA Systems, IBM, SAP y Microsoft entre otros.<br />La constitución de BPEL4WS ha pasado por varios periodos: <br />En Abril de 2003, IBM y Microsoft, junto con BEA, SAP y Siebel enviaron la especificación 1.1 a OASIS para su estandarización en el Web Services BPEL Technical Committee.  <br />Aunque BPEL4WS apareció en versiones 1.0 y 1.1, el comité técnico de OASIS votó el 14 de Septiembre de 2004 la especificación 2.0 bajo el nombre de WS-BPEL. Este cambio en nombre y versión refleja las significativas (y en muchos casos  incompatibles) diferencias que existen entre BPEL4WS 1.1 y WS-BPEL 2.0. En general, se asume que cuando se habla de BPEL no se tiene en cuenta la versión, y cuando se indica una versión ser referencia a una u otra especificación.<br />Es un lenguaje de alto nivel que lleva el concepto de servicio un paso adelante al proporcionar métodos de definición y soporte para flujos de trabajo y procesos de negocio<br />El enfoque sobre procesos de negocios modernos más el conjunto de conocimientos de los lenguajes WSDL y XLANG, guiaron a BPEL a adoptar los servicios Web como su mecanismo de comunicación externa. Así las facilidades de mensajería BPEL dependen del uso del WSDL para describir los mensajes entrantes y salientes.<br />Adicionalmente a proveer facilidades para habilitar el envío y recepción de mensajes, el lenguaje de programación BPEL también posibilita:<br />Un mecanismo de correlación de mensajes basado en propiedades.<br />Variables del tipo XML y WSDL.<br />Un modelo de lenguaje extensible de componentes para permitir escribir expresiones y consultas (queries) en múltiples lenguajes: BPEL soporta Xpath 1.0 predeterminadamente.<br />Construcciones de programación estructurada incluyendo " if-then-elseif-else" , " while" , " sequence" (posibilita la ejecución de comandos en orden) y " flow" (posibilita la ejecución de comandos en paralelo).<br />Un sistema de ámbito (scoping) que permite el encapsulamiento de lógica con variables locales, manejadores de fallo, manejadores de compensación y manejadores de eventos.<br />Ámbitos serializados para controlar los accesos a las variables.<br />La representación de BPEL puede hacerse con cualquier herramienta que soporte este lenguaje como puede ser ActiveBPEL o ODE (actualmente como proyecto Incubator en la Apache Foundation). Por el momento, no existe notación gráfica para WS-BPEL, y el comité técnico de OASIS decidió dejarlo fuera del alcance. Algunos vendedores han creado sus propias notaciones, las cuales se benefician de que la mayoría de las construcciones en BPEL están estructuradas en bloques, lo que facilita que se pueda representar de manera directa y visualmente en lo que se denomina como estructuro-gramas.   <br />Otras empresas han propuesto usar un lenguaje para la modelización de procesos radicalmente diferente llamado Business Process Modeling Notation (BPMN), que sirve para captura las descripciones de los procesos BPEL  en un entorno gráfico de usuario, para lo que se utiliza un mapeo informal e incompleto de BPMN a BPEL 1.1 que aparece en la especificación de BPMN. No obstante, es un área todavía poco madura y han aparecido algunas herramientas open-source como BPMN2BPEL que incluye una traducción entre ambos lenguajes más elaborada. Sin embargo, el desarrollo de estas herramientas de conversión no está exento de problemas ya que las transformaciones entre ambos lenguajes no es trivial.  <br />Objetivos del diseño de BPEL<br />Definir procesos de negocio que interactúan con entidades externas mediante operaciones de un servicio Web definidas usando WSDL 1.1 y que se manifiestan a sí mismas como servicios Web.<br />Definir procesos de negocio utilizando un lenguaje basado en XML. No definir una interpretación gráfica de procesos o proveer de una metodología de diseño en particular.<br />Definir una serie de conceptos de orquestación de servicios Web que pretenden ser usados por vistas internas o externas de un proceso de negocio.<br />Proveer sistemas de control jerárquicos y de estilo gráfico, que permitan que su uso sea lo más fusionado e inconsútil posible. Esto reduciría la fragmentación del espacio del modelado de procesos.<br />Proveer funciones de manipulación simple de datos, requeridas para definir datos de procesos y flujos de control.<br />Soportar un método de identificación de instancias de procesos que permita la definición de identificadores de instancias a nivel de mensajes de aplicaciones. Los identificadores de instancias deben ser definidos por socios y pueden cambiar.<br />Brindar la posibilidad de la creación y terminación implícitas de instancias de procesos, como un mecanismo básico de ciclo de vida. Operaciones avanzadas de ciclo de vida como por ejemplo " suspender" y " continuar" pueden agregarse en futuras versiones para mejorar el manejo del ciclo de vida.<br />Definir un modelo de transacción de largo plazo que se base en técnicas probadas tales como acciones de compensación y ámbito, de tal manera a brindar recuperación a fallos para partes de procesos de negocios de largo plazo.<br />Usar servicios Web como modelo para la descomposición y ensamblaje de procesos.<br />Construir sobre estándares de servicios Web (aprobados y propuestos) tanto como sea posible, de manera modular y extensible.<br />Estructura de un Proceso de Negocio con BPEL La estructura básica que se utiliza para modelar un proceso de negocio es la siguiente:   <br />    <process  name=" ncname"                    targetNamespace=" uri"                 queryLanguage=" anyURI"                 expressionLanguage=" anyURI"                 suppressJoinFailure=" yes|no"                 enableInstanceCompensation=" yes|no"                 abstractProcess=" yes|no"                  xmlns=" http://schemas.xmlsoap.org/ws/2003/03/business-process/" >        <partnerLinks>                <partnerLink name=" ncname"                                       partnerLinkType=" qname"                                     myRole=" ncname"                                       partnerRole=" ncname" ?>                 </partnerLink>      </partnerLinks>      <partners>                 <partner name=" ncname/" >                              <partnerLink name=" ncname" />                  </partner>      </partners>        <variables>                   <variable name=" ncname"                                    messageType=" qname"                                  type=" qname"                                    element=" qname" />        </variables>       <correlationSets>                    <correlationSet name=" ncname"                                            properties=" qname-list" />                    </correlationSets>       <faultHandlers>                    <catch  faultName=" qname"                                faultVariable=" ncname" >                    </catch>                    <catchAll></catchAll>     </faultHandlers>     <compensationHandler></compensationHandler>     <eventHandlers>                    <onMessage partnerLink=" ncname"                                          portType=" qname"                                         operation=" ncname"                                           variable=" ncname" >                            <correlations>                                       <correlation set=" ncname"                                                             initiate=" yes|no" >                             <correlations>                    </onMessage>                       <onAlarm for=" duration-expr"                                        until=" deadline-expr" >                   </onAlarm>      </eventHandlers> </process>  <br />Los atributos de que definen a la etiqueta “process” son los siguientes: <br />queryLanguage: Este atributo especifica el lenguaje de consulta XML usado para la selección de los nodos cuando asignamos, realizamos la definición de una propiedad o cualquier otro uso. El valor por defecto para este atributo es XPath 1.0 representado por la URI de la especificación XPath 1.0 siguiente: http://www.w3.org/TR/1999/REC-xpath-19991116.expressionLanguage: Este atributo especifica el lenguaje de expresión usado en el proceso. Por defecto el valor de este atributo es XPath 1.0, representado por la URI de la especificación XPath 1.0 anteriormente indicada.  suppressJoinFailure: Este atributo determina cuando el fallo de tipo “joinFailure” debe ser eliminado para todas las actividades del proceso.. El efecto de este atributo al nivel del proceso puede ser sobrescrito por una actividad usando un valor diferente para el atributo. El valor por defecto para este atributo es “no”.  enableInstanceCompensation: Este atributo determina cuando la instancia de un proceso como un todo puede ser compensado por una plataforma específica. El valor por defecto de este atributo es “no”.  abstractProcess: Este atributo especifica cuando un proceso está siendo definido como abstracto en vez de ejecutable. El valor por defecto de este atributo es “no”. <br />  La expresión representada por la palabra " activity" puede ser cualquiera de las siguientes:<br />Etiqueta <receive> <br />Se utiliza para recibir un mensaje de un determinado tipo. La sintaxis de esta etiqueta es la siguiente:  <br /> <receive partnerLink=" ncname"                   portType=" qname"                   operation=" ncname"                   variable=" ncname"                   createInstance=" yes|no" >            <correlations>                        <correlation set=" ncname"                                                 initiate=" yes|no" >            </correlations>  </receive> <br />Etiqueta <reply> Se utiliza para permitir a un proceso de negocio enviar un mensaje de respuesta a un mensaje recibido con la etiqueta <receive>. La combinación de <receive> y <reply> forma una operación petición-respuesta en el WSDL portType del proceso. La sintaxis completa de esta etiqueta es la siguiente: <br /> <reply    partnerLink=" ncname"                 portType=" qname"                     operation=" ncname"                 variable=" ncname"                 faultName=" qname”>          <correlations>                  <correlation set=" ncname"                                            initiate=" yes|no" >          </correlations>  </reply><br />Etiqueta <invoke> <br />Sirve para permitir al proceso de negocio invocar operaciones petición-respuesta unidireccional ofrecida por un portType de un WSDL. La sintaxis de la etiqueta es la siguiente:   <br /> <invoke partnerLink=" ncname"                  portType=" qname"                  operation=" ncname"                  inputVariable=" ncname"                  outputVariable=" ncname" >         <correlations>                   <correlation set=" ncname"                                             initiate=" yes|no" >          </correlations>           <catch faultName=" qname"                         faultVariable=" ncname" >            </catch>            <catchAll>            </catchAll>              <compensationHandler>            </compensationHandler>   </invoke><br />Etiqueta <assign> <br />Esta etiqueta se utiliza para permitir la actualización de los valores de una variable con nuevos datos. Cada etiqueta <assign> puede contener cualquier número de elementos elementales de asignación, La sintaxis de la etiqueta es la siguiente:  <br />    <assign >     <copy>from-spec to-spec</copy> </assign>  <br />Etiqueta <throw> <br />Esta etiqueta se utiliza cuando queremos generar un error (excepción) desde dentro del proceso de negocio. La sintaxis es la siguiente: <br /><throw faultName=" qname"                   faultVariable=" ncname" >   </throw>    <br />Etiqueta <wait> <br />Mediante <wait> podemos forzar una espera del proceso de negocio durante un periodo de tiempo determinado. Tiene la siguiente sintaxis:  <br />  wait (for=" duration-expr" |          until=" deadline-expr" )> </wait>  <br />Etiqueta <empty> <br />Sirve cuando queremos introducir dentro de un proceso de negocio una instrucción vacía y que no presenta funcionalidad. Suele ser útil para realizar labores de sincronización entre actividades. La etiqueta tiene la siguiente sintaxis: <br /><empty> </empty>  <br />Etiqueta <sequence> <br />Mediante la etiqueta <sequence> podemos definir una colección de actividades que tienen que realizarse de manera secuencial (en orden léxico). La sintaxis es:  <br /> <sequence > </sequence> <br />Etiqueta <switch> <br />Con <switch> podemos crear ramas de bifurcación, de manera que de todas las definidas indiquemos cuál de ellas queremos seguir. La sintaxis en este caso es: <br /> <switch >          <case condition=" bool-expr" >          </case>          <otherwise>          </otherwise> </switch> <br />Etiqueta <while> <br />Mediante <while> podemos indicar que una actividad debe de repetirse mientras cierto criterio sea cierto. La sintaxis de la etiqueta es la siguiente: <br /> <while condition=" bool-expr" > </while> <br />Etiqueta <pick> <br /><pick> permite bloquear y esperar a la llegada de un determinado mensaje o a que salte una alarma de tiempo. Cuando uno de estas dos circunstancias ocurren la actividad asociada es ejecutada. La sintaxis completa de la etiqueta es:   <br /> <pick createInstance=" yes|no" >         <onMessage partnerLink=" ncname"                                   portType=" qname"                                   operation=" ncname"                                   variable=" ncname" >                   <correlations>                                         <correlation set=" ncname"                                                   initiate=" yes|no" >                   </correlations>          </onMessage>          <onAlarm (for=" duration-expr" |                               until=" deadline-expr" )>          </onAlarm> </pick> <br />Etiqueta <flow> <br />Con esta etiqueta podemos indicar una o más actividades que tienen que ser realizadas de manera concurrente. Dentro de un <flow> se puede utilizar la etiqueta <link> que permite introducir dentro de las actividades concurrentes estructuras de control. La sintaxis en este caso es: <br /> <flow >       <links>           <link name=" ncname" >      </links>  </flow> <br />Etiqueta <scope> <br />La etiqueta <scope> es útil cuando queremos definir una actividad enlazada con sus propias variables, manipuladores de error y manipuladores de compensación. La sintaxis que sigue esta etiqueta es la siguiente:  <br /> <scope variableAccessSerializable=" yes|no" >         <variables></variables>         <correlationSets></correlationSets>         <faultHandlers></faultHandlers>         <compensationHandler></compensationHandler>         <eventHandlers></eventHandlers>  </scope><br />Bibliografía<br />http://www.javahispano.org/contenidos/es/quiero_saber_todo_sobre_bpel4ws/<br />http://www.microsoft.com/spain/interop/ip/stdlicprog.mspx<br />http://www.lawebsemantica.com/contents/webSemantica/procesos/bpel1.html<br />

×