BOOK Wiranto Herry Utomo Pemrograman Aplikasi SOA BAB VII

(1)

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


(2)

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.


(3)

{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 :


(4)

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 :


(5)

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.


(6)

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


(7)

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:


(8)

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.


(9)

{ 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:


(10)

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


(11)

Klik pada tombol New untuk membuat JDBC Resource baru seperti gambar dibawah:


(12)

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:


(13)

{ Tambahkan elemen <invoke> 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.


(14)

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


(15)

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:


(16)

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.


(17)

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:


(18)

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:


(19)

{ Klik pada elemen invoke dan ikon pencil akan tampak di bagian atas.}

Klik OK dan akan terlihat invoke StoreLoanData telah dihubungkan dengan partnerlink:


(20)

{ 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:


(21)

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


(22)

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


(23)

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-database-binding):


(24)

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:


(25)

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:


(26)

Invoke baru telah berhasil, yaitu interaksi BPEL engine melalui partner link ke Database binding component yang terkoneksi ke Java DB.


(1)

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.


(2)

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.


(3)

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-database-binding):


(4)

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:


(5)

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:


(6)

Invoke baru telah berhasil, yaitu interaksi BPEL engine melalui partner link ke Database binding component yang terkoneksi ke Java DB.