Modelovanje poslovnih procesa

Download Report

Transcript Modelovanje poslovnih procesa

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

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 servisa
Definicija:


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
XYZ CORP
Supplier 1
Supplier 2
wsdl
wsdl
Supplier 3
wsdl
wsdl orderFromSupplier wsdl
Supplier 1
wsdl checkInventory wsdl
XYZ CORP
wsdl
wsdl
orderReceived
orderReceived
wsdl
wsdl
wsdl
wsdl
wsdl orderFromSupplier wsdl
shipOrder
wsdl
checkInventory
wsdl wsdlwsdl
wsdl
replyCustomer
Supplier 2
wsdl
shipOrder
wsdl
wsdl replyCustomer wsdl
UDDI
Supplier 3
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 u
odnosu 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 tipiziran
Interkacija BPEL procesa preko
skupa tipiziranih kanala:


Process
WSDL
Service B
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
B’s WSDL
Partner Link
BPEL4WS
Baziran na XML
Opisuje kontrolnu logiku za
koordinaciju web servisa u okviru
nekog poslovnog procesa
Interpretira se i izvršava od strane
BPEL engine-a
BPEL
Kao osnovnu koristi Web servis
standard
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
1.
BPEL Kompozicija Web servisa
Servis A
Servis P
Servis B
receive
invoke
receive
invoke
invoke
A WSDL
Partner Link Type
P WSDL
B WSDL
Partner Link Type
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 Links
Partner link: tipizirane instance
konektora


Partner link type definiše zahtevane tipove
portova
Kanal preko kojeg se vrši peer-to-peer
konverzacija
Proces 1
Process 2
Port Type 1
Partner
Link Type
Port Type 2
BPEL model: Variable
Variable definisanje preko
WSDL poruka ili
XML Schema elemenata/tipova
Mehanizam za čuvanje
ulaznih i izlaznih vrednosti
aktivnosti
receive
...
invoke
42
assign
...
Pridružene aktivnosti
razmenjuju
medjusobno podatke
0
reply
1
Varijable (primeri)
Korišenje
Dodela konstante
XML code
<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.
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
Proces 4
Proces 3
Proces 2
sifraDobavljaca
brojNarduzbe
WSDL poruka
0815
42
Proces 1
Osnovne aktivnosti
receive
reply
invoke
assign
Prihvatanje 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
 validate
throw
Generisanje greske unutar poslovnog
procesa
rethrow
Prosledjivanje greške kad obradjivaču
grešake
exit
Trenutni prekid izvršavanja instance
poslovnog procesa
wait
Čekanje neki definisani vremenskom period
ili dok taj period ne istekne
compensate
Validacija XML podataka u
variablama
empty
“prazna” instrukcija za poslovni
proces
Pokretanje alternative u unutrašnjem
opsegu koji se već izvršio
Struktuirane aktivnosti
flow
if then else
while
Sadrž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
pick
forEach
sequence
scope
repeatUntil
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
Ugnježdavanje strukturianih
aktivnosti
<sequence>
<receive .../>
<flow>
<sequence>
<invoke .../>
<while ... >
<assign>...</assign>
</while>
</sequence>
<sequence>
<receive .../>
<invoke ... >
</sequence>
</flow>
<reply>
</sequence>
sequence
receive
flow
sequence
sequence
invoke
receive
while
assign
reply
invoke
Opseg i Obradjivači
Opseg (Scope)




scope
event
handlers
variables
Lokalne varijable
Lokalne partnerske linkove
Lokalne skup korelisanih osobina
(correlation sets)
Skup aktivnosti (osnovne i
strukturiane)
partner
links
correlation
sets
...
Obradjivači (Handlers)

Obradjivači dogadjaja
fault
fault
handlers
handler
compensation
handler
...
 Poruke dogadjaji ili vremnski
dogadjaji

Obradjivači grešaka
...
termination
handler
...
 Obrada različitih internih izuzetaka
(internih grešaka)

Kompenzacioni obradjivač
 Poništavanje treutnih efekata
kompletiranih aktivnosti

Obradjivač prekida
 Obrada forsiranog prekida (eksterne
greške)
...
Ž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
implicitno
receive
invoke
invoke
invoke
reply
BEPL - primer
flow
riskAnalizaPT
odobrenjeKreditaPT
iznos < 10000
iznos >= 10000
receive
invoke
rizik = “visok"
invoke
loan
approver
Analiza
rizik= “nizak"
assign
reply
odobren = “da"
odobren = “ne"
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 kredit
3. Odgovor se vraća klijentu
Ugnježdavanje struktuiranih
aktivnosti
sequence
flow
if-then-else
if
receive
(buyer)
buyer$$ < seller$$
then
assign
"failure"
else
receive
(seller)
assign
"success"
reply
(seller)
reply
(buyer)
Obrada grešaka
Kada 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
Process
fault
handler
flow
notify
manager
scope
scope
fault
handler
compensation
handler
compensate
charge
credit card
refund
customer
ship
goods
rethrow
BPEL Partner Links
1. Pridružuje varijabli
vrednost EPR iz
partnerLink (myRole)
Process A
assign
EPR
Process B
3. Prihvata varijablu od
procesa A
4. Pridružuje EPR iz
varijable u partnerLink
(partnerRole)
2. Prenosi varijablu do
procesa B
PortType-B
invoke
service
receive
request
B-role
assign
EPR
partner
link
Partner
Link Type
partner
link
A-role
receive
response
invoke
callback
PortType-A
6. Prihvata odgovor od
drugih procesa
5. Pokreće A
izvršavanje
korišćenjem primljenog
EPR
Rezervacija
putovanja
Pogled na izvršavanje
procesa
Traveler Process
receive
confirmation
Agent Process
Airline Process
plan
trip
get
itinerary
get
order
submit
to agent
select
airline
reserve
seats
order
tickets
charge
credit card
receive
confirmation
confirm
flight
send
confirmation
send
tickets
receive
tickets
WS-BPEL
Interoprebilan i prenosiv model poslovnih
procesa
Fleksibilna 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.1
IBM WebSphere Process Server 6.0
OpenLink Virtuoso Universal Server
OpenStorm ChoreoServer
Oracle BPEL Process Manager
Parasoft BPEL Maestro
SeeBeyond eInsight BPM
Twister (open source)
BPEL – Procesni modeli
Obezbedjuje 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/samples
5
xmlns=http://schemas.xmlsoap.org/ws/2003/03/business-process/
6
xmlns:xsd=http://www.w3.org/2001/XMLSchema
7
xmlns:addressing=http://schemas.xmlsoap.org/ws/2003/03/addressing
8
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
9
10
<!-11
Partners in the process:
12
client - app that can initiate and kill
13
worklist - service that manages manual activities
14
-->
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>
22
23
<!-- 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>
30
31
<!-- Message correlation to be performed on the ClaimID field -->
32
<correlationSets>
33
<correlationSet name="claim" properties="tns:claimID"/>
34
</correlationSets>
BPEL primer (Osigruavajuće društvo)
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!-- Catch any errors and fix manually -->
<faultHandlers>
<catchAll>
<empty name="PlaceholderForManualFix"/>
</catchAll>
</faultHandlers>
<!-- Globally receive a kill event (correlated with the claim ID from the
original initate) and terminate the process. -->
<eventHandlers>
<onMessage partnerLink="client" portType="tns:InsuranceClaim"
operation="kill" variable="killEv">
<correlations>
<correlation set="claim" initiate="no"/>
</correlations>
<sequence>
<empty/><!-- Do something, like notify internal systems of kill -->
<terminate name="killClaim"/>
</sequence>
</onMessage>
</eventHandlers>
<sequence>
<!-- We start with a receive activity: get the initiate message. Will
correlate on claim set defined earlier
-->
<receive partnerLink="client" portType="tns:InsuranceClaim"
operation="initiate" variable="initiateMsg" createInstance="yes"
name="initiateEvent">
<correlations>
<correlation set="claim" initiate="yes"/>
</correlations>
</receive>
BPEL primer (Osigruavajuće društvo)
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<!-- Let an agent evaluate it. Call worklist partner to do this -->
<invoke name="evalClaim" partnerLink="worklist" portType="task:TaskManager"
operation="evalClaim" inputVariable="initiateMsg"/>
<!-- Get either the response or a timeout -->
<pick name="analyzePick">
<onMessage partnerLink="worklist" portType="task:TaskManagerCallback"
operation="onTaskResult" variable="taskResponse">
<!-- From response extract status and set to variable 'status' -->
<assign name="setStatus">
<copy>
<from variable="taskResponse" part="payload"
query="/tns:taskMessage/tns:result="/>
<to variable="status"/>
</copy>
</assign>
</onMessage>
<!-- Timeout! 10 days have passed. Escalate -->
<onAlarm for="PT10D">
<sequence>
<!-- Call partner service to escalate -->
<invoke name="evalClaim" partnerLink="worklist"
portType="task:TaskManager" operation="escalateClaim"
inputVariable="initiateMsg"/>
<!-- Get the escalation response -->
<receive name="receiveTaskResult" partnerLink="worklist"
portType="task:TaskManagerCallback"
operation="onTaskResult" variable="taskResponse"/>
BPEL primer (Osigruavajuće društvo)
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<copy>
<from variable="taskResponse" part="payload"
query="/tns:taskMessage/tns:result="/>
<to variable="status"/>
</copy>
</assign>
</sequence>
</onAlarm>
</pick>
<!-- Look at result of claim process and act accordingly:
'rejected' and 'accepted' are good. Anything else, throw a fault -->
<switch name-"resultEval">
<case condition="bpws:getVariableData('status')='rejected'">
<empty> <!-- perform rejection actions -->
</case>
<case condition="bpws:getVariableData('status')='accepted'">
<empty> <!-- perform acceptance actions -->
</case>
<otherwise>
<throw name="illegalStatus" faultName="illegalStatus"/>
</otherwise>
</switch>
</sequence>
</process>
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
BPEL4People
Modeli interakcije poslova i aktivnosti
Integracija aplikacija preko
BPEL4WS
.net
WAS
Proces
posrednik
SOAP,
Transakcije
Poslovni proces
Opis servisa
RMI IIOP
Opis procesa
MQSeries
Pristupni
kanali
MQSeries
Tradicionalna
integracija
CICS
Zaključak
BPEL 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