17
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

GENERATE REPORT FROM XSD-XML-ALTOVA · ataupun Crystal Report, langsung tarik data dari database dan menurut saya sangat efisien ... A cuma membutuhkan beberapa field saja dari database

Embed Size (px)

Citation preview

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

2. Pilih file xsd untuk report.

3. Klik browse dan pilih file xml.

4. Pilih design (Create a free-flow document is recomended).

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.

- Lepas, kemudian pilih Create Contents (dalam hal ini, sesuaikan dengan kebutuhan saja).

- Lalu di layout design akan tampil seperti dibawah ini.

- 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.

- Klik kanan setelah tag </invoiceNo>, kemudian pilih insert Paragraph.

- Design akan tampil seperti dibawah ini.

- Dan report PDF akan terlihat seperti ini.

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.

- XSLT-FO nya langsung ter-generate otomatis seperti dibawah ini.

- Save XSLT-FO dengan cara klik File – Save Generated Files – Save Generated XSLT-FO File...

- Tadaaa.. file type save as-nya langsung xslt.

- Selesai.. Nah, file xslt inilah yang nantinya akan di-parsing oleh Java. :D Selamat berkarya :D