WS-Business Activity

A Wikipédiából, a szabad enciklopédiából

A WS-Business Activity (Web-Szolgáltatás Üzleti Aktivitás), a Web-Szolgáltatás Tranzakciók (Web Services Transactions) közé tartozik. A Web-Szolgáltatás Tranzakciók specifikációi olyan nagy cégek közreműködésével készültek, mint az IBM, a BEA és a Microsoft.

Web-Szolgáltatás Tranzakciók jelenleg három nagyobb működési egységre bonthatóak: Web-Szolgáltatás Koordináció (WS-Coordination), Web-Szolgáltatás Atomi Tranzakció (WS-Atomic Transaction) és Web-Szolgáltatás Üzleti Aktivitás (WS-Business Activity).[1]

Bevezetés[szerkesztés]

A Web-Szolgáltatás üzleti Aktivitás egy OASIS szabvány hosszú távú tranzakciók kezelésére. Képes kivételek kezelésére, valamint (szükség esetén) kompenzációs feladatok végrehajtására is. A specifikáció két protokollt definiál:

  • Üzleti Megállapodás Résztvevői Végrehajtással (BusinessAgreementWithParticipantCompletion)
  • Üzleti Megállapodás Koordinátori Végrehajtással (BusinessAgreementWithCoordinatorCompletion)

A Web-Szolgáltatás fejlesztők ezek közül bármelyiket, vagy akár mindet is használhatják a tranzakció megalkotásához. A Web-Szolgáltatás Üzleti Aktivitás működése a Web-Szolgáltatás Koordinációra épül, amely definiálja az Aktivációs és a Regisztrációs szolgáltatást, valamint a CoordinationContext típust.[1][2][3]

A modell[2][szerkesztés]

Az Üzleti Aktivitás protokollok a következőket képesek nyújtani:

  • Az üzleti alkalmazások feloszthatóak különböző üzleti aktivitás scope-okra. Egy ilyen scope egy üzleti feladat, amelyet web-szolgáltatások egy csoportja biztosít, és amelynek helyes eredményéhez szükséges a részt vevő szolgáltatások kölcsönös egyetértése. A scope-ok hierarchikus beágyazási szinteket alkothatnak. A beágyazási szintek száma nem korlátozott. A beágyazott scope-ok:
    • Lehetővé teszik az üzleti alkalmazás számára, hogy kiválassza, mely gyermek feladatok szükségesek a végeredmény meghatározásához. (Például: egy üzleti alkalmazás több beszállító közül attól rendelhet, aki a legolcsóbban adja a szükséges terméket.)
    • Lehetővé teszik az üzleti alkalmazás számára a gyermek feladatok által dobott kivételek lekezelését, és a folyamat folytatását, akkor is ha nem volt minden rendben. Amikor egy gyermek feladat befejezi a munkát, lehetőség adódik a szülő aktivitásban regisztrált kompenzáció végrehajtására.
  • Az üzleti alkalmazás egy résztvevője megadható, mint olyan, amelyik elhagyja az üzleti alkalmazást. Így lehetővé válik az alkalmazásból való kilépés, és az elvégzett számítás továbbítása egyéb scope-oknak. A résztvevők listája dinamikus, és bármelyik résztvevő kiléphet a protokollból anélkül, hogy megvárná annak végeredményét.
  • Az Üzleti Aktivitás koordinációs protokollok lehetővé teszik egy üzleti alkalmazás résztvevői számára, hogy meghatározzák annak végeredményét anélkül, hogy a kérelmezésre kéne várniuk. Ez a jellemző általában akkor hasznos, amikor egy részfeladat végrehajtása sikertelen, így az általa küldött üzenet használható egy üzleti aktivitás kivételkezelő számára, hogy módosítsa a célokat, és megfelelően vezesse tovább a tranzakciót.
  • Az Üzleti Aktivitás koordinációs protokollok lehetővé teszik egy üzleti alkalmazás résztvevői számára a "kísérleti" műveleteket, mint az aktivitás normális részeit. Ezen "kísérleti" műveleteknek az eredménye láthatóvá válhat az aktivitás befejezése előtt, és esetlegesen szükség lehet olyan üzleti logikákra, amelyek akkor kapnak szerepet, ha a műveletet kompenzálni kell. Ez a jellemző akkor lehet fontos, amikor az üzleti aktivitásnak sok műveletet kell elvégeztetnie, egymástól független szolgáltatások segítségével, hosszú időn keresztül.

A specifikáció implementálásához használni kell a következő XML névteret:

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

Koordinációtípusok[2][szerkesztés]

Az Üzleti Aktivitások kétfajta koordináció típust támogat.

  • Az Atomi Eredmény (AtomicOutcome) koordinációs típussal rendelkező koordinátornak az összes résztvevőt utasítania kell vagy a bezárásra, vagy a kompenzációra.
  • A Kevert Végeredmény (MixedOutcome) típusú koordinátornak minden résztvevőt utasítania kell egy eredményre, de nem kötelező utasítania bezárásra, vagy kompenzációra.

Minden Üzleti Alkalmazás koordinátornak implementálnia kell az Atomi Eredmény koordinációs típust, és implementálhatja a Kevert Végeredmény koordinációs típust is.

Ennek megfelelően a következő két URI valamelyikét használni kell az Üzleti Aktivitás CoordinationContext típusának definiálásához:

http://docs.oasis-open.org/ws-tx/wsba/2006/06/AtomicOutcome[halott link]

http://docs.oasis-open.org/ws-tx/wsba/2006/06/MixedOutcome[halott link]

Definiált protokollok[2][szerkesztés]

Üzleti Megállapodás Résztvevői Végrehajtással (BusinessAgreementWithParticipantCompletion )[szerkesztés]

A résztvevő a koordinátorával regisztrál ehhez a protokollhoz, így a koordinátora vezérelheti. A résztvevő tudomást szerez arról, amikor minden, az adott üzleti aktivitáshoz tartozó feladat befejeződik.

A résztvevőknek, amelyek erre a protokollra iratkoznak fel, a következő protokollazonosítót kell használniuk:

http://docs.oasis-open.org/ws-tx/wsba/2006/06/ParticipantCompletion[halott link]

A protokoll által használt üzenetek[szerkesztés]

  • A koordinátor által fogadottak:
    Completed
    Ezen üzenet fogadása után a koordinátor tudja, hogy a résztvevő befejezte az összes, az adott protokollpéldánnyal kapcsolatos feladatát. A következő üzenetben a koordinátornak egy Close vagy egy Compensate üzenetet kell, hogy jelezze a protokollpéldány végső eredményét. Miután elküldte a Completed üzenetet, az adott résztvevő nem vehet részt semmilyen más, az adott aktivitáshoz tartozó feladatban.
    Fail
    Ezen üzenet fogadása után a koordinátor tudja, hogy a résztvevő hibázott az Active, a Canceling vagy a Compensating állapotok valamelyikében. A résztvevő által végzett munka állapota meghatározhatatlan. A következő protokollüzenetben a koordinátornak Failed üzenetet kell küldenie. Ez az üzenet magában foglal egy QName-et, amely a hiba okát jelzi.
    Compensated
    Ezen üzenet elküldése után a résztvevőnek el kellene feledkeznie az aktivitásról. Az üzenet fogadása után a koordinátor tudja, hogy a résztvevő sikeresen kompenzált minden általa végrehajtott, az adott protokollpéldányhoz kapcsolódó folyamatot. A koordinátornak el kellene felejtenie az adott résztvevő állapotát.
    Closed
    Ezen üzenet elküldése után a résztvevőnek el kellene feledkeznie az aktivitásról. Az üzenet fogadása után a koordinátor tudja, hogy a résztvevő sikeresen befejezte a protokollpéldánnyal kapcsolatos feladatát. A koordinátornak el kellene felejtenie az adott résztvevő állapotát.
    Canceled
    Ezen üzenet elküldése után a résztvevőnek el kellene feledkeznie az aktivitásról. Az üzenet fogadása után a koordinátor tudja, hogy a résztvevő sikeresen visszavonta minden, a protokollpéldánnyal kapcsolatos feladatát. A koordinátornak el kellene felejtenie az adott résztvevő állapotát.
    Exit
    Az üzenet fogadása után a koordinátor tudja, hogy a résztvevő többé nem vesz részt az üzleti aktivitásban. Minden függőben lévő munkája eldobásra került, és a protokollpéldánnyal kapcsolatban végrehajtott műveletei sikeresen visszavonásra kerültek. A következő protokoll üzenetben a koordinátornak Exited üzenetet kell küldenie. Exit üzenetet csak Active vagy Completing állapotú résztvevőnek kéne küldenie.
    CannotComplete
    Az üzenet fogadása után a koordinátor tudja, hogy a résztvevő rájött, nem képes minden, az adott protokollpéldányhoz tartozó művelet végrehajtására. Minden függőben lévő munkája eldobásra került, és a protokollpéldánnyal kapcsolatban végrehajtott műveletei sikeresen visszavonásra kerültek. A következő protokollüzenetben a koordinátornak NotCompleted üzenetet kell küldenie. Miután elküldte a CannotComplete üzenetet, az adott résztvevő nem vehet részt semmilyen más, az adott aktivitáshoz tartozó feladatban. A CannotComplete üzenetet csak Active állapotú résztvevőnek kéne küldenie.
  • A résztvevő által fogadottak:
    Close
    Az üzenet fogadása után a résztvevő tudja, hogy a protokollpéldány sikeresen véget ért. A következő protokoll üzenetben a résztvevőnek Closed üzenetet kell küldenie a protokollpéldány számára.
    Cancel
    Az üzenet fogadása után a résztvevő tudja, hogy az általa elvégzett munkát vissza kell vonni. A következő protokollüzenetben a résztvevőnek Canceled vagy Fail üzenetet kell küldenie. A Canceled üzenetet csak a munka sikeres visszavonása után kéne elküldenie (ekkor a protokollpéldány is befejeződik). A résztvevőnek Failed üzenetet csak a munka sikertelen visszavonása után kéne elküldenie.
    Compensate
    Az üzenet fogadása után a résztvevő tudja, hogy az általa elvégzett munkát kompenzálni kéne. A következő protokoll üzenetben a résztvevőnek Compensated vagy Fail üzenetet kell küldenie. A Compensated üzenetet csak a munka sikeres kompenzálása után kéne elküldenie (ekkor a protokollpéldány is befejeződik). A résztvevőnek Failed üzenetet csak a munka sikertelen kompenzálása után kéne elküldenie.
    Exited
    Az üzenet elküldése után a koordinátornak el kéne felejtkeznie az adott résztvevőről. Az üzenet fogadása után a résztvevő tudja, hogy a koordinátor többé nem tekinti az aktivitásban résztvevőnek. A résztvevőnek el kéne felejtkeznie az aktivitásról.
    NotCompleted
    Az üzenet elküldése után a koordinátornak el kéne felejtkeznie az adott résztvevőről. Az üzenet fogadása után a résztvevő tudja, hogy a koordinátor felkészült arra, hogy a résztvevő nem tudja végrehajtani minden, az adott protokollpéldányhoz kapcsolódó feladatát, és, hogy a résztvevő többé nem vesz részt az aktivitásban. A résztvevőnek el kéne felejtkeznie az aktivitásról.
  • A koordinátor és a résztvevők által is fogadottak:
    GetStatus
    Ez az üzenet lekérdezi a koordinátor vagy a résztvevő aktuális állapotát. A válasz egy Status üzenet, amely egy QName tagot tartalmaz, amely jelzi a koordinátor vagy a résztvevő aktuális állapotát. Ez az üzenet soha nem eredményez állapotváltást.
    Status
    Ez az üzenet a válasz a GetStatus üzenetre. Az üzenet tartalmaz egy QName tagot, amely jelzi a koordinátor vagy a résztvevő aktuális állapotát.

A koordinátor beléphet abba az állapotba amelyet a protokoll üzenetben elküldött (vagy amibe az elküldött üzenet alapján kerülnie kéne). Azonban ha valamelyik résztvevőtől olyan üzenetet kap, amely az előző, és nem a jelenlegi állapotával konzisztens, akkor a koordinátornak vissza kell térnie abba az állapotba, fogadnia kell az üzenetet, és ettől a ponttól folytatni a protokollt. Ha a résztvevő ilyen helyzetet detektál, el kell dobnia a koordinátortól érkező inkonzisztens protokoll üzenetet.

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

Ez a protokoll megegyezik az előzővel kivéve, hogy. A résztvevő a koordinátorára támaszkodik abban, hogy megállapítsa, mikor érkezett meg az összes hozzá intézett kérés az adott üzleti aktivitáson belül.

A résztvevők, amelyek erre a protokollra iratkoznak fel, a következő protokoll azonosítót kell használniuk:

http://docs.oasis-open.org/ws-tx/wsba/2006/06/CoordinatorCompletion[halott link]

A protokoll által használt üzenetek[szerkesztés]

Az Üzleti Megállapodás Koordinátori Végrehajtással protokoll fölülírja a következő üzeneteket: (Az üzenetetek az előző szekcióban voltak definiálva.)

  • A koordinátor által fogadottak:
    Fail
    Ezen üzenet fogadása után a koordinátor tudja, hogy a résztvevő hibázott az Active, a Canceling, a Completing vagy a Compensating állapotok valamelyikében. A résztvevő által végzett munka állapota meghatározhatatlan. A következő protokoll üzenetben a koordinátornak Failed üzenetet kell küldenie. Ez az üzenet magában foglal egy QName-et, amely a hiba okát jelzi.
    CannotComplete
    Az üzenet fogadása után a koordinátor tudja, hogy a résztvevő rájött, nem képes minden, az adott protokollpéldányhoz tartozó művelet végrehajtására. Minden függőben lévő munkája eldobásra került, és a protokollpéldánnyal kapcsolatban végrehajtott műveletei sikeresen visszavonásra kerültek. A következő protokoll üzenetben a koordinátornak NotCompleted üzenetet kell küldenie. Miután elküldte a CannotComplete üzenetet, az adott résztvevő nem vehet részt semmilyen más, az adott aktivitáshoz tartozó feladatban. A CannotComplete üzenetet csak Active vagy Completing állapotú résztvevőnek kéne elküldenie.

Ezeken, valamint az előző fejezetben definiált üzeneteken kívül a Üzleti Megállapodás Koordinátori Végrehajtással protokoll a következő üzenetet használja:

  • A résztvevő által fogadott:
    Complete
    Az üzenet fogadása után a résztvevő tudja, hogy az adott üzleti aktivitáson belül már nem fog új üzenetet kapni. A résztvevő befejezi az alkalmazás futtatását, és ha sikeres, akkor egy Completed üzenetet kell küldenie. Amennyiben sikertelen, egy Exit, Fail vagy CannotComplete üzenetet kell küldenie.

Megjegyzések[szerkesztés]

Bármelyik protokoll bármelyik koordináció típussal használható.

A protokoll elemeknek vannak különböző kiterjesztési pontjaik. Ezek azonban nem mondhatnak ellen a szülő és/vagy tulajdonos elem szemantikájának. Ha egy fogadó nem ismer föl egy kiterjesztést, akkor azt ajánlott figyelmen kívül hagynia.

Erősen ajánlott a szolgáltatások közötti kommunikáció biztosítása a WS-Security specifikációban leírt mechanizmusok fölhasználásával.

Források[szerkesztés]