KM6: teenuste tsükliline kasutus

Mustri tüüp: töötlemise muster
Peamine kasusaaja:
automatiseeritud süsteem
Eesmärk
: teenuste kasutus
Allikas
: logikaeve
Teenuste arv:
NA

Abstract

KM6: Loop service execution means the case when the same set of services is used multiple times during the same business process instance. The pattern focuses on how "KM1: Sequential service execution" and "KM4: Parallel service execution" should be used in this case.

Sissejuhatus

Teenuste tsüklilise kasutuse all peame silmas olukorda, kus ühe või rohkema X-tee teenuse järjestikune tarbimine kordub sama sessiooni jooksul. Sessiooni all peame silmas talitusprotsessi ühte algusest lõpuni läbimist ja selle käigus toimuvaid tegevusi.

Probleem

Talitusprotsessi käigus on vaja sama X-tee teenuste komplekti tarbida korduvalt. Sisuline vajadus võib olla tingitud erinevatest asjaoludest. Üheks nendest oleks mitme objekti kohta samade andmete pärimine – näiteks kui talitusprotsessis on vaja perekonna kõigi laste kohta teada elukohta, haridustaset ja töökohta. Samas ei ole tsükliline kasutus piiratud ainult andmete pärimisega ja võib sisaldada ka andmete saatmist ja muid X-tee teenustega tehtavaid operatsioone.

Lahendus

Vajalikke teenuseid tarbitakse tsüklis, kus teenuste järgnevus on igas iteratsioonis üldjuhul sama. Olenevalt talitusprotsessist tehakse vajalikud tegevused kas pärast iga iteratsiooni või pärast kõigi iteratsioonide läbimist.

Täpne lahendus oleneb konkreetsest talitusprotsessist. Talitusprotsessi tuleks vaadelda selles võtmes, millised teenused tuleb kindlasti järjest tarbida ja milliste teenuste puhul on võimalik paralleelne tarbimine. Eesmärgiks peaks siinkohal olema talitusprotsessile kuluva tööaja vähendamine.

Lisakaalutlused

Teenuste paralleelse tarbimise korral tasub mõelda sellele, kui palju teenuseid võidakse reaalselt korraga käima panna. Kui see arv on väga suur, võib paralleelse tarbimisega tekkida probleeme. Samuti tasub arvestada turvaserveri jõudlusega (vt "X-tee turvaserveri koormusnäitajad").

Tsüklite loomisel tuleb arvestada, millal on mingi teenuse tarbimise vajadus teada. Sellest lähtuvalt võib olla võimalik talitusprotsessi optimeerida.

Tsükli iteratsioonid oleks soovituslik luua võimalikult lihtsad ja tsükli iteratsioonis sisalduv talitusloogika peaks olema selgelt piiritletud.

Sageli võib osutuda mõistlikukskombineerida seda mustrit mustriga "TM2: andmete agregeerija". See tähendab, et igas iteratsioonis saadud andmed suunatakse tarkvarakomponenti, mis täidab andmete agregeerija ülesannet ja koostab edasise talitusprotsessi jaoks sobiva andmestiku.

Näide

Näitena on toodud eesti.ee keskkonnas dokumentide allkirjastamise protsess. Tsükkel algab teenusega ametlikud-dokumendid.getDocument millega saadakse allkirjastamisele kuuluv dokument. Dokumendi saamisega paralleelselt kasutatakse teenust ametlikud-dokumendid.getUserContacts, mis tagastab allkirjastamiseks vajaliku info. Seejärel võib kasutaja teha otsuse, kas allkirjastamisega jätkata või minna mõne muu tegevuse juurde (vt "KM2: alternatiivne töövoog"). Kui kasutaja allkirjastab dokumendi, tarbitakse teenuseid ametlikud-dokumendid.prepareSignature ja ametlikud-dokumendid.confirmSignature ning protsess jätkub tsükli algusest.

Nooltel toodud numbrid tulenevad mustri leidmiseks kasutatud töövoost (vt "Mustrite logidest tuvastamine") näitavad teenuste väljakutsete vahelist aega.


Joonis 5.6 eesti.ee keskkonnas dokumentide allkirjastamisel tarbitavad teenused.



Last modified: Monday, 24 October 2016, 1:35 PM