Maestría en Ingeniería - PUJC – Departamento de...

Preview:

Citation preview

Maestría en Ingeniería Arquitectura de Software

Sesión 12

Fernando Barraza A., Ms.C fernando.barraza@gmail.com

Sesión 12 •  Objetivo: Brindar al estudiante una visión general de

BPM, BPMN y BPEL dentro de un estilo SOA •  Temas:

–  SOA y los modelos de negocio de empresa –  BPM y la relación con SOA y sus tecnologías –  Procesos de Negocio –  Estándares y Notaciones para modelar,

implementar y monitorear procesos de negocio •  BPMN •  BPEL, WS-BPEL •  BAM

–  Transformaciones de modelos

Ciclo de vida SOA

Solución conceptual

BPM, BPEL, BAM, BPMN, SOA, Web Services

BPM

SOA BPMN

BPEL

BAM

Integración de estándares en el modelo de negocio de la empresa

Estándar Objetivo Responsable BPM Modelar el proceso total de negocio Responsables y

consultores del Negocio BPMN Representar el modelo de negocio Consultor de Negocio BPEL Especificar el proceso en un código

ejecutable Arquitecto de Sistema

SOA Implementar BPM con servicios Arquitecto de Software y Sistema

Web Services Integrar aplicaciones mediante servicios

Desarrolladores de Software

BAM Monitorear los procesos de negocio Analista de Negocios

Procesos de negocio

•  Un proceso de negocio es un conjunto de actividades que generan un valor para la empresa

•  La orientación SOA permite modelar un proceso como una “orquestación” de servicios

Ejemplo Modelo de Procesos

C heck C ompleteness

ObtainAdditional Information

C heck C redit His tory

C heck Income S ource(s )

C redit C ardApplication

Assess  Application

Make C redit Offer

Notify R ejection

BPM

•  Business Process Management – El BPM son las actividades que tienen como

objetivo el análisis, diseño, ejecución y monitorización de los procesos de negocio

BPM

•  Características de BPM – Debe permitir gestionar el ciclo de vida de los

servicios – Simular procesos de negocio – Monitorizar KPIs de los procesos de negocio – Agilidad en el cambio de los procesos

BPM

•  Relación BPM, SOA y Web Services – Los Web Services son la tecnología más

adecuada para implementar arquitecturas SOA

– Las arquitecturas SOA representan adecuadamente procesos de negocio

– El BPM permite la implantación de un proceso de negocio usando una arquitectura SOA.

BPM

•  ¿Cómo genera valor el BPM? – La tecnología debe dar soporte a los

procesos de negocio. – El mercado actual es muy cambiante. Los

cambios en los procesos deben ser rápidos – El BPM permite ver los procesos como una

sucesión funcionalidades atómicas. – Consecuencia: Es fácil y rápido cambiar los

procesos de negocio Ventaja competitiva

BPM

•  ¿Cómo empezar a utilizar BPM? – Empezar por un proceso que funcione mal –  Intentar que la lógica de negocio cubra

distintos actores tanto internos como externos

BPM •  Puntos clave de éxito

–  La organización debe tener perfectamente definidos sus procesos de negocio

–  Seleccionar los procesos de negocio susceptibles de usar BPM

–  Definir correctamente los servicios (funcionalidad, granularidad, etc…)

–  Seleccionar las KPI adecuadas –  Monitorizar, monitorizar, monitorizar,… –  Tener una orientación de “mejora continua” de los

procesos

Notaciones para Modelar Negocios

•  Business Process Modelling Notation (BPMN)

•  Event-driven Process Chains (EPC) •  Business Process Execution Language

(BPEL) •  State-machines y variantes (ej: IBM

Business State Machine, WWF) •  Petri nets y variantes (ej: YAWL)

BPMN

•  Business Process Modeling Notation. – Modelado de procesos – Es el lenguaje del consultor de negocio. – Se usa para representar el proceso de

negocio. – El modelo será traducido posteriormente a

“lenguaje máquina”(BPEL) para ser ejecutado.

– Ojo: Hay una tendencia a usar UML 2.0+ en vez de BPMN.

Elementos bàsicos BPMN

E vent Tas k F low Gateway

BPMN: Vista detallada

S tart E ventIntermediate 

Mes s age E ventIntermediate T imer E vent

Tas k Parallel F ork Gateway

Parallel J oin Gateway

E nd Terminate E ventE nd E vent

F low E vent‐bas ed Dec is ion Gateway

receive

Merge Gateway

Data‐bas ed Dec is ion Gateway

c

~c

Ejemplo BPMN

C heck s tock availability

R eject order

C onfirm order

S end invoice

S hip goods

BPEL

•  Business Process Execution Language •  Es el lenguaje “máquina” que permite la

implementación del BPM. •  Es un estándar soportado por la mayoría

de fabricantes •  Físicamente es un fichero XML

BPEL

•  ¿Qué aporta? – Es la unión entre negocio y tecnología – Al ser un estándar usado por los fabricantes:

•  Permite elegir entre distintas plataformas •  Permite la interoperabilidad •  Fomenta la competitividad y la mejora de las

plataformas

WS-BPEL  Web Services Business Process

Execution Language (WS-BPEL) es un lenguaje para describir procesos de negocio basados en Web Services  WS-BPEL ejecuta la funcionalidad únicamente

con interfaces tipo WS  La especificación de WS-BPEL es administrada

por OASIS  WS-BPEL es un lenguaje de orquestación

no de coreografía

Orquestación vs. Coreografía Orquestación   Especifica un proceso

ejecutable con intercambio de mensajes entre sistemas los cuales son controlados por el diseñador de la orquestación.

Coreografía   Especifica un protocolo peer-

to-peer con la secuencia de mensajes intercambiados para garantizar la interoperabilidad

Una coreografía no es directamente ejecutable y requiere ser impementada a través de un proceso de orquestación (por ej. BPEL)

BPEL como orquestador

Ejemplo BPEL <sequence> <invoke “check stock availability” …/> <switch (…) …/> <case “reject”> <invoke “order rejection” …/> </case> <otherwise> <sequence> <invoke “order acceptance” … /> <flow> <invoke “invoicing” … /> <invoke “ship goods” … /> </flow> </sequence> </otherwise> </switch> </sequence>

Definición de proceso en WS-BPEL

process

imports

Declare dependencies on external XML Schema or WSDL definitions extensions

Declare namespaces of WS-BPEL extension

attributes and elements

variables Data holding state of a business process or exchanged with partners

partner links

Relationships that a WS-BPEL process will employ in its behavior

correlation sets

Application data fields that together identify a

conversation

message exchanges

Relationship between inbound and outbound

message activities

event handlers

Concurrently process inbound messages or timer alarms

fault handlers

Deal with exceptional situations in a process

primary activity

Perform the process logic – any number of activities may be recursively nested XML

schemas

WSDL definitions

Web Service

Financial institution‘s Web service implementation (Loan Approver)

Web Service

WSDL Loan Approval PortType

Loan Approval Process

invoke

receive

reply

Modelo de composición recursiva

Los procesos WS-BPEL son expuestos como Web Services a los socios de negocio

Los procesos WS-BPEL interactúan con los Web services expuestos por los socios de negocio

Elemento “Partner Link” •  WDSL describe la funcionalidad de los servicios del partner •  El enlace al partner describe el tipo de relación con el partner

describiendo los tipos de puertos usado en la relación peer-to-peer

•  Ejemplos: <partnerLinks>

<partnerLink name=“Invoice” partnerLinkType=“inv:InvoiceType” partnerRole=“InvoiceServiceProvider”/> <partnerLink name=“Employee” partnerLinkType=“emp:EmployeeType” partnerRole=“EmployeeServiceProvider”/>

</partnerLinks>

Reference to WDSL portType element

Partner Links gráficamente process

partner link

partner link type

Peer-to-peer conversational partner relationship

WSDL port type

myRole

Provided port type

WSDL port type

partnerRole

Required port type

receive

Inbound request – service provided by the process

invoke

Outbound request – service required by the process

Variable Element

•  Es usado para almacenar información de la lógica del workflow

•  Las variables pueden contener mensajes enteros y conjuntos de datos con XSD

•  Ejemplo:

<variables> <variable name=“EmployeeHoursRequest” messageType=“emp:getWeeklyHoursRequestMessage”/>

</variables>

Message Name from Partner

Process Definition

Variables gráficamente

process

assign

xsl:transform

receive

request

response

invoke

request

reply

response

42

WSDL message

WSDL message

WSDL messages

Variables defined using WSDL messages

42 XML schemas

XML Schema elements / types

Variables defined using XML schema elements or types

Properties y Correlation Sets •  Como identificar instancias con estado (stateful instances) con interfaces

WS sin estado? •  Una instancia de proceso es asignada a una o más llaves

–  Datos de negocios son usados como llaves, ej: customerID –  Una llave puede ser compuesta, Ej: (customerID, orderNumber) –  WS-BPEL llama una llave como un conjunto rolrelacionado (correlation set) –

es usado para correlacionar un mensaje entrante con una instanciad de proceso

Process 4 (0123,15)

Process 3 (0815,42)

Process 2 (4711,37)

Process 1 (0815,12)

0815 42

Message 2

customerID

orderNumber

4711 37

Message 1

process

Actividades Basicas

receive reply

invoke Invoke a one-way or request-response operation

Do a blocking wait for a matching message to arrive / send a message in reply

validate

assign Update the values of variables or partner links with new data

Validate XML data stored in variables

throw

rethrow

Generate a fault from inside the business process

Forward a fault from inside a fault handler

exit Immediately terminate execution of a business

process instance

compensate

compensateScope

Invoke compensation on all completed child scopes

in default order

Invoke compensation on one completed child scope

wait Wait for a given time

period or until a certain time has passed

empty No-op instruction for a business process

extensionActivity Wrapper for language

extensions

process

flow Contained activities are executed in parallel, partially ordered through control links

sequence Contained activities are performed sequentially in lexical order

while Contained activity is repeated while a predicate holds

repeatUntil Contained activity is repeated until a predicate holds

pick Block and wait for a suitable message to arrive

(or time out)

forEach Contained activity is performed sequentially or in parallel, controlled by a specified counter variable

if-elseif-else Select exactly one branch of activity from a set of

choices

scope Associate contained activity with its own local variables,

partner links, etc., and handlers

Actividades Estructuradas

2. N. 1. …

B C

A

c

c

c1 c2 …

2. N. 1. …

… A M2 M1

process

Scopes

scope

scope

scope

scope scope

scope

scope

Scopes provide a context which influences the execution behavior of its enclosed activities

Isolated scopes provide control of concurrent access to shared resources

scope

Local declarations – partner links, message exchanges, variables, correlation sets

Local handlers – event handlers, fault handlers, a termination handler, and a compensation handler

Compensation handler to undo persisted effects of

already completed activities

Termination handler to deal with forced scope termination

(external faults)

primary activity

scope

Compensation Handling

process

scope

invoke

invoke

invoke

fault handler

compensate compensation

handler

compensate

compensation handler

compensation handler

invoke

invoke

1. Do some work (successfully invoke two services)

2. Invoke another service (throws fault)

3. The fault triggers the process-level fault handler

4. Compensate previous work

5. Propagate compensation

6. Undo work (in reverse order)

BPEL: Ejemplo de Sintáxis Definición de Partner <?xml version="1.0" encoding="utf-8"?>  <process name="insuranceSelectionProcess" targetNamespace="http://packtpub.com/bpel/example/" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:ins="http://packtpub.com/bpel/insurance/" xmlns:com="http://packtpub.com/bpel/company/" >   <partnerLinks> <partnerLink name="client" partnerLinkType="com:selectionLT" myRole="insuranceSelectionService"/>   <partnerLink name="insuranceA" partnerLinkType="ins:insuranceLT" myRole="insuranceRequester" partnerRole="insuranceService"/>   <partnerLink name="insuranceB" partnerLinkType="ins:insuranceLT" myRole="insuranceRequester" partnerRole="insuranceService"/> </partnerLinks> …  

BPEL: Ejemplo de sintáxis Definición de variables <variables> <!-- input for BPEL process --> <variable name="InsuranceRequest" messageType="ins:InsuranceRequestMessage"/> <!-- output from insurance A --> <variable name="InsuranceAResposne" messageType="ins:InsuranceResponseMessage"/> <!-- output from insurance B --> <variable name="InsuranceBResposne" messageType="ins:InsuranceResponseMessage"/> <!-- output from BPEL process --> <variable name="InsuranceSelectionResponse" messageType="ins:InsuranceResponseMessage"/> </variables> ...

BPEL: Ejemplo de sintáxis Pasos de procesos <sequence> <!-- Receive the initial request from client --> <receive partnerLink="client" portType="com:InsuranceSelectionPT" operation="SelectInsurance" variable="InsuranceRequest" createInstance="yes" /> <!-- Make concurrent invocations to Insurance A and B --> <flow>   <!-- Invoke Insurance A web service --> <invoke partnerLink="insuranceA" portType="ins:ComputeInsurancePremiumPT" operation="ComputeInsurancePremium" inputVariable="InsuranceRequest" outputVariable="InsuranceAResposne" />   <!-- Invoke Insurance B web service --> <invoke partnerLink="insuranceB" portType="ins:ComputeInsurancePremiumPT" operation="ComputeInsurancePremium" inputVariable="InsuranceRequest" outputVariable="InsuranceBResposne" />   </flow> …  

BPEL: Ejemplo de sintáxis Pasos de procesos (Cont’) <!-- Select the best offer and construct the response --> <switch> <case condition="bpws:getVariableData('InsuranceAResposne', 'confirmationData','/confirmationData/Amount') <= bpws:getVariableData('InsuranceBResposne', 'confirmationData','/confirmationData/Amount')"> <!-- Select Insurance A --> <assign> <copy> <from variable="InsuranceAResposne" /> <to variable="InsuranceSelectionResponse" /> </copy> </assign> </case> <otherwise> <!-- Select Insurance B --> <assign> <copy> <from variable="InsuranceBResposne" /> <to variable="InsuranceSelectionResponse" /> </copy> </assign> </otherwise> </switch> <!-- Send a response to the client --> <reply partnerLink="client" portType="com:InsuranceSelectionPT" operation="SelectInsurance" variable="InsuranceSelectionResponse"/>   </sequence> </process>

Transformación de Modelos

•  BPMN-to-BPEL – Transformar modelos producidos por analistas

en modelos para desarrolladores (y viceversa) – Comunmente soportados en herramientas

comerciales pero de forma limitada. •  BPEL-to-Petri nets

– Para análisis y verificación •  BPMN-to-Petri nets

– Para análisis y verificación (ej: deadlock-freeness)

BPMN-to-BPEL: Constructs

Bounded multiple‐instance task (D) Unstructured loop

L ivelockUnbounded multiple‐instance tasks (C )

A B C D

A B C D

A D

A

B

C

D

BPMN-BPEL: Structured Components

( a )   S E QUENC E ‐component

( b )   F L OW‐component

<s equence>    <invoke name="t1"/>    <receive name="e1"/>    . . .    <invoke name="tn"/></s equence>

tc

<flow>    <invoke name="t1"/>    <wait name="e2"/>    . . .    <invoke name="tn"/></flow>

tc

t1

e1

tn

t1

tn

e2

C

C

BPMN-BPEL: Structured Components

( e )   WHIL E ‐component

( f )   R E PE AT‐component

<while c ondition="c1">    <invoke name="t1"/></while>

tc

<s equence>    <invoke name="t1"/>    <while c ondition="c1">         <invoke name="t1"/>    </while></s equence>

tc

c1

~c1

t1C

c1

~c1t1

C

BPMN-BPEL: Structured Components

( c  )   S WITC H‐component

( d )   P IC K ‐component

<switch>    <c as e c ondition="c1">        <invoke name="t1"/>    </c as e>    <c as e c ondition="c2">        <receive name="e1"/>    </c as e>    . . .    <otherwis e>        <empty/>    </otherwis e></switch>

tc

tc

<pic k>    <onMes s age name="e1"/>        <invoke name="t1"/>    </onMes s age>    <onAlarm name="e2">        <empty/>    </onAlarm>    . . .    <onMes s age name="tr">        <invoke name="tn"/>    </onMes s age></pic k>

tn

t1

tr(receive)

e1

e2

C

t1

c2

default

c 1

e1

C

Ejemplo: Estructuración de componentes

C heck s tock availability

R eject order

C onfirm order

S end invoice

S hip goods

F low‐component

S witch‐component

S equence‐component

S equence‐component

BAM

•  Business Activity Monitoring – Son las actividades que van a permitir

controlar los procesos de negocio (monitorización).

– Sus funciones principales son: •  Seguimiento del proceso •  Detectar cuellos de botella •  Aumentar la capacidad de reacción ante

problemas

BAM

•  ¿Qué debe hacer la monitorización? – La monitorización con BAM debe tener una

orientación hacia el proceso de negocio. – Debe generar alarmas ante las KPI definidas

para el proceso de negocio. – Debe dar información en tiempo real y

agregada – La información generada debe permitir la

“mejora continua”

Caso BAM

BAM recursos

Referencias y Créditos

•  Rich Powers, CSC 9010 – Service Oriented Architecture. Spring 2008

•  Jason Bloomberg - “The role of the service-oriented architect”. The Rational Edge, http://www.therationaledge.com/may_03/f_bloomberg.jsp

•  Werner Vogels - “Web services are not distributed objects”. Http://weblogs.cs.cornell.edu/AllThingsDistributed/archives/000119.html - 2003

•  Luis Felipe Cabrera, Christopher Kurt, Don Box. “An introduction to the Web Service Architecture and its specifications”. MSDN Library, Setiembre 2004

Recommended