GENERATE REPORT FROM XSD-XML-ALTOVA
Oleh : Tikaa (http://black9innocent.wordpress.com/)
Well, ternyata kita bisa bikin report dari XSD dan XML loh !!!
Terkejut ??? Yaa.. sedikit terkejut karena selama ini saya selalu menggunakan Jasper Report ataupun Crystal Report, langsung tarik data dari database dan menurut saya sangat efisien (atau saya-nya aja yang gaptek yaa ? :blush:). Tetapi, ternyata.. ada kalanya langsung tarik data dari database malah menjadi trouble, salah satunya karena data yang ingin ditampilkan banyak sekali.. maka traffic data akan menjadi berat. Jika data yang ingin ditampilkan diambil dari banyak table yang membutuhkan query select dan case-when yang ribet, maka proses transfer data juga semakin lama. Udah pada tau kan kalau proses select itu merupakan proses terberat dalam transaksi SQL ? Belom lagi jika aplikasi yang kita develop merupakan aplikasi enterprise yang dibangun oleh 2 vendor atau.. Aplikasi ini sudah dikembangkan oleh salah satu vendor.
Makin bingung ?? Oke.. pelan-pelan. Semisalnya kita membangun aplikasi X. Nah, karena saking besarnya aplikasi yang kita bangun, tentunya banyak modul yang perlu kita bagi dengan vendor lain. Misalkan, aplikasi X di-develop oleh 2 vendor, vendor A dan B. Vendor A cuma membutuhkan beberapa field saja dari database vendor B dan vendor B sama sekali ga membutuhkan apapun dari vendor A. Jadi istilahnya, data cuma numpang lewat aja, beda proses, beda kebutuhan, relasi table yang digunakan beda, atau apa ya ? Saya sendiri bingung. Hehehe :p. Intinya, kedua vendor menggunakan arsitektur yang berbeda, bisa dalam hal nama table, nama kolom ataupun kebutuhan tablenya yang berbeda sehingga untuk interaksi satu sama lain menggunakan XML dan XSD (dalam hal ini, bisa juga menggunakan teknologi marshall dan unmarshall. Sudah saya bahas di-posting sebelumnya :D).
Baiklah, sekarang kita bahas sedikit tentang apa itu XSD ? apa itu XML ? dan apa gunanya Altova ?
XSD (XML Schema Definition) merupakan design yang menentukan type data untuk setiap element XML.
XML (Extensible Markup Language) berisi data-data yang akan ditampilkan di report. Altova StyleVision adalah tool untuk meng-generate report dari XSD dan XML. Report
yang dihasilkan bisa berupa file HTML, RTF, PDF, ataupun Word 2007.
Report yang sering digunakan adalah PDF. File yang nantinya kita save untuk memanggil report dalam aplikasi bukanlah file PDF yang di generate oleh Altova, melainkan file XSLT-FO. Kalau kita save PDF, maka yang kesimpan yaa file PDF. Buat apa? Kita kan ingin meng-generate dynamic report. Bukan report jadi dalam bentuk PDF. :D
Well, file XSLT-FO ini kemudian bisa kita panggil dari class Java yang kita definisikan. Kita juga bisa mengirimkan parameter dari class Java ke XSLT-FO yang selanjutnya akan mem-parsing code-code XSLT-FO menjadi file PDF.
Dan yaap.. disini saya tidak akan membahas bagaimana proses parsing code ataupun proses pemanggilan PDF dari class Java. Semua hanya tentang bagaimana men-design report dan bagaimana XSD dan XML bekerja sama dengan Altova dalam meng-generate report.
Okey.. mari siapkan file xsd dan xml. Dibawah ini saya lampirkan contoh file xsd dan xml (Jangan tanya arsitektur xsd dan xml nya yaa !!! saya ga bahas ini disini. :D).
Test.xsd
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="TesInvoicePayment"> <xs:complexType> <xs:sequence> <xs:element name="MasterRecord" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="SystemNo" maxOccurs="1" type="xs:string"/> <xs:element name="InvoiceNo" maxOccurs="1" type="xs:string"/> <xs:element name="Seller" maxOccurs="1" type="xs:string"/> <xs:element name="EvenRecord" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="EvenRecordData" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="PaymentNo" maxOccurs="1" type="xs:string"/> <xs:element name="Source" maxOccurs="1" type="xs:string"/> <xs:element name="BuyerAcc" maxOccurs="1" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Test.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TesInvoicePayment> <MasterRecord> <SystemNo>SY001</SystemNo> <InvoiceNo>IV001</InvoiceNo> <Seller>seller1</Seller> <EvenRecord> <EvenRecordData> <PaymentNo>PY001</PaymentNo> <Source>Financing</Source> <BuyerAcc>1232323</BuyerAcc> </EvenRecordData> </EvenRecord> </MasterRecord> <MasterRecord> <SystemNo>SY002</SystemNo> <InvoiceNo>IV002</InvoiceNo> <Seller>seller2</Seller> <EvenRecord> <EvenRecordData> <PaymentNo>PY002</PaymentNo> <Source>Financing</Source> <BuyerAcc>1232323</BuyerAcc> </EvenRecordData> <EvenRecordData> <PaymentNo>PY003</PaymentNo> <Source>BuyerAccount</Source> <BuyerAcc>1232323</BuyerAcc> </EvenRecordData> </EvenRecord> </MasterRecord> <MasterRecord> <SystemNo>SY001</SystemNo> <InvoiceNo>IV001</InvoiceNo> <Seller>seller1</Seller> <EvenRecord> <EvenRecordData> <PaymentNo>PY001</PaymentNo> <Source>Financing</Source> <BuyerAcc>1232323</BuyerAcc> </EvenRecordData> </EvenRecord> </MasterRecord> <MasterRecord> <SystemNo>SY002</SystemNo> <InvoiceNo>IV002</InvoiceNo> <Seller>seller2</Seller> <EvenRecord> <EvenRecordData> <PaymentNo>PY002</PaymentNo> <Source>Financing</Source> <BuyerAcc>1232323</BuyerAcc> </EvenRecordData> <EvenRecordData> <PaymentNo>PY003</PaymentNo> <Source>BuyerAccount</Source> <BuyerAcc>1232323</BuyerAcc>
</EvenRecordData> </EvenRecord> </MasterRecord> </TesInvoicePayment>
Langkah-langkah untuk membuat report dari altova.
1. Buka Altova StyleVision. Klik File – New – New from XSL Schema/DTD/XML
5. Kemudian, akan tampil layout seperti dibawah ini.
Nah, sampai disini ada pertanyaan ? Hehehe. Layout udah siap. Hapus saja <XML>(Content)</XML> dan sekarang coba untuk menampilkan element invoiceNo. - Pilih invoiceNo, kemudian tarik ke design layout.
- Klik PDF (dibawah), sehingga review PDF dapat terlihat seperti pada gambar dibawah ini.
Data invoiceNo yang tersimpan di XML terdiri dari 4 invoiceNo, yaitu : IV001, IV002, IV001, dan IV002. Data yang terlihat diatas sangat sulit untuk dibaca, sehingga sebaiknya kita tambahkan paragraf agar gampang dibaca.
Well, PDF udah jadi. Review PDF nya udah sesuai dengan yang kita butuhin. Lalu apa lagi ??? di-save donk.. Inget, bukan PDF nya yang di save, tetapi XSLT-FO.
- Klik kanan di PDF, pilih XSLT-FO.