TM3: andmete päisepõhine suunamine

Mustri tüüp: töötlemise muster
Peamine kasusaaja:
automatiseeritud süsteem
Eesmärk
: sõnumitöötlus
Allikas
: teadaolev praktika
Teenuste arv: 1

Abstract

TM3: Header-based routing is mostly used in case of data push services where the service input messages can be of different types. This is especially true for services that follow the primitive "PM3: Protocol tunnelling". The pattern is used on the service provider side to redirect input messages based on its type to software components suitable for processing that type of messages.

Sissejuhatus

Muster kirjeldab skeemi X-tee teenuse kaudu vastuvõetud sõnumi süsteemisiseseks edasisuunamiseks vastavalt sõnumi päises sisalduvale infole. Mustrit kasutatakse peamiselt suuremates süsteemides, mis võtavad vastu erinevat tüüpi sõnumeid, mida ei saa sama talitusloogika järgi töödelda.

Probleem

Infosüsteem pakub X-tee teenust, mille kaudu on infosüsteemile võimalik saata erineva sisuga sõnumeid. Sõnumid on jagatud oma sisu järgi sõnumitüüpideks ja iga sõnumitüübi töötlemiseks kehtivad erinevad talitusloogika reeglid. Igale sõnumitüübile kehtiva talitusloogika kirjeldamine infosüsteemi samas osas muudab infosüsteemi edasise haldamise, täiendamise ja vigade otsimise keerukamaks.

Lahendus

Lahendusena tuleks eraldada sõnumitüübi tuvastamine sõnumi töötlemise loogikast ja iga sõnumitüübi töötlemine tuleks lahendada suhteliselt eraldiseisvas infosüsteemi komponendis. Ehk tuleks jälgida ülesannete eraldatuse (i.k. separation of concerns) põhimõtet. Lahenduse põhiliseks osaks on sisupõhine suunaja (i.k. content-based router), mis tuvastab sõnumitüübi ja seejärel suunab sõnumi edasi sobivale komponendile. Sõnumitüübi tuvastamine toimub üldjuhul sisendi vastava elemendi järgi.

Lisakaalutlused

Sisupõhine suunaja moodustab andmevahetuses kriitilise komponendi ja tuleks seega hoida võimalikult lihtsana, et vähendada vigade esinemist, lihtsustada muudatuste tegemist ja kiirendada üldist sõnumitöötlust.

Käesolev muster on kasutatav ka olukorras, kus sõnumite suunamine ei toimu sõnumitüübi järgi. Suunamine võib tugineda ka sõnumis sisalduva ärilise sisu analüüsile või toimuda teenust tarbinud asutuse tunnuse järgi. Viimasel juhul tuleks kasutada X-tee sõnumite päises sisalduvat infot, mille tõelevastavus on X-tee poolt tagatud.

Näide

Näitena on toodud teenus digilugu.hl7. Näite seisukohast on oluline ainult teenuse sisend.

hl7Request
|-> keha (type: hl7Paring)
| |-> hl7InputMessage (type: xml, description: “HL7 paringustring“)
| | |-> XML dokument HL7 formaadis
| | |-> ...
| | |-> templateId.extension
| | |-> receiver.extension
| | |-> ...

Teenus kasutab primitiivi "PM3: protokolli tunneldamine". Tunneldatud sõnum vastab HL7 vormingule ja sisaldab elemente "templateId.extension" ja "receiver.extension". Sõnumi suunamine sooritatakse vastavalt nimetatud elementide väärtustele.



Last modified: Sunday, 16 October 2016, 1:00 PM