A WS-Business Activity (Web-Szolgáltatás Üzleti Aktivitás), a Web-Szolgáltatás Tranzakciók (Web Services Transactions) családjába tartozó specifikáció, amely a hosszú lefolyású (long-running) elosztott üzleti műveletek koordinálására és eredménykezelésére szolgál. A WS-BusinessActivity része a WS-TX (Web Services Transactions) munkacsoport által kidolgozott szabványkészletnek, amelynek dokumentumai és protokolljai nagyvállalati szereplők, köztük az IBM, a BEA és a Microsoft közreműködésével jöttek létre.http://www.ibm.com/developerworks/library/specification/ws-tx/

A Web-Szolgáltatás Tranzakciók specifikációi három fő komponensre tagolódnak: a Web-Szolgáltatás Koordináció (WS-Coordination), a Web-Szolgáltatás Atomi Tranzakció (WS-Atomic Transaction) és a Web-Szolgáltatás Üzleti Aktivitás (WS-BusinessActivity). A WS-BusinessActivity a WS-Coordination kiterjesztéseként definiálja a hosszú lefolyású üzleti aktivitásokhoz szükséges koordinációs típusokat és protokollokat, továbbá meghatározza az ezen koordinációk számára használt XML névtereket és üzenetmintákat. http://docs.oasis-open.org/ws-tx/wstx-wsba-1.2-spec-os.pdf

Bevezetés

A WS-BusinessActivity célja a hosszú ideig tartó, laza kapcsolódású üzleti folyamatok (például több, egymástól független szolgáltatás együttműködése) megbízható koordinálása oly módon, hogy azok hibája esetén kompenzációs vagy visszavonási mechanizmusok alkalmazhatók legyenek. A specifikáció hangsúlyozza, hogy a hosszú lefolyású tevékenységek esetén az erőforrások zárolása és az szigorú ACID-tulajdonságok fenntartása gyakran nem kivitelezhető, ezért alternatív megoldásként kompenzációs logikát, kivételkezelést és rugalmasabb konzisztencia-modelleket definiál.

A specifikáció két, egymástól eltérő megközelítést (agreement protocol) definiál a résztvevők és a koordinátor közötti együttműködésre: Üzleti Megállapodás Résztvevői Végrehajtással (BusinessAgreementWithParticipantCompletion), amelyben a résztvevők jelzik a koordinátornak, amikor saját feladataikat befejezték, és a koordinátor ez alapján dönt a további lépésekről. Üzleti Megállapodás Koordinátori Végrehajtással (BusinessAgreementWithCoordinatorCompletion), amelyben a koordinátor határozza meg, mikor tekinthető befejezettnek egy adott aktivitás, és ennek megfelelően értesíti a résztvevőket.

A fejlesztők a két protokollt külön-külön vagy együtt is alkalmazhatják az üzleti igényeknek megfelelően. A WS-BusinessActivity működése a WS-Coordination keretrendszerére épül; a WS-Coordination definiálja az aktiválás (Activation), a regisztráció (Registration) szolgáltatásait és a CoordinationContext típusát, amelyekre a WS-BusinessActivity épít.

A modell

A WS-BusinessActivity modell főbb elemei és képességei a következők:

Scope-ok és hierarchia:* Az üzleti alkalmazások felbonthatók különálló üzleti aktivitás scope-okra (hatókörökre). Egy scope tipikusan egy üzleti feladatot reprezentál, amelyet több, egymástól független web-szolgáltatás biztosít. A scope-ok hierarchikusan beágyazhatók, így egy nagyobb üzleti aktivitás alá több gyermek scope rendelhető. A beágyazási szintek száma gyakorlatilag nem korlátozott, és a hierarchia lehetővé teszi a finomabb kompenzációs és hibakezelési stratégiák megvalósítását. Dinamikus résztvevők:* A résztvevők listája dinamikusan bővíthető és csökkenthető; egy résztvevő kiléphet az aktivitásból anélkül, hogy a teljes folyamat befejeződne. A protokoll lehetővé teszi a résztvevők átadott állapotának és esetleges függő munkáinak biztonságos kezelését. Esemény- és kivételkezelés:* A WS-BusinessActivity protokollok támogatják a résztvevők által küldött eseményüzeneteket (például hibák, befejezés, kompenzáció szükségessége), amelyek alapján a koordinátor vagy más résztvevők megfelelő üzleti döntést hozhatnak. Ez különösen fontos hosszú lefolyású műveleteknél, ahol a résztvevők aszinkron módon, időben eltolódva értesítik egymást. Kísérleti (tentative) műveletek és láthatóság:* A protokoll lehetővé teszi bizonyos "kísérleti" műveletek végrehajtását, amelyek eredményei ideiglenesen láthatóvá válhatnak a scope többi szereplője számára az aktivitás befejezése előtt. Ha később kompenzáció válik szükségessé, a megfelelő üzleti logika végrehajtja a szükséges helyreállítást. Ez segít abban, hogy a rendszerek rugalmasan kezeljék a több lépésből álló, egymástól független feladatokat hosszú időn keresztül.

