BPEL nyelvű üzleti folyamatok modellezése és formális ellenőrzése Kovács Máté, Gönczy László {kovmate,gonczy}@mit.bme.hu Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Research suported by Software Engineering for Service-Oriented Overlay Computers (SENSORIA) EU FET-IST project.
Munkafolyamatok végrehajtása Hagyományos Regisztrálás Típus besorolás Szerződés Egyenleg Papír Regisztrálás Egyenleg Elektronikus Típus besorolás Munkafolyamat végrehajtó motor Web szolgáltatás hívás Szerődés Kifizetés 2 Elutasíás Kifizetés Elutasítás
3 Munkafolyamat példa Egyszerű tevékenység A párhuzamos végrehajtás kezdete Szerződés Elágazás Elutasítás Regisztrálás Típus besorolás Vezérlési folyam Egyenleg Fizetés A párhuzamos végrehajtás vége
4 BPEL alapkoncepció
5 Web szolgáltatások
6 A BPEL elemei Process felépítése <partnerlink> - Kapcsolat két szereplő közt <partner> - partnerlink-ek halmaza <variable> - folyamat globális változói, ideértve a kimenő/bejövő üzeneteket <Activity> - folyamat lépései Egyéb elemek: <faulthandler>, <compensationhandler>, <correlationset>, <eventhandler>
7 A BPEL elemei 2. Basic activity <invoke> - Web service meghívása <receive-reply> - Web service funkcionalitás a hívó fél felé <throw> - belső hiba jelzése (kivétel) <wait> - várakozás <assign> - változók elérése/kezelése <compensate> - compensationhandler hívás sikeresen lefutott lépés visszavonása
8 A BPEL elemei 3. Structured activity <sequence> - sorosan végrehajtandó lépések <switch> - feltételes elágazás <while> - ciklus <pick> - üzenetek, alarmok kezelése <flow> - párhuzamosan végrehajtható tevékenységek
Scope Budapesti Műszaki és Gazdaságtudományi Egyetem 9 Scope Szerződés Elutasítás Regisztrálás Típus besorolás Fault Hanlder 1 Egyenleg Fizetés Fault Hanlder 2 Compensation Handler Event Handler 1 Event Handler 2
10 Hibakezelés a BPEL nyelvben 1 Scope: tevékenységek egy sorozata melyre definiálható Faulthandler Compensation handler Scope is tartalmazhaz scope-ot
11 Hibakezelés a BPEL nyelvben 2 Kivételes esemény: Fault Invoke dobja Throw tevékenység dobja Faulthandler kapja el Ha nincs megfelelő faulthandler: tartalmazott scope-ok kompenzálása a fault továbbdobása a tartalmazó scope felé Kompenzálás Sikeresen végrehajtott scope kompenzálható A compensation handler snapshot világban él Ha nincs compensation handler: A tartalmazott scope-ok kompenzálása
12 Motiváció Web szolgáltatások kompozíciója széleskörű eszköztámogatás Probléma: munkafolyamatok tesztelése Az adatok távoli adatbázisokban vannak A tesztfuttatások hatását érvényteleníteni kell Megoldás: munkafolyamatok formális analízise A munkafolyamatok formalizálása A formális modell tulajdonságainak ellenőrzése Szimuláció, Hibaszimuláció
13 Már létező megoldások W. van der Aalst: munkafolyamat modellezés Petri hálókkal Shin Nakajima: WSFL majd BPEL flow vizsgálata Sebastian Hinz et. al.: BPEL Petri háló Kovács Máté, Gönczy László: BPEL adatfolyam hálók
14 Munkafolyamatok ellenőrzése Tranzíciós rendszer Absztrakt adatok
15 Munkafolyamatok ellenőrzése Tranzíciós rendszer Absztrakt adatok Követelmények LTL: lineáris temporális logika
16 Munkafolyamatok ellenőrzése Tranzíciós rendszer Absztrakt adatok Követelmények LTL: lineáris temporális logika Modellellenőrző LTL kifejezések formális helyességellenőrzése Kimerítő állapottérbejárás
17 Munkafolyamatok ellenőrzése Tranzíciós rendszer Absztrakt adatok Modelltranszformáció VIATRA2 keretrendszer gráftranszformáció absztrakt állapotgépek Követelmények LTL: lineáris temporális logika Modellellenőrző LTL kifejezések formális helyességellenőrzése Kimerítő állapottérbejárás
18 Modellellenőrzés Ellenőrzés: Modell: tranzíciós rendszer Követelmény: lineáris temporális logikai kifejezés Eredmény: a követelmény igazságtartalma a modellen
19 Modellellenőrzés Tranzíciós rendszer: Állapotváltozók Állapot átmeneti szabályok (feltétel) értékadások; szintaktikával Az állapottér az állapotváltozók értékkészletének Descartes szorzatának azon részhalmaza, amely elérhető a kiindulási állapotból a tranzíciók mentén. Lineáris Temporális Logikai kifejezés: A nulladrendű logika + temporális operátorok: Gp: Fp: Xp: puq:
20 Változók modellezése Inicializálatlan Olvasva Írva Írva és olvasva Ellenőrzés: folyamat - G(változó /= írva);
21 Egyszerű tevékenységek modellezése Nem indítható Befejezett Indítható Változó Olvasva Ellenőrzés: folyamat - F(válasz=befejezett) OR F(visszagörgetés=befejezett)
22 Strukturált tevékenységek modellezése <sequence> <invoke name="a"/> <invoke name="b"/> </sequence> sequence=fut AND invoke_a=nem_indítható invoke_a=indítható; sequence=fut AND invoke_b=nem_indítható AND invoke_a=befejezett invoke_b=indítható; sequnece=fut AND invoke_b=befejezett sequence=befejezett; Nem indítható Befejezett Indítható Fut
23 A Scope modellezése Indítható Nem indítható Hibakezelés Hibásan befejezett Fut Kompenzálható Kompenzálás Kompenzált Minden nem indítható indítható átmenetnél ellenőrizzük, hogy az összes tartalmazó scope megfelelő állapotban van-e.
Scope állapotára vonatkozó indítási feltételek 24 AND scope_1=hibakezelés AND scope2=kompenzálás AND scope_3=fut AND
25 Hibaszimuláció A hiba terjedése változókban: két új állapot: hiba írva, hiba írva és olvasva a jelenlegi implementáció tartalmazza A vezérlés hibájának modellezése: egymásnak ellentmondó követelmények: szemantika hű leképezése hibás pozitív eredmény elkerülése
26 Megvalósítás Modelltranszformációs motor: VIATRA2 gráftranszvormációs keretrendszer deklaratív és imperatív programozási paradigmák ötvözése A kód hossza: 6077 sor +BPEL importer +WSDL importer +SAL generátor
27 Konklúzió és továbbfejlesztési lehetőségek Konklúzió: siker: gyakorlatban is alkalmazható munkafolyamat verifikációs metodika Továbbfejlesztési lehetőségek: Általános követelmények automatikus generálása: Egyetlen inicializálatlan változót sem olvasunk Szinkron munkafolyamat esetén mindenképp szolgálunk visszatérési értékkel Teljes Web szolgáltatás alapú környezet vizsgálata a folyamatok direktszorzatával "Back annotation" a munkafolyamatra
28 Köszönöm a figyelmet!