430 likes | 657 Vues
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
E N D
Fakultet organizacionih nauka Katedra za informacione sisteme Modelovanje poslovnih procesa Business Process Execution LanguageBPEL
Karkaterisitke i zahtevi poslovnih sistema • Danas poslovni sistemi zahtevajubrzuprilagodljivost 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 svojespecifičneposlovne protokole • Mala fleksibilnost za pravu web servis kolaboraciju
Komozicija Web servisa • Definicija: • Obezbedjuje otvoren, baziran na strandardupristup povezivanju web servisa da bi se kreirali poslovni procesi višeg nivoa. • Standardisu definisani da bi smanjili složenostpri kompoziciji web servisa, kako bismanjili vreme i troškove, ipovećali ukupnu efikasnostupsolovanju
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
Partner Link BPEL procesi i interkcije su stogo tipizirani • BPEL se gradi pomocu WSDL opisa servisa • Strogo tipiziran • Interkacija 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 Process WSDL Service B B’s WSDL
BPEL4WS • Baziran na XML • Opisuje kontrolnu logikuza koordinaciju web servisa u okviru nekog poslovnog procesa • Interpretira se i izvršavaod strane BPEL engine-a
BPEL • Kao osnovnu koristi Web servisstandard • Svaki BPEL se predstavlja kao web serviskorišenjem WSDL. WSDL opisuje javne ulazne i izlaze tačke procesa • Interakcija preko WSDL interfejsasa eksternim web servisima • WSDL tipovi podataka sekoriste za opis tokova informacija u okviru BPEL procesa
BPEL Kompozicija Web servisa Servis A Servis P Servis B receive invoke receive invoke invoke P WSDL A WSDL B WSDL Partner Link Type Partner Link Type
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 Partner Link Type Port Type 1 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 Pridružene aktivnosti razmenjuju medjusobno podatke assign . . . 0 reply 1
Osobinei korelisani skup podataka • Poruke u vremenski dugoj konverzaciji su povezane saodgovarajuć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 Proces 1 sifraDobavljaca brojNarduzbe WSDL poruka 0815 42
Osnovne aktivnosti • 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 • 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 throw reply rethrow invoke exit assign wait validate compensate empty
Struktuirane aktivnosti • 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 • 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 flow pick if then else forEach sequence while scope repeatUntil
Ugnježdavanje strukturianih aktivnosti sequence <sequence> <receive .../> <flow> <sequence> <invoke .../> <while ... > <assign>...</assign> </while> </sequence> <sequence> <receive .../> <invoke ... > </sequence> </flow> <reply> </sequence> receive flow sequence sequence invoke receive invoke while assign reply
Opseg i Obradjivači scope variables event handlers • Opseg (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) partner links fault handlers fault handler correlation sets . . . compensation handler . . . . . . termination handler . . . . . .
Ž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 Analiza loan approver rizik = “visok" invoke invoke assign rizik= “nizak" odobren = “da" odobren = “ne" reply 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 reply (seller) reply (buyer) if buyer$$ < seller$$ then else receive (buyer) assign "failure" receive (seller) assign "success"
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 flow fault handler notify manager scope scope compensation handler fault handler compensate charge credit card refund customer rethrow ship goods
1. Pridružuje varijabli vrednost EPR iz partnerLink (myRole) 3. Prihvata varijablu od procesa A assign EPR 4. Pridružuje EPR iz varijable u partnerLink (partnerRole) B-role assign EPR Partner Link Type partner link partner link A-role BPEL Partner Links Process A Process B 2. Prenosi varijablu do procesa B PortType-B invoke service receive request receive response invoke callback PortType-A 6. Prihvata odgovor od drugih procesa 5. Pokreće A izvršavanje korišćenjem primljenog EPR
Rezervacija putovanja plan trip select airline reserve seats charge credit card Pogled na izvršavanje procesa Traveler Process Agent Process Airline Process get itinerary get order submit to agent order tickets receive confirmation receive tickets receive confirmation confirm flight send confirmation send 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 javnerazmene poruka izmedju aktera (organizacija)
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> 35
BPEL primer (Osigruavajuće društvo) 36 <!-- Catch any errors and fix manually --> 37 <faultHandlers> 38 <catchAll> 39 <empty name="PlaceholderForManualFix"/> 40 </catchAll> 41 </faultHandlers> 42 43 <!-- Globally receive a kill event (correlated with the claim ID from the 44 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> 57 58 <sequence> 59 60 <!-- We start with a receive activity: get the initiate message. Will 61 correlate on claim set defined earlier 62 --> 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"/> 74 75 <!-- 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> 110 111 <!-- 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-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
.net WAS Opis servisa Proces posrednik SOAP, Transakcije RMI IIOP Poslovni proces Opis procesa MQSeries Tradicionalna integracija Pristupni kanali CICS MQSeries Integracija aplikacija preko BPEL4WS
Zaključak • BPEL se fokusira na kreiranje poslovnih procesa • Opisuje kontrolnu logikuza koordinaciju web servisa u okviru nekog poslovnog procesa • Baziran na XML • Interpretira se i izvršavaod strane BPEL engine-a