A specifikáció implementációs és interoperabilitási szempontból egyértelműen meghatározza a használandó XML névteret, amely a következő: http://docs.oasis-open.org/ws-tx/wsba/2006/06

Koordinációtípusok

A WS-BusinessActivity két koordinációs típust definiál, amelyek eltérő semantikát adnak a koordinátornak és a résztvevőknek:

Atomi Eredmény (AtomicOutcome):* Ennél a típusnál a koordinátornak végül az összes résztvevőt vagy bezárásra (Close), vagy kompenzációra (Compensate) kell utasítania. A cél egy konzisztens, minden résztvevő által elfogadott végállapot elérése. Kevert Végeredmény (MixedOutcome):* Ennél a típusnál a koordinátor nem köteles minden résztvevőt zárt (Close) vagy kompenzált (Compensate) állapotba utasítani; a koordinátor utasítást adhat egy adott eredményre, de a résztvevők helyi feltételei miatt a végső állapot változatos lehet. A MixedOutcome lehetővé teszi a rugalmasabb, üzleti logikától függő döntéseket.

A WS-BusinessActivity implementációknak legalább az AtomicOutcome koordinációt kell támogatniuk; a MixedOutcome támogatása opcionális, de gyakran hasznos a valós üzleti folyamatok rugalmasságának növelésére.

Ennek megfelelően a CoordinationContext típusának definiálásához használt tipikus URI-k a következők:

http://docs.oasis-open.org/ws-tx/wsba/2006/06/AtomicOutcome

http://docs.oasis-open.org/ws-tx/wsba/2006/06/MixedOutcome

Definiált protokollok Üzleti Megállapodás Résztvevői Végrehajtással (BusinessAgreementWithParticipantCompletion)

A BusinessAgreementWithParticipantCompletion protokollban a résztvevő regisztrál a koordinátornál, és a résztvevő önállóan jelzi, amikor befejezte az adott üzleti aktivitáshoz tartozó helyi munkát. A koordinátor ezután döntést hoz a teljes aktivitás végső eredményéről (például Close vagy Compensate), és a résztvevőknek megfelelő utasítást küld.

A résztvevők ennek a protokollnak a használata esetén a következő protokollazonosítót alkalmazzák:

http://docs.oasis-open.org/ws-tx/wsba/2006/06/ParticipantCompletion

A protokoll által használt üzenetek

A protokollban használt, koordinátor és résztvevő között cserélt üzenetek és rövid jelentésük:

Koordinátortól fogadott üzenetek:* Completed: A résztvevő jelzi, hogy befejezte az összes, az adott protokollpéldányhoz tartozó helyi feladatát. Ezt követően a koordinátornak a protokollpéldány végső eredményét Close vagy Compensate üzenettel kell kifejeznie. Miután a résztvevő elküldte a Completed üzenetet, nem folytathat további, az adott aktivitáshoz tartozó munkát. Fail: A résztvevő jelzi, hogy hiba történt az Active, Canceling vagy Compensating állapotok valamelyikében; a helyi állapot ekkor meghatározhatatlan. A koordinátornak a következő protokollüzenetben Failed üzenetet kell küldenie, amely tartalmaz egy QName-et a hiba okának jelzésére. Compensated: A résztvevő visszaigazolja, hogy sikeresen végrehajtotta a kompenzációt az általa korábban elvégzett tevékenységekre vonatkozóan. A koordinátor ennek alapján elfelejtheti a résztvevő aktuális állapotát. Closed: A résztvevő jelzi, hogy sikeresen befejezte a protokollpéldánnyal kapcsolatos feladatait; a koordinátornak ez után a résztvevő állapotát el kell felejtenie. Canceled: A résztvevő visszaigazolja, hogy sikeresen visszavonta a protokollpéldányhoz kapcsolódó helyi munkát; ezt követően a koordinátornak el kell felejtenie a résztvevőt. Exit: A résztvevő jelzi, hogy többé nem vesz részt az üzleti aktivitásban; a függőben lévő munkái eldobásra kerültek, és a következő protokollüzenetben a koordinátornak Exited üzenettel kell válaszolnia. Az Exit csak Active vagy Completing állapotú résztvevők esetén küldhető. CannotComplete: A résztvevő jelzi, hogy nem képes az összes szükséges művelet végrehajtására; a helyi függő munkák eldobásra kerültek, és a koordinátornak a következő üzenetben NotCompleted jelzést kell küldenie. A CannotComplete üzenetet csak Active állapotú résztvevő küldhet.

Résztvevő által fogadott üzenetek:* Close: A koordinátor jelzi a résztvevőnek, hogy a protokollpéldány sikeresen lezárult; a résztvevő erre Closed üzenettel válaszol. Cancel: A koordinátor utasítja a résztvevőt a helyi munka visszavonására; sikeres visszavonás után a résztvevőnek Canceled, sikertelenség esetén Fail üzenetet kell küldenie. Compensate: A koordinátor kompenzáció végrehajtását kéri; a résztvevő Compensated üzenettel válaszol siker esetén, vagy Fail üzenettel sikertelenség esetén. Exited: A koordinátor jelzi, hogy a résztvevőt többé nem tekinti az aktivitás részének; a résztvevőnek ennek elfogadásáról szóló üzenettel kell válaszolnia. NotCompleted: A koordinátor jelzi, hogy a résztvevő nem képes minden munkát végrehajtani, és a résztvevőnek ennek megfelelően el kell felejtenie az aktivitást.

Közös üzenetek (koordinátor és résztvevők között):* GetStatus: Állapotlekérdezés; válaszként Status üzenet érkezik, amely egy QName taggel jelzi az aktuális állapotot. Ez az üzenet nem vált ki állapotváltozást. Status: A GetStatus üzenetre adott válasz, amely a koordinátor vagy résztvevő aktuális állapotára vonatkozó QName értéket tartalmazza.

A protokoll leírása pontosan rögzíti az állapotátmeneteket és a konszisztencia-szabályokat: ha a koordinátor olyan üzenetet kap, amely az adott résztvevő korábbi állapotával nem kompatibilis, a koordinátornak vissza kell lépnie a konzisztens állapot egyikére, meg kell vizsgálnia az üzenetet, és onnan folytatnia a protokollt. A résztvevő ekkor eldobhatja a koordinátortól érkező, inkonzisztens üzenetet.

Üzleti Megállapodás Koordinátori Végrehajtással (BusinessAgreementWithCoordinatorCompletion)

A BusinessAgreementWithCoordinatorCompletion protokoll abban különbözik az előzőtől, hogy a koordinátor határozza meg, mikor érkezett meg minden üzenet az adott üzleti aktivitáson belül, és ennek alapján dönt a résztvevőket érintő befejezésről. A résztvevő tehát a koordinátor jelzésére vár a végső befejezés tekintetében, szemben a ParticipantCompletion megoldással, ahol a résztvevők maguk jelzik befejezésüket.

A résztvevők ennek a protokollnak a használata esetén a következő protokollazonosítót alkalmazzák:

http://docs.oasis-open.org/ws-tx/wsba/2006/06/CoordinatorCompletion

A protokoll által használt üzenetek

A CoordinatorCompletion protokoll az előző szekcióban definiált üzenetek többségét újrahasználja, és bizonyos üzenetek viselkedését felülírja vagy kiegészíti a koordinátori kontroll miatt. Főbb különbségek:

Koordinátortól fogadott üzenetek közül kiemeltek:* Fail: Ugyanúgy jelzi, hogy a résztvevő hibát észlelt az Active, Canceling, Completing vagy Compensating állapotok valamelyikében; a koordinátornak ez alapján Failed üzenettel kell reagálnia. CannotComplete: A résztvevő ezzel jelzi, hogy nem képes az összes szükséges műveletet végrehajtani; a koordinátornak NotCompleted választ kell küldenie, és a résztvevő nem vehet részt további aktivitásokban az adott protokollpéldányban.

A résztvevő által fogadott, e protokollra jellemző üzenet:* Complete: A koordinátor jelzése arra, hogy az adott üzleti aktivitáson belül többé nem várható új beérkező üzenet a résztvevőtől; a résztvevő ennek hatására befejezi a helyi feldolgozást, és siker esetén Completed üzenettel, sikertelenség esetén Exit, Fail vagy CannotComplete üzenettel válaszol.

Megjegyzések

A WS-BusinessActivity protokollok bármelyike alkalmazható mindkét koordinációs típussal (AtomicOutcome és MixedOutcome), így a tervezők a konkrét üzleti igények és a kívánt konzisztencia-szint alapján választhatják meg a kombinációt.