Samanaikaisuuden hallinta Optiot transaktionaalisissa työnkuluissa
Sisältö Transaktionaaliset työnkulut Samanaikaisuuden ongelmat Optiot idea käyttökohteet WorkMan Optioiden toteutus Arviointi
Transaktionaaliset työnkulut pitkäkestoinen tehtävät=transaktiot erilaisia toteutumisvaihtoehtoja vaihtoehtoinen valinta järjestelmävirhe käyttäjän peruutus atomisuus turvattava
Esimerkki Vakuutusyhtiön vakuutuskyvyn tarkistaminen Vakuutuksen verkkomaksu Auto vakuutuksen tyypin valinta Asiakkaan luottotietojen tarkastaminen Vakuutuspäätös Vakuutuksen myöntäminen/ hylkääminen Auton rekisteritietojen hakeminen
Samanaikaisuuden ongelmat Työnkulut voivat lukea toisten keskeneräisten työnkulkujen päivittämää tietoa samanaikaisuuden edellytys työnkulut lukevat likaista tietoa työnkulun peruuntuminen voi olla mahdotonta Järjestelmän resurssien ylivaraus
Työnkulun peruuntuminen kompensaatio Kompensaatio = tehtävän tai tehtävien peruutus W = (t 1,t 2,...,t n ) Tehtävän t i kompensoiva tehtävä t i 1 Kompensoiva tehtävä toteutetaan aina kun pyydetään Palauttaa järjestelmän tilan johonkin aikaisempaan sitoutuneeseen tilaan
Kompensaatio esimerkki Yhteiskäyttöinen tili Käyttäjä A suorittaa tilille panon osana työnkulkua Käyttäjä B veloittaa tililtä käyttäjän A summasta Voidaanko käyttäjän A tilille pano peruuttaa?
Likaisen tiedon muut ongelmat Työnkulun valinnat ja päätökset perustuvat toistokelvottomaan tietoon järjestelmän resurssien ylivaraus virheellinen tieto ongelma vain rajatapauksissa
Esimerkki Vakuutusyhtiön vakuutuskyvyn tarkistaminen Vakuutuksen verkkomaksu Auto vakuutuksen tyypin valinta Asiakkaan luottotietojen tarkastaminen Vakuutuspäätös Vakuutuksen myöntäminen/ hylkääminen Auton rekisteritietojen hakeminen Voiko vakuutusyhtiö myöntää liikaa vakuutuksia?
Optiot Estävät likaisen tiedon lukemisen Työnkulut pyytävät optioita resursseihin Optio alustava varaus resursseista Työnkulun suorituksen lopuksi realisoidaan optiot, muuten hylätään optiot Tehtävät 2 vaiheisiksi preliminäärivaihe positiivinen/negatiivinen kompensaatio
Optiot option määritelmä OPTIO Preliminääritehtävä : <transaktio kutsu> Positiivinen kompensaatio: <transaktiokutsu> Negatiivinen kompensaatio: <transaktiokutsu>
Optiot virheenhallinta Optiot takaavat atomisuuden Ei likaisen tiedon lukua peruuntumisesta työnkulut lukevat vain sitounutta tietoa (realisoidut optiot) muut työnkulut eivät ole voineet lukea peruuntuvat työnkulun päivityksiä
Asiakas A varaa option suorittaa 10 e maksun tililtä a1 tilille a2. Samanaikaisesti Asiakas B suorittaa veloitusta tililtä a2. Asiakas B näkee asiakas A:n maksun tilille a2 vain jos Asiakkaan A työnkulku on suorittanut positiivisen kompensaation (sitounut). Jos asiakkaan A työnkulku peruuntuu, niin optio hylätään eikä tällä ole vaikutusta asiakkaan B työnkulkuun. Esimerkki Viitetiedot virheelliset Maksutiedot (optio) Viitetietojen tarkastus Maksun varmenne (positiivinen kompensaatio) Pankin ja asiakkaan maksukyvyn tarkistaminen Ei maksukykyä Maksun hylkäys (negatiivinen kompensaatio)
Optiot eristäminen Estetään tietorakenteisiin pääsyä estetään resurssien ylivaraus liiketoiminnallinen syy Tiedon haku tilan mukaan sitoutunutta keskeneräinen
Esimerkki Viitetiedot virheelliset Maksutiedot (optio) Viitetietojen tarkastus Maksun varmenne (positiivinen kompensaatio) Pankin ja asiakkaan maksukyvyn tarkistaminen Ei maksukykyä Maksun hylkäys (negatiivinen kompensaatio) Tilin saldo 10 e. Asiakas A varaa option suorittaa 10 e maksun tililtä a1. Samanaikaisesti Asiakas B yrittää varata optiota suorittaa 5 e maksu tililtä a1. Optioiden avulla eroteltu keskeneräiset ja sitoutuneet päivitykset eli optiota ei voida myöntää asiakkaalle B. Näin ollen resurssien ylivaraus ei ole mahdollista.
Optiot WorkMan Työkulunhallintajärjestelmä Optioiden toteutus SQL Tehtävillä taulut eri vaiheille tilarelaatio pyyntörelaatio vastausrelaatio Tehtävien ajastus triggereillä
WorkMan arkkitehtuuri [Pul00]
Preliminääri ja kompensaatiovaihe WorkMan Optiot tehtävien 2 vaiheisuus preliminääritaulu sitoutuneen tiedon taulu Tietokannanhallintajärjestelmä huolehtii päivitystransaktioiden atomisuudesta
Optioiden rajoitteet WorkMan CREATE TABLE premaksut Nro Int AsiakasId Int Tilinumero Char(11) Kohdetili Char(11) Viitenro Int premaksu Int Maksupäivä Date ALTER TABLE Tilitiedot ADD premaksut Int ALTER TABLE Tilitiedot ADD CONSTRAINT tutkisaldo CHECK (saldo PreMaksut >= 0) ALTER TABLE PreMaksut ADD CONSTRAINT yksimaksu CHECK tilinumero,kohdetili,viitenro UNIQUE
Esimerkki Begin transaction Maksutiedot (asiakasid,maksutili,kohdetili2, viitenumero,summa,maksupäivä) INSERT ((select max(nro) from PreMaksut), maksutili, kohdetili2, viitenumero, summa, maksupäivä) into PreMaksut UPDATE Tilitiedot SET premaksut = premaksut + summa where tilinumero = maksutili End transaction Option Maksu Preliminääritehtävä : Maksutiedot Positiivinen kompensaatio: INSERT (Nro, Asiakas, maksutili, kohdetili, summa, viitenumero, maksupäivä) into Maksut DELETE (Nro, Asiakas, maksutili, kohdetili, viitenumero, summa, maksupäivä) FROM PreMaksut UPDATE Tilitiedot SET premaksut = premaksut summa and saldo = saldo summa where tilinumero = maksutili Negatiivinen kompensaatio: DELETE (Nro, Asiakas, maksutili, kohdetili, viitenro, summa, maksupäivä) FROM PreMaksut UPDATE Tilitiedot SET premaksut = premaksut summa where tilinumero = maksutili
Esimerkki
Optioiden ajastus WorkMan Negatiivinen/positiivinen kompensaatio keskitetysti Työnkululla alitehtäviä ja alityönkulkuja Koordinointitehtävä tiedusteluvaihe päätösvaihe
Optiot WAL käytäntö WAL käytäntö peruutetaan aktiiviset realisoimattomat optiot sitoutuneet elvytetään realisoidut optiot Koordinoijatehtävä välittää tiedon sitoutumisesta tai peruuntumisesta Alityönkulut välittävät tiedon edelleen tehtäville ja omille alityönkuluille
Optioiden hyödyt Ei likaisen tiedon lukemista kompensaatio aina mahdollinen Keskeneräisen ja sitoutuneen tiedon erottaminen tiedon eristäminen Optiot operaatiotasolla työnkulkuja voi muuttaa
Optiot määrittelytasoilla
Optioiden ongelmat Keskitetty ratkaisu Ylläpidon lisääntyminen samassa taulussa option tila? Ei estä saman tiedon näkymistä samanaikaisesti Kuinka paljon todellisuudessa tarvetta? työnkulut ihmisvalvonnassa
Yhteenveto Transaktionaaliset työnkulut tukevat semanttista atomisuutta Kompensaatio ongelma Optiot eräs ratkaisu 2 vaiheisuus Voidaan toteuttaa tietokantajärjestelmän välineillä (SQL)