T A R T U Ü L I K O O L MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Report Definition Language Referaat Juhendav õppejõud: Indrek Sander Autor: Raido Tonts Tartu 2005
Sisukord 1. Sissejuhatus... 3 2. Taust... 3 2.1 Mis on aruanne?... 3 2.2 Ülevaade RDL-i võimalustest... 3 3. RDL-i kood... 4 4. Programmiline RDL-i genereerimine... 5 5. Kokkuvõte... 5 Lisad... 7 Lisa 1:.NET keskkonnas genereeritud RDL aruanne... 7 Kasutatud kirjandus... 8 2
1. Sissejuhatus Tänapäeva andmebaasi maastikul kasutavad enamus andembaase tootvad firmad enda poolt loodud ja kaitstud aruannete genereerimise koodi. Lisaks sellele toetavad nende süsteemi poolt loodud aruandeid vaid nende endi poolt väljatöötatud programmid. Klientide jaoks tähendab see tõsiasja, et nad ei saa aruandeid liigutada erinevate rakenduste vahel ning on väga vähe võimalusi valida uusi tööriistu, nii et need töötaksid nende endises keskkonnas. Report Defnition Language (RDL), ehk eesti keelde tõlgituna aruande määratlus keel, on XML-põhine skeem aruannete määratlemiseks. RDL-i eesmärgiks on edendada kommerts aruandlustoodete koostalitusvõimet, määratledes alusskeemi, mis võimaldab erinevate programmide vahel aruannete vahetust. Koostalitusvõime arendamiseks hõlmab RDL endas nõudmiste tasemeid, mida tooted võivad toetada. 2. Taust 2.1 Mis on aruanne? Aruanne on kombinatsioon kolme tüüpi informatsioonist: 1. Andmed informatsioon andmete kohta ning milline on andmete struktuur. 2. Kujundus informatsioon, kuidas andmeid kasutajale kuvada. 3. Suvandid informatsioon autorite, parameetrite, kujutiste või mille iganes kohta. 2.2 Ülevaade RDL-i võimalustest RDL-i üks peamisi võimalusi on erinevate graafikute genereerimine. Näiteks kahemõõtmelised tulp-, joon- ja ribadiagrammid. Lisaks veel sektoriteks jaotatud nii öelda koogi ja sõõriku diagrammid. Lisaks diagrammidele on võimalik luua väga mitmekülgseid tabeleid, arvukate päiste ja jalustega ning detailiseeritud ridadega. Võimalik on kuvada nimekirjasid ja maatrikseid. 3
RDL toetab mitmeid tuntud funktsioone arvutuste ja tingimuslausete kirja panemiseks. Lisaks on võimaldatud finants ja agregaatsed meetodid nagu DDB, FV ning sum, avg, count, max, min jne. RDL-i väljastusvahendid on samuti väga tasemel. Võimalik on luua PDF ja XML formaadis faile ning loomulikult ka printida. RDL-i toetavad näiteks sellised andmebaasisüsteemid nagu Microsoft SQL Server, Microsoft OLE DB Provider ja ODBC. Lisaks on väga hea genereerida RDL-i.NET keskkonnas. 3. RDL-i kood Nagu eelpool juba mainitud põhineb RDL XML skeemil. Teadupärast on XML-i aluseks tagid ehk koodid, mis kirjutatakse nurkusulgude (< ja >) vahele. Osa koode on nii nimetatud paariskoodid, millest esimene määrab mõjupiirkonna alguse, teine aga selle lõpu. Alati pole vaja elemendi mõjupiirkonna lõppu määrata, see sõltub konkreetsest elemendist ja situatsioonist. Kui määratakse mõjupiirkonna lõppu, lisatakse tagide vahel oleva koodi algusesse kaldkriips. Iga RDL-i dokument algab tagiga <Report> ning lõpeb tagiga </Report>. RDL-i tähtsaimaks osadeks on elemendid, mis paiknevadki dokumendi algust ja lõppu tähistavate <Report> tagide vahel. Ka elementide kirja panemiseks kasutatakse tage. Elementidel võib veel olla omakorda alamparameetreid, mis on samuti tagide sees. Elementide peamiseks eesmärgiks on määratleda aruande välimus ja andmete paiknemine. RDL-i kõik elemendid on kirjas RDL-i spetsifikatsioonis, mille alusel andmebaasisüsteemide tootjad oma aruande programmi peaksid välja töötama. Lisaks etteantud elementidele on võimalik kasutada ka lisaelemente, kuid sel juhul saab selle elemendi funktsionaalsust kasutada vaid üks ainus programm, mis antud RDL dokumendi genereeris. 4
4. Programmiline RDL-i genereerimine RDL ei ole programmiline liides või protokoll nagu HTTP või ODBC. See ei määratle, kuidas aruandedid programmilt programmile edastatakse. Kuna RDL on täielikult kapseldatud, on võimalik kirjutada koodi, mis suudab tõlgendada RDL dokumenti ilma selle loonud programmi olemust teadmata. Iga protokoll või programmeerimis keskkond, mis tuleb toime XML keele tõlgendamisega, saab hakkama ka RDL-iga. RDL-iga puutuvad kokku kaks peamist osapoolt: tarbija ja tooja. Tarbijad on programmid, mis suudavad RDL-i tõlgendada ja genereerida aruandeid, mida vaatavad lõppkasutajad. Tarbijad peavad suutma lugeda RDL-i, vatu võtta andmeid ja väljastama formaadi, mis on inimese poolt loetav ja arusaadav. Tootjad, aga teiselt poolt, on rakendused, mis peavad genereerima RDL koodi, saades info tööriistadelt, mis võimaldavad kasutajatel aruandeid luua ja disainida. Üks näide RDL-i tootja kohta on Report Designer ehk aruande looja. Kuna RDL on avatud ja laiendatava naturiiga, on võimalik luua väga erinevaid tööriistu ja rakendusi, mis genereerivad RDL koodi. Üks lihtsamaid viise RDL-i genereerimiseks läbi programmi on kasutada Microsofti.NET raamaistiku klasse. XmlTextWriter klassi abil on võimalik luua RDL-i, mis vastab täpselt kokkulepitud spetsifikatsioonile ja ühildumistasemele. XmlTextWriter klass võimaldab genereerida täieliku aruande algusest lõpuni ükskõik millises Microsoft.NET rakenduses (vt. lisa1). 5. Kokkuvõte RDL on standarda, nii nagu HTML või XML-gi. RDL-i eesmärgiks on luua ühtne süsteem andmebaasi aruannete genereerimiseks, et erinevad rakendused aruande dokumente üheselt mõistaksid. Nii nagu erinevad veebibrauserid peavad ühte HTML dokumenti samasugusena näitama, peab ka RDL-i dokument erinevates andmebaasi 5
programmides ühene välja nägema. RDL koodi ühtse standardi paika panemisel ei ole välja mõeldud mitte midagi uut ja radikaalset, vaid kasutatud kõigile teada ja tuntud XML skeemi. Sel viisil on tarkvara tootjad ka agaramad RDL-i kasutama, kuna ei pea selle rakendamiseks eriti palju lisatööd korda saatma. 6
Lisad Lisa 1:.NET keskkonnas genereeritud RDL aruanne 7
Kasutatud kirjandus 1. http://www.microsoft.com/sql/technologies/reporting/rdlspec.mspx 2. http://msdn.microsoft.com/library/default.asp?url=/library/enus/rsrdl/htm/rsp_ref_rdl_52g5.asp 3. http://msdn.microsoft.com/library/default.asp?url=/library/enus/rsprog/htm/rsp_prog_rdl_1go6.asp 4. http://www.codeproject.com/csharp/rdlproject.asp 8