Upload
lorna
View
96
Download
1
Embed Size (px)
DESCRIPTION
Fakultet organizacionih nauka Katedra za informacione sisteme. Modelovanje poslovnih procesa. Business Process Execution Language BPEL. Karkaterisitke i zahtevi poslovnih sistema. Danas poslovni sistemi zahtevaju brzu prilagodljivost potrebama korisinika i uslova tržista - PowerPoint PPT Presentation
Citation preview
Modelovanje poslovnih procesa
Fakultet organizacionih naukaKatedra za informacione sisteme
Business Process Execution Language
BPEL
Karkaterisitke i zahtevi poslovnih sistema
Danas poslovni sistemi zahtevaju brzu prilagodljivost potrebama korisinika i uslova tržista EAI i B2B interkacije (pomoću web servisa)
Potrebe za internom and externom fleksibilnošću
Bez zajedničkog skupa standarda, svaka organizacija svoje specifične poslovne protokole Mala fleksibilnost za pravu web servis kolaboraciju
Komozicija Web servisaDefinicija:
Obezbedjuje otvoren, baziran na strandardu pristup povezivanju web servisa da bi se kreirali poslovni procesi višeg nivoa.
Standardi su definisani da bi smanjili složenost pri kompoziciji web servisa, kako bi smanjili vreme i troškove, i povećali ukupnu efikasnost u psolovanju
Kompozicija web servisa
orderFromSupplier wsdl
orderReceived wsdl
replyCustomer wsdl
checkInventory wsdl
shipOrder wsdl
UDDI
XY Z CORP
wsdl
wsdl
wsdl
wsdl
wsdl Supplier 1
Supplier 2
Supplier 3
XY Z CORP
Supplier 1 Supplier 2 Supplier 3
replyCustomer wsdlwsdlorderReceived wsdlwsdl
orderFromSupplier wsdlwsdl
checkInventory wsdlwsdl shipOrder wsdlwsdl
wsdl
wsdl wsdl wsdl
Standardi BPEL4WS (a.k.a. BPEL) – Business Process
Execution Language for Web Services IBM and Microsoft
WSCI – Web Services Choreography Interface Sun, SAP, BEA, and Intalio
BPML – Business Process Management Language BPMI.org (chartered by Intarlio, Sterling Commerce,
Sun, CSC, and others)
Standardi za kompoziciju servisa uodnosu na dva modela procesa (apstraktni i izvršni)
Istrorija razvoja standarda
Source: http://www.radikalfx.com/bpel/usage.html
BPEL procesi i interkcije su stogo tipizirani
BPEL se gradi pomocu WSDL opisa servisa
Strogo tipiziranInterkacija BPEL procesa preko skupa tipiziranih kanala:
Partner link = par WSDL port types BPEL tokovi su usko povezani sa
specifičnim interfjesima i tipovima poruka
BPEL podržava tradicionalne WfMS osobine:
Statically analyzable Transakcije, pouzdanost,
monitoring izvršavanja, itd. Odgovara (SOA) modelu aplikacija
za itnegraciju aplikacija preko dobro definisanih intefejsa servisa
BPEL je proširen za podršku interkacije sa ljudima kao akterima
BPEL4People: servisi koje izvršavaju ljudi
Service B
Partner Link
B’s WSDL
Process WSDL
BPEL4WSBaziran na XML
Opisuje kontrolnu logiku za koordinaciju web servisa u okviru nekog poslovnog procesa
Interpretira se i izvršava od strane BPEL engine-a
BPELKao osnovnu koristi Web servis standard1. Svaki BPEL se predstavlja kao web
servis korišenjem WSDL. WSDL opisuje javne ulazne i izlaze tačke procesa
2. Interakcija preko WSDL interfejsa sa eksternim web servisima
3. WSDL tipovi podataka se koriste za opis tokova informacija u okviru BPEL procesa
BPEL Kompozicija Web servisa
Partner Link Type Partner Link Type
Servis PServis A Servis B
A WSDL P WSDL B WSDL
invoke
receive
receive
invoke
invoke
BPEL proces kao web servis
Koncepti u BPEL4WS Partner Links:
Bilateralna konverzacija (my Role, Partner Role) Interfjes zahtevi partnera
Podaci i poruke: Variable Osobine Skup korelisanih podatka
Aktivnosti: Osnovne aktivnosti Struktuirane aktivnosti (control flow)
Partner LinksPartner link: tipizirane instance konektora Partner link type definiše zahtevane
tipove portova Kanal preko kojeg se vrši peer-to-peer
konverzacijaPartner
Link TypePort Type 1 Port Type 2
Proces 1 Process 2
0
1
BPEL model: Variable
Pridružene aktivnosti
razmenjuju medjusobno podatke
Mehanizam za čuvanje ulaznih i izlaznih
vrednosti aktivnosti
Variable definisanje prekoWSDL poruka iliXML Schema elemenata/tipova
. . . invoke
assign
reply
. . .
receive
42
Varijable (primeri)Korišenje XML code
Dodela konstante <variable name=“x” type=“xsd:int”/>
<assign> <copy> <from>1</from> <to variable=“x”/> </copy></assign>
Kopiranje varijable
<variable name=“x” type = “xsd:int”/><variable name=“y” type= “xsd:int”/>
<assign> <copy> <from variable=“y”/> <to variable=“x”/> </copy></assign>
Ugradjena BPEL funkcija bpws:getVariableData se korisit za uzimanje vrednosti iz varijable.
Proces 4Proces 3
Osobine i korelisani skup podataka
Poruke u vremenski dugoj konverzaciji su povezane sa odgovarajućom instancom procesa Tipizirane osobine definisane u WSDL su
imenovane i mapirane sa delovima WSDL poruka koje se koriste u procesu
WSDL poruka 0815 42
sifraDobavljaca
brojNarduzbe
Proces 2Proces 1
Osnovne aktivnostiPrihvatanje poruka koje stižu (čekanje na odgovora)
Slanje poruke kao odgovor na primljenu poruku
Pokretanje jednostrane ili dvostrane request-response operacije
Izmena vrednosti varijabli ili partner linkova sa novim podacima
Validacija XML podataka u variablama
“prazna” instrukcija za poslovni proces
Generisanje greske unutar poslovnog procesa
Prosledjivanje greške kad obradjivaču grešake
Trenutni prekid izvršavanja instance poslovnog procesa
Čekanje neki definisani vremenskom period ili dok taj period ne istekne
Pokretanje alternative u unutrašnjem opsegu koji se već izvršio
receive
reply
invoke
throw
exit
wait
empty
compensatevalidate
assign
rethrow
Struktuirane aktivnostiSadrži aktivnosti koje se paralelno izvršavaju
Selekcija jedne grupe aktivnosti iz skupa
Sadrži aktivnosti čije se izvršavanje ponavlja sve dok je zadovoljen dati uslov
Iteracija aktivnosti dok nije zadovoljen dati uslov
Blokiranje i čekanje na odgovarajuću poruku
Sadrži aktivnoste koje se izvršavaju sekvencijalno ili paralelno kontrolisano preko brojača
Sadrži aktivnosti koje se izvršavaju sekvencijalno
Povezivanje aktivnosti sa lokalnim varijablama, obvradjivačima grešaka i obradjivačima dogadjaja
if then else
while
scope
pick
sequence
flow
repeatUntil
forEach
Ugnježdavanje strukturianih aktivnosti<sequence> <receive .../> <flow> <sequence> <invoke .../> <while ... > <assign>...</assign> </while> </sequence> <sequence> <receive .../> <invoke ... > </sequence> </flow> <reply></sequence>
receive
reply
receive
invoke
invoke
assign
sequence
sequencesequence
flow
while
. . .
faulthandler
Opseg i ObradjivačiOpseg (Scope)
Lokalne varijable Lokalne partnerske linkove Lokalne skup korelisanih osobina
(correlation sets) Skup aktivnosti (osnovne i
strukturiane)
Obradjivači (Handlers) Obradjivači dogadjaja
Poruke dogadjaji ili vremnski dogadjaji Obradjivači grešaka
Obrada različitih internih izuzetaka (internih grešaka)
Kompenzacioni obradjivač Poništavanje treutnih efekata
kompletiranih aktivnosti Obradjivač prekida
Obrada forsiranog prekida (eksterne greške)
faulthandlers
compensationhandler
terminationhandler
eventhandlers
. . .
. . .
. . .
. . .
correlationsets
partnerlinks
scope
variables
Životni ciklus instance procesa
Poslovni procesi u BPEL prestavljaju Web servise koji čuvaju stanje (statefull) Kada se proces pokrene, kreira se nova
instanca procesa Kreiranje i unistavanje instance procesa
je implicitnoreceive replyinvokeinvoke invoke
BEPL - primer
1. Klijent podnosi zahtev za kredit koji sadrži podatke o klijentu i zahtevanom iznosu kredita
2. Dva servisa su uključena: a) Risk analiza koja definiše stepen rizika b) Odobravanje kredita proverava ime i odobrava’neodobrava zahtev
za kredit3. Odgovor se vraća klijentu
invoke
receive
invoke
reply
assign
odobrenjeKreditaPT
loanapprover
riskAnalizaPT
Analiza
iznos < 10000 iznos >= 10000
rizik = “visok"
rizik= “nizak" odobren = “da"
odobren = “ne"
flow
ifbuyer$$ < seller$$
then
else
Ugnježdavanje struktuiranih aktivnosti
reply(buyer)
reply(seller)
receive(buyer)
receive(seller)
assign"success"
assign"failure"
sequence
flow if-then-else
Obrada grešakaKada se generiše greška, bilo implicitno od strane BPEL engine ili eksplicitno preko throw aktivnosti, kontrola toka se prebacuje na obradjivač greške za dati tip greške.
Obradjivač grešaka je catch struktura<scope name=“s1”> <faultHandlers> <catch faultName=“x:invalidAccount”> ….. </catch> <catch faultName=“x:closedAccount”> ……. </catch> <catchAll”> …….. </catchAll”> </faultHandlers></scope>
Obrada grešaka i kompenzacija
compensationhandler
chargecredit card
refundcustomer
shipgoods
faulthandler
notifymanager
compensate
faulthandler
rethrow
Process
flow
scopescope
Process BProcess A
BPEL Partner Links
receiverequest
invokecallback
PortType-B
PortType-A
invokeservice
6. Prihvata odgovor od drugih procesa
5. Pokreće A izvršavanje
korišćenjem primljenog EPR
receiveresponse
PartnerLink Type
A-role
B-role
partnerlink
partnerlink
3. Prihvata varijablu od procesa Aassign
EPR
1. Pridružuje varijabli vrednost EPR iz
partnerLink (myRole)
2. Prenosi varijablu do procesa B
assignEPR
4. Pridružuje EPR iz varijable u partnerLink
(partnerRole)
Rezervacija putovanjaPogled na izvršavanje procesa
getitinerary
getorder
ordertickets
receiveconfirmation
confirmflight
sendtickets
sendconfirmation
submitto agent
receivetickets
receiveconfirmation
selectairline
reserveseats
chargecredit card
plantrip
Agent Process Airline ProcessTraveler Process
WS-BPELInteroprebilan i prenosiv model poslovnih procesaFleksibilna integracija Web servisa WSDL apstraktni interfjesi se kombinuju da bi
definisali kompoziciju Apstraktni partneri mogu biti povezani sa aktuelnim
servisima u vreme izvšavanja Proces može izabrati protokol za komunikaicju sa servisom
u vreme izvršavanja Servisi čija definicija podataka nije odgovarajuća
mogu biti korišćeni u kompoziciji Transformacija podataka može biti data zajedno sa
definicijom procesa
WS-BPEL alati (engine)Active Endpoints ActiveWebflow Server ActiveBPEL Engine (open source)bexee BPEL Execution Engine (open source) Cape Clear Orchestrator FiveSight PXE IBM WebSphere Business Integration – Server Foundation 5.1IBM WebSphere Process Server 6.0OpenLink Virtuoso Universal Server OpenStorm ChoreoServer Oracle BPEL Process Manager Parasoft BPEL Maestro SeeBeyond eInsight BPM Twister (open source)
BPEL – Procesni modeliObezbedjuje podršku za dva procesna modela Izvršne
Modeli ponašanja učesnika u specifičnoj poslovnoj interkaciji, privatni workflow
Apstarktne Poslovni protokoli u BPEL, specificiraju
javne razmene poruka izmedju aktera (organizacija)
BPEL – Objektni model
BPEL primer (Osigruavajuće društvo)
1 <process name="InsuranceClaim"2 targetNamespace="http://acm.org/samples"3 suppressJoinFailure="yes"4 xmlns:tns=http://acm.org/samples5 xmlns=http://schemas.xmlsoap.org/ws/2003/03/business-process/6 xmlns:xsd=http://www.w3.org/2001/XMLSchema7 xmlns:addressing=http://schemas.xmlsoap.org/ws/2003/03/addressing8 xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">910 <!--11 Partners in the process:12 client - app that can initiate and kill13 worklist - service that manages manual activities14 -->15 <partnerLinks>16 <!--17 <partnerLink name="client" partnerLinkType="tns:InsuranceClaim"18 myRole="InsuranceClaimProvider"/>19 <partnerLink name="worklist" partnerLinkType="task:TaskManager"20 partnerRole="TaskManager" myRole="TaskManagerRequester"/>21 </partnerLinks>2223 <!-- Process-level variables -->24 <variables>25 <variable name="status" type="xsd:string"/>26 <variable name="initiateMsg" messageType="tns:InsuranceClaimMsg"/>27 <variable name="killEv" messageType="tns:InsuranceClaimMsg"/>28 <variable name="taskResponse" messageType="task:taskMessage"/>29 </variables>3031 <!-- Message correlation to be performed on the ClaimID field -->32 <correlationSets>33 <correlationSet name="claim" properties="tns:claimID"/>34 </correlationSets>35
36 <!-- Catch any errors and fix manually -->37 <faultHandlers>38 <catchAll>39 <empty name="PlaceholderForManualFix"/>40 </catchAll>41 </faultHandlers>4243 <!-- Globally receive a kill event (correlated with the claim ID from the44 original initate) and terminate the process. -->45 <eventHandlers>46 <onMessage partnerLink="client" portType="tns:InsuranceClaim"47 operation="kill" variable="killEv">48 <correlations>49 <correlation set="claim" initiate="no"/>50 </correlations>51 <sequence>52 <empty/><!-- Do something, like notify internal systems of kill -->53 <terminate name="killClaim"/>54 </sequence>55 </onMessage>56 </eventHandlers>5758 <sequence>5960 <!-- We start with a receive activity: get the initiate message. Will61 correlate on claim set defined earlier62 -->63 <receive partnerLink="client" portType="tns:InsuranceClaim"64 operation="initiate" variable="initiateMsg" createInstance="yes"65 name="initiateEvent">66 <correlations>67 <correlation set="claim" initiate="yes"/>68 </correlations>69 </receive>
BPEL primer (Osigruavajuće društvo)
71 <!-- Let an agent evaluate it. Call worklist partner to do this -->72 <invoke name="evalClaim" partnerLink="worklist" portType="task:TaskManager"73 operation="evalClaim" inputVariable="initiateMsg"/>7475 <!-- Get either the response or a timeout -->76 <pick name="analyzePick">77 <onMessage partnerLink="worklist" portType="task:TaskManagerCallback"78 operation="onTaskResult" variable="taskResponse">79 <!-- From response extract status and set to variable 'status' -->80 <assign name="setStatus">81 <copy>82 <from variable="taskResponse" part="payload"83 query="/tns:taskMessage/tns:result="/>84 <to variable="status"/>85 </copy>86 </assign>87 </onMessage>88 <!-- Timeout! 10 days have passed. Escalate -->89 <onAlarm for="PT10D">90 <sequence>91 <!-- Call partner service to escalate -->92 <invoke name="evalClaim" partnerLink="worklist"93 portType="task:TaskManager" operation="escalateClaim"94 inputVariable="initiateMsg"/>95 <!-- Get the escalation response -->96 <receive name="receiveTaskResult" partnerLink="worklist"97 portType="task:TaskManagerCallback"98 operation="onTaskResult" variable="taskResponse"/>
BPEL primer (Osigruavajuće društvo)
101 <copy>102 <from variable="taskResponse" part="payload"103 query="/tns:taskMessage/tns:result="/>104 <to variable="status"/>105 </copy>106 </assign>107 </sequence>108 </onAlarm>109 </pick>110111 <!-- Look at result of claim process and act accordingly:112 'rejected' and 'accepted' are good. Anything else, throw a fault -->113 <switch name-"resultEval">114 <case condition="bpws:getVariableData('status')='rejected'">115 <empty> <!-- perform rejection actions -->116 </case>117 <case condition="bpws:getVariableData('status')='accepted'">118 <empty> <!-- perform acceptance actions -->119 </case>120 <otherwise>121 <throw name="illegalStatus" faultName="illegalStatus"/>122 </otherwise>123 </switch>124 </sequence>125 </process>
BPEL primer (Osigruavajuće društvo)
Proširenja BPEL-a
BPEL-SPE (Sub-Process Extension)
Proširenje BPEL sa podprocesima Pokretanje nekog poslovnog procesa kao podprocesa unutar
durgog tako da životni ciklus zavisi od nadredjenog procesa Definisanje poslovnog procesa u kontekstu drugog tako da se
omogućava pristup podacima iz nadredjnog procesa Mogućnost pokretanje podprocesa koji se izvšrava unutar
drugog BPEL engine-a.
BPEL4People
Proširenje BPEL koje uključuje u poslovne procese specijalne implementacije aktivnosti koje možemo nazvati ljudske aktivnostima (aktivnosti koji se izvršavaju od stane ljudi). Ljudske aktivnosti nazivaju se poslovi (tasks)Definisanje korisnika kao inicijatora procesa
BPEL4PeopleModeli interakcije poslova i aktivnosti
Poslovni proces
Integracija aplikacija preko BPEL4WS
WAS
.net
CICS
SOAP, Transakcije RMI IIOP
MQSeries
MQSeries
Proces posrednik
Opis procesa
Pristupni kanali
Opis servisa
Tradicionalna integracija
ZaključakBPEL se fokusira na kreiranje poslovnih procesa
Opisuje kontrolnu logiku za koordinaciju web servisa u okviru nekog poslovnog procesa
Baziran na XML
Interpretira se i izvršava od strane BPEL engine-a