View
228
Download
6
Category
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