BAB 7
Menyimpan Proses Pinjaman ke Basisdata
Pada proyek sebelumnya, skenario pemrosesan pinjaman telah lengkap dengan menambahkan interface berbasis web browser untuk menggerakkan proses BPEL yang menghasilkan proses pinjaman. Pada proyek ini akan dilakukan penyimpanan peminjaman ke dalam basisdata.
Akan dimulai
dengan kemampuan perluasan proses BPEL dengan pasangan invoke/ assign baru dan partner link yang didasarkan pada WSDL yang merefleksikan struktur dari tabel basisdata. Database Binding Component akan melakukan pekerjaan JDBC dengan Java DB.
7.1 Membuat Basisdata Sebelum dapat menggunakan Database binding component untuk menyisipkan baris ke dalam tabel, perlu dilakukan beberapa konfigurasi. NetBeans mempunyai basisdata bawaan yang dinamakan Java DB. Akan dibuat basisdata dalam Java DB tempat menyimpan tabel LoanQuotes. { Java DB didasarkan pada proyek open source Apache Derby. Sebelumnya merupakan teknologi Cloudscape. Java DB sebagai bagian dari Java JDK.}
152
Untuk membuat basisdata, klik pada tab Services. Ekspansi node Databases untuk menampilkan Java DB dan koneksi yang ada :
Klik-kanan pada node Java DB dan pilih Create Database. Window Java DB Database akan tampak. Ketik windows seperti gambar dibawah ini:
153
{Database Name: MyTutorialDB User Name: admin Password: admin Jangan ubah default Database Location. Lokasi didasarkan pada folder GlassFish ESB, diinstall.}
Tekan OK. Setelah MyTutorialDB berhasil dibuat, akan terlihat koneksi berikut ini ditambahkan pada daftar panel Services:
Sekarang koneksikan basisdata sehingga dapat dibuat tabel LoanQuote. Klik-kanan pada koneksi baru dan pilih Connect. Ekspansi node jdbc:derby:...MyTutorialDB dan perhatikan bahwa belum ada tabel yang ada dibawah node Tables:
Klik-kanan node jdbc:derby:...MyTutorialDB
dan pilih Execute
Command. Perintah SQL akan muncul di window. Ketikkan perintah SQL untuk membuat tabel dan menyimpan peminjaman :
154
Agar dapat dilakukan kopi-paste, berikut ini perintah SQL selengkapnya : create table loanquote ( recordid INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY, loantype VARCHAR (20), amount NUMERIC (15,2), period INTEGER, payment NUMERIC (15,2)) ; { “PRIMARY KEY GENERATED ALWAYS AS IDENTITY” memungkinkan Java DB secara otomatis membuat nomor berurutan yang unik untuk kolom kunci}
Eksekusi perintah SQL dengan melakukan klik ikon Run SQL di bagian atas window perintah SQL:
Setelah eksekusi SQL Command maka pada window Output akan terilhat pesan berikut :
155
Untuk meyakinkan bahwa tabel telah berhasil dibuat, klik pada node Tables dan pilih Refresh. Tabel LOANQUOTE akan tampil di daftar :
Untuk melihat isi tabel, klik-kanan LOANQUOTE dan pilih View Data. Maka akan terlihat tabel baru yang masih kosong.
Dengan tabel pada Java DB, langkah berikutnya adalah mengenalkan basisdata tersebut ke server GlassFish. Dalam hal ini diperlukan dua langkah konfigurasi pada GlassFish Admin Console:
156
•
Mendefinisikan JDBC connection pool
•
Membuat
JDBC
resource
dengan
JNDI
name
yang
memanfaatkan connection pool 7.2 Mengakses GlassFish Admin Console Jika GlassFish belum Start,maka perlu di-start dulu sebelum dapat mengakses Admin Console. Akan dilakukan konfigurasi pada GlassFish administration console. Untuk menampilkan admin console, pilih opsi View Admin Console pada panel Services seperti gambar dibawah:
Halaman web akan muncul dengan dua text field yang meminta memasukkan user name dan password. Isikan secara default sebagai berikut: ●
User Name: admin
●
Password: adminadmin
157
Pilih tombol Login untuk melanjutkan. Temukan opsi Connection Pools pada Resources / JDBC dan klik pada tampilan connection pools:
Klik tombol New untuk membuat connection pool baru. Ketik window wizard seperti ini:
158
Klik Next. Lakukan scroll ke bawah dan isi data berikut: ●
User: admin
●
DatabaseName: MyTutorialDB
●
Password: admin
●
ServerName: localhost
●
PortNumber: 1527
Klik Finish untuk menyimpan nilai yang diketikkan. Akan terlihat bahwa MyTutorialPool telah ditambahkan pada daftar Connection Pools. { Tombol Finish ada di sudut kanan atas halaman.}
Klik pada MyTutorialPool dan perhatikan window Edit Connection Pool. Klik pada tab Additional Properties dan hapus beberapa parameter yang tidak diperlukan.
159
{ Ini merupakan langkah penting, jika meninggalkan beberapa default properties, akan menyebabkan GlassFish tidak dapat melakukan koneksi ke Java DB.}
Gunakan check boxes dan tombol Delete Properties untuk menghapus semua parameter yang tidak diperlukan sehingga daftar property akan tampak seperti dibawah ini:
Gunakan tombol Save untuk menyimpan perubahan.
7.3 Testing konektivitas antara GlassFish dan Java DB Kembali ke tab General dan temukan tombol Ping. Klik pada Ping untuk menguji kemampuan GlassFish mengkoneksi MyTutorialDB:
160
“Ping Succeeded” menunjukkan bahwa GlassFish connection pool dapat menemukan basisdata MyTutorialDB database. Jangan pindah sampai ini berjalan. { Jika tidak melihat Ping Succeeded”, cek ulang connection pool properties, simpan dan Ping lagi.}
Langkah konfigurasi GlassFish yang kedua adalah membuat JDBC resource dengan JNDI name yang memetakan MyTutorialDB. Klik pada node JDBC Resources seperti gambar dibawah:
161
Klik pada tombol New untuk membuat JDBC Resource baru seperti gambar dibawah:
162
Klik OK JDBC resource yang baru telah ditambahkan pada daftar. GlassFish sekarang telah mengatur semua service untuk mengakses penyimpanan data ke MyTutorialDB Java DB melalui JDBC data source dengan JNDI name adalah jdbc/MyTutorial. { Java Naming and Directory Interface (JNDI) merupakan API yang menyediakan penamaan dan fungsionalitas direktori untuk aplikasi Java. Aplikasi menggunakan JNDI untuk melakukan lookup dan mendapatkan akses ke berbagai komponen seperti JDBC resources.}
7.4 Membuat WSDL dari Basisdata Table Sekarang kembali lagi ke proses BPEL QuoteLoan dari proyek3 dan menambahkan kemampuan penyimpanan data ke basisdata. { Proses BPEL bernama QuoteLoanProcess.bpel dan dibawah hirarki Process Files untuk QuoteLoan.}
Temukan proses BPEL QuoteLoanProcess pada proyek QuoteLoan dan tampilkan di kanvas pemodelan:
163
{ Tambahkan elemen baru pada akhir BPEL model.}
Drag invoke baru dari palette ke dalam model di kanan sebelum elemen ReturnLoanQuote dibagian bawah. Ganti nama elemen invoke menjadi StoreLoanQuote Elemen invoke ini akan memanggil proses BPEL ke basisdata. Diperlukan partner link tetapi belum diketahui titik interaksinya. Semua partner links didasarkan pada WSDL. Sehingga akan dibuat WSDL yang akan mereferensi ke Database binding component.
164
{ Partner links menyediakan “channels” untuk berkomunikasi dengan dunia diluar BPEL service engine. Dokumen WSDL menetapkan rincian tentang cara menggunakan “channel.”}
Untuk membuat WSDL, klik-kanan QuoteLoan pada panel Projects, dan pilih New / WSDL Document. Untuk File Name, ketikkan LoanQuoteDBWSDL Pada fiels WSDL Type pilih opsi Concrete WSDL Document. { Wizard WSDL akan membaca skema database dan membuat WSDL berbasis pada tabel.}
Untuk Binding, pilih DATABASE dari drop-down list. Pastikan bawha Type telah diset ke Table. Pilih Next. Dari URL drop-down list, pilih MyTutorial [admin on ADMIN] data source dari drop-down list. Klik Next. Daftar Available Tables menunjuk pada tabel LOANQUOTE
165
Pilih LOANQUOTE kemudian klik tombol “>” untuk memindahkan tabel ke daftar Selected Tables. Klik Next untuk pindah ke window berikutnya.
Window Operation
Specific Attributes akan tampak. PilihNext untuk menerima defaults. Window Enter JNDI Name akan muncul. Ketikkan JNDI sebagai: jdbc/MyTutorial
{ JNDI name harus sesuai
dengan yang telah ditetapkan pada JDBC resource di GlassFish.} Pilih Finish untuk melengkapi pembuatan
WSDL berbasis tabel
basisdata. LoanQuoteDBWSDL.wsdl
tampak pada node QuoteLoan dan isinya
tampil pada WSDL editor. Ekspansi struktur. Klik-kanan node jdbc:input pada bagian Bindings. Kemudian klik kanan dan pilih Properties:
166
Ada dua property yang harus diubah. Ubah property paramOrder menjadi : LOANTYPE,PAYMENT,PERIOD,AMOUNT
Ubah sql property menjadi : insert into LOANQUOTE (LOANTYPE,RECORDID,PAYMENT,PERIOD,AMOUNT) values (?,DEFAULT,?,?,?)
Klik Close untuk mengabaikan window Properties. Simpan dengan klik Save All. { RECORDID tidak dimasukkan pada paramOrder karena tidak dipassing. Dalam SQL statement, telah ditetapkan nilai DEFAULT.
167
DEFAULT berkaitan dengan statemen CREATE TABLE yang menetapkan recordid INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY }
7.5 Interaksi dengan Database via Database BC Sekarang telah dibuat dokumen WSDL yang mendefinisikan interface untuk tabel basisdata LOANQUOTE. Selanjutnya akan dibuat partner link pada proses BPEL StoreLoanQuote yang akan melakukan invoke untuk menyimpan data. {Database binding component akan bertindak sebagai proxy komunikasi untuk Java DB.}
Kembali lagi ke kanvas pemodelan BPEL QuoteLoanProcess. Drag dokumen LoanQuoteDBWSDL.wsdl yang baru saja dibuat dari panel dan drop pada sisi kanan kanvas dibawah CalculatePaymentPartnerLink:
168
Partner link yang baru telah ditambahkan Ganti nama menjadi : DBAccessPartnerLink { Untuk ganti nama, klik-double pada nama default (PartnerLink1) dan ganti.}
Hubungkan invoke StoreLoanQuote yang baru ditambahkan dengan DBAccessPartnerLink dengan klik ke elemen invoke StoreLoanQuote pada ikon pensil dan lengkapi isian windows seperti dibawah ini:
169
{ Klik pada elemen invoke dan ikon pencil akan tampak di bagian atas.}
Klik OK dan akan terlihat invoke StoreLoanData telah dihubungkan dengan partnerlink:
170
{ Perhatikan bahwa partner link menampilkan lima operasi basisdata. Yang diperlukan hanya insert saja.}
Sekarang akan dilakukan pemetaan data dari model ke dalam input yang diperlukan melalui invoke StoreLoanQuote. Lakukan drag dan drop elemen assign dari palette dan drop di atas StoreLoanQuote. Ganti nama elemen assign dari Assign1 menjadi: PrepareForStoring Klik-double elemen PrepareForStoring dan lengkapi pemetaan dibawah ini:
171
Simpan pekerjaan dengan Save. Pindah ke view Source dan pilih ikon Validate XML untuk mengecek adanya error:
Akan terlihat pesan peringatan yang menunjukkan bahwa variabel InsertOut belum digunakan.
172
Ini tidak masalah.
Diasumsikan bahwa insert basisdata akan lancar,
sehingga tidak perlu melakukan apapun dengan return value yang disediakan oleh Database BC. Lakukan build ulang proyek QuoteLoan. { Klik kanan QuoteLoan dan pilih Clean and Build.}
Build ulang proyek QuoteLoanApplication. { Klik-kanan QuoteLoanApplication dan pilih Clean and Build.}
Deploy ulang QuoteLoanApplication.
{
Klik kanan QuoteLoanApplication dan pilih Deploy.}
7.6 Melakukan Test Case
173
Sekarang kita lihat pada QuoteLoanApplication apakah Database binding component sudah digunakan. Untuk menampilkan service assembly pada CASA, klik-double pada Service Assembly pada node QuoteLoanApplication di panel Projects:
{ Untuk menampilkan property, klik-kanan pada WSDL Port dan pilih opsi Properties dari pop-up menu.}
Perhatikan bahwa DATABASE WSDL Port telah ditambahkan ke service assembly. Lihat properties pada Database binding component (sun-databasebinding):
174
Klik Close untuk keluar dari window Properties. Sekarang jalankan test lagi dan lihat apakah ada rekaman yang dituliskan di tabel basisdata.
Temukan HomeLoanTest pada QuoteLoanApplication
dengan klik-kanan dan pilih Run:
Cek output dari hasil test. Akan tampak sama seperti test sebelumnya:
175
Kembali ke panel Services untuk menemukan Java DB connection sehingga dapat diihat apakah ada rekaman yang telah disisipkan ke tabel LOANQUOTE:
Pilih opsi View Data Untuk melihat adanya baris data yang telah ditambahkan ke tabel LOANQUOTE:
176
Invoke baru telah berhasil, yaitu interaksi BPEL engine melalui partner link ke Database binding component yang terkoneksi ke Java DB. Sekarang cek lagi di CASA editor service assembly seperti dibawah ini:
177