Navigace

Hlavnφ menu

 

Microsoft BizTalk Server 2004 - schΘmata, transformace a kanßly

V tomto Φlßnku se dozvφte, jak se v BizTalku vytvß°ejφ schΘmata zprßv, jak provßd∞t jednoduchΘ i slo₧it∞jÜφ transformace mezi r∙zn²mi schΘmaty a jak nastavovat vstupnφ a v²stupnφ kanßly. VÜechny tyto ·koly jsou °eÜeny vizußlnφmi nßvrhß°i v prost°edφ VS.NET.

Schema Designer

Aby se odesilatel a p°φjemce zprßvy navzßjem pochopili, musφ pou₧φvat nejen urΦit² komunikaΦnφ kanßl, ale takΘ mluvit stejn²m jazykem. Jak jsme si ji₧ d°φve naznaΦili, zprßvy jsou zapsßny pomocφ XML, ten je vÜak moc obecn² a definuje pouze jakousi gramatiku jazyka. OvÜem aby komunikace byla smysluplnß, je nutnΘ takΘ pou₧φvat p°edem danou slovnφ zßsobu. Ka₧dß aplikace, kterß je ochotnß komunikovat se sv²m okolφm, by m∞la mφt svΘ komunikaΦnφ rozhranφ d∙kladn∞ zdokumentovanΘ a m∞la by p°esn∞ specifikovat strukturu dat, kterß p°ijφmß z jin²ch aplikacφ, nebo kterß odesφlß. K tomu d°φve slou₧ila definice typu dokumentu (DTD), dnes se pou₧φvß XSD (XML Schema Definition). SchΘma popisuje, jak majφ b²t v XML dokumentu uspo°ßdßny elementy a atributy, jakΘ mohou b²t jejich hodnoty a podobn∞.

V BizTalku musφ ka₧dß zprßva odpovφdat n∞jakΘmu schΘmatu, kterΘ je mo₧nΘ bu∩ odn∞kud naΦφst, nechat vygenerovat podle vzorovΘho XML dokumentu (obvykle je pak nutnΘ jej jeÜt∞ poupravit), nebo je vytvo°it p°φmo v prost°edφ Visual Studia .NET. To ji₧ obsahuje vestav∞n² vizußlnφ XSD nßvrhß°. Jak se s nφm pracuje, to si lze p°edstavit ji₧ na zßklad∞ letmΘho pohledu na nßsledujφcφ obrßzek.

Visual Studio .NET - vizußlnφ XSD nßvrhß°

Zp∙sob prßce s tφmto nßvrhß°em odpovφdß spφÜe nßvrhu relaΦnφ databßze, tedy jako bychom vytvß°eli tabulky a jejich sloupce a spojovali je relacemi. Tento princip odpovφdß koncepci DataSet∙, kterΘ m∙₧eme XML dokumenty plnit. OvÜem BizTalk s DataSety nepracuje, a proto obsahuje sv∙j vlastnφ nßvrhß°, kter² je pro jeho pot°eby pon∞kud p°ehledn∞jÜφ a ·Φeln∞jÜφ a navφc do schΘmatu uklßdß takΘ informace, kterΘ v XSD stardardu nejsou definovßny, avÜak pro BizTalk majφ sv∙j specifick² v²znam. Jsou ovÜem samoz°ejm∞ umφst∞ny ve vlastnφm jmennΘm prostoru, tak₧e aplikace, kterΘ je neznajφ, je budou prost∞ ignorovat. Op∞t nßsleduje ilustraΦnφ obrßzek, na kterΘm je ukßzka XSD schΘmatu shodnΘho s p°edchozφm p°φkladem.

BizTalk - Schema Designer
BizTalk - Schema Designer (plnß velikost, cca 10 kB)

BizTalk Mapper

Velmi Φasto pot°ebujeme zm∞nit strukturu zprßvy, tedy vlastn∞ p°emapovat jedno schΘma na jinΘ schΘma. N∞kdy se takΘ m∙₧e hodit spojit dv∞ Φi vφce zprßv do jednΘ, nebo naopak rozd∞lit jednu zprßvu do n∞kolika. P°itom nemusφ jφt o jednoduchΘ p°ejmenovßnφ element∙ a atribut∙, n²br₧ m∙₧e b²t nutnΘ vykonat nad daty n∞jakΘ komplikovan∞jÜφ operace. VÜechny tyto ·koly °eÜφ BizTalk mapper. Je to jakßsi mocn∞jÜφ obdoba XML transformacφ (XSLT). Poj∩me se nejd°φve podφvat, jak tento vizußlnφ nßstroj vypadß, jist∞ budete souhlasit, ₧e prßce s nφm je op∞t velmi intuitivnφ.

BizTalk - Mapper

Na levΘ stran∞ je zobrazeno schΘma zprßvy, kterß do procesu vstupuje, vpravo je schΘma v²slednΘ zprßvy a uprost°ed je mapovacφ (transformaΦnφ) logika. Elementy Φi atributy, jejich₧ obsah chceme na v²stup jednoduÜe p°ekopφrovat bez jak²chkoli ·prav, staΦφ napojit na souvisejφcφ prvek pouh²m p°eta₧enφm myÜφ. Prvky se propojφ Φernou linkou, kter²ch je na naÜem obrßzku celß °ada. Pokud chceme n∞kterΘmu prvku nastavit konstantnφ hodnotu (nezßvislou na vstupujφcφ zprßv∞), klikneme na n∞j a hodnotu nastavφme v okn∞ vlastnostφ objektu (Properties, na obrßzku nenφ vid∞t).

A jak²m zp∙sobem vznikß n∞jakß slo₧it∞jÜφ transformaΦnφ logika? Pomocφ takzvan²ch functoid∙, co₧ je vizußlnφ reprezentace n∞jakΘho elementßrnφho logickΘho prvku, kter² m∙₧e mφt n∞kolik vstupnφch parametr∙ a jeden v²stupnφ. Ka₧d² parametr mß urΦen datov² typ, kter² zpracovßvß, a pokud datov² typ neodpovφdß, pokusφ se BizTalk o jeho konverzi. Do ka₧dΘho functoidu mohou data vstupovat z vybranΘho prvku ve vstupnφ zprßv∞, nebo z v²stupu jinΘho functoidu, nebo mohou b²t takΘ nastavena na konstantnφ hodnotu. V naÜem ukßzkovΘm p°φkladu je pou₧it jedin² typ functoidu, naz²van² Looping, slou₧φcφ k opakovßnφ vstupnφho prvku na v²stup. Dφky n∞mu se ve v²stupnφ zprßv∞ vygeneruje element Gen._Journal_Line vygeneruje tolikrßt, kolikrßt se vyskytuje element UCTPODKLAD ve vstupnφ zprßv∞.

Functoid∙ existuje pom∞rn∞ velkΘ mno₧stvφ, jak ukazuje nßsledujφcφ pohled na ToolBox BizTalk mapperu, kde jsou functoidy za°azeny do n∞kolika skupin. Pokud by nßm zabudovanΘ functoidy nestaΦily a pot°ebovali bychom n∞jakou velmi specifickou logiku, m∙₧eme si ji sami naprogramovat a vyvolat prost°ednictvφm functoidu Scripting.

BizTalk - Mapper ToolBox

Podφvejme se na trochu komplikovan∞jÜφ ukßzku vyu₧itφ functoid∙:

BizTalk - ukßzka vyu₧itφ functoid∙

Ve vstupnφ zprßv∞ je v elementu Bank_Account_No. Φφslo bankovnφho ·Φtu ve slo₧enΘm tvaru, tedy dohromady s k≤dem banky. My jej pot°ebujeme rozd∞lit na k≤d ·Φtu a k≤d banky. Nejd°φve functoidem String Find nalezneme lomφtko, kter²m jsou ob∞ Φφsla odd∞lena. V²sledkem je index (po°adφ) znaku ve vstupnφm °et∞zci. K tomu pomocφ functoid∙ Addition a Subtraction p°iΦteme a odeΦteme jedniΦku, Φφm₧ zφskßme index poslednφho znaku k≤du ·Φtu a prvnφho znaku k≤du banky. Tyto indexy vyu₧ijeme jako vstupy do functoid∙ String Left a String Extract, kterΘ ji₧ ze vstupnφho pole vy°e₧ou pot°ebnΘ Φßsti.

Pipeline designer

Proto₧e existujφ dva typy port∙ (vstupnφ a v²stupnφ), rozliÜujeme takΘ dva typy kanßl∙ (pipeline). Na obrßzku nφ₧e je nßvrhß° s otev°en²m v²stupnφm kanßlem, vstupnφ kanßl vypadß velice obdobn∞. Jak vφme, kanßly °eÜφ celou °adu problΘm∙ p°i zpracovßvßnφ protΘkajφcφch zprßv - testujφ validitu dokumentu, konvertujφ jeho formßt (BizTalk navenek nepodporuje pouze XML, ale takΘ dalÜφ formßty), Üifrujφ Φi deÜifrujφ, komprimujφ Φi dekomprimujφ, ov∞°ujφ toto₧nost odesilatele nebo naopak podepisujφ zprßvu certifikßtem u₧ivatele a plnφ dalÜφ obdobnΘ ·koly. Ka₧d² elementßrnφ ·kol je °eÜen p°φsluÜnou BizTalk komponentou, kterou m∙₧eme umφstit do p°φsluÜnΘ etapy zpracovßnφ zprßvy. Na naÜem obrßzku jsou t°i etapy, obvykle ka₧dß z nich m∙₧e obsahovat n∞kolik komponent. Komponenty lze takΘ konfigurovat, co₧ znamenß nastavovat jim vlastnosti - nap°φklad pokud chceme zprßvu validovat, je t°eba vybrat schΘma, podle kterΘho mß validace probφhat.

BizTalk - Pipeline Designer

Je to p°φliÜ snadnΘ? Zdßnφ klame!

Popsali jsme si vytvß°enφ orchestracφ, schΘmat, mapovßnφ a kanßl∙. P°ipadß vßm BizTalk Server 2004 jednoduch²? Pokud ano, asi vßs zklamu, proto₧e je to uvnit° velmi slo₧it² a komplexnφ systΘm, a pokud mu nebudete d∙kladn∞ rozum∞t, jist∞ narazφte na celou °adu zßludn²ch problΘm∙. Lze °φci, ₧e je to vlastn∞ blackbox - Φernß sk°φ≥ka, do kterΘ nenφ vid∞t a kterß uvnit° n∞jak funguje. Pokud se ale n∞co pokazφ, lze zvenku Φasto velmi t∞₧ko odhadnout, co je vlastn∞ Üpatn∞. Jde ale pravd∞podobn∞ o jedinou Üpatnou vlastnost tohoto zajφmavΘho aplikaΦnφho serveru.

B°φza, Petr (11. 12. 2004)

Microsoft BizTalk Server 2004

Microsoft BizTalk Server 2004 je modernφ °eÜenφ integrace aplikacφ a realizace obchodnφch proces∙ mezi nimi. Po vysv∞tlenφ zßkladnφch pojm∙ nßsleduje v²klad zp∙sobu tvorby integraΦnφch aplikacφ, jejich zprovozn∞nφ a napojenφ na dalÜφ systΘmy. Tato sΘrie Φlßnk∙ ji₧ byla uzav°ena, aΦkoli dalÜφ pokraΦovßnφ nelze vylouΦit.