BAB 5
Orkestrasi dengan BPEL
Pada ke dua proyek pertama, telah dibangun web services untuk menangani langkah-langkah dalam proses pinjaman. Web service pertama, DetermineLoanRate, merupakan modul EJB, yang mempunyai argumen loanType (seperti RUMAH atau MOBIL) dan mengirim tingkat bunga sebagai output. Web service kedua, CalculateLoanPayment, merupakan aplikasi web (servlet) yang mempunyai argumen interestRate, amount dan period. Web services ini menghasilkan perhitungan jumlah pembayaran bulanan. Ke dua web services ini akan digunakan dalam sebuah rangkaian. Dengan kata lain, kedua web services ini akan diorkestrasi.
Salah satu
komponen SOA adalah BPEL yang digunakan untuk orkestrasi web services. Sehingga akan dilakukan build modul BPEL yang mengeksekusi dua web services dalam orkestrasi. 5.1 Membuat Proyek BPEL Menurut kompopnen
kamus
komputer
Merriam-Webster, atau
sistem
“architecture”
komputer
adalah
cara
diorganisasikan
dan
diintegrasikan. Berdasar definisi arsitektur ini, dapat dikatakan bahwa SOA adalah cara atau jenis pembuatan dan atau penggunaan ulang service-service
78
yang loosely-couple dan interoperable yang dapat diorkestrasi bersama untuk tujuan tertentu. Walaupun SOA tidak berimplikasi pada teknologi tertentu, bentuk paling terkenal untuk service adalah XML berbasis web services yang dideskripsikan oleh WSDL. Wahana untuk orkestrasi adalah BPEL (Business Process Execution Language). Sebelum menjalankan proyek BPEL ini, direkomendasikan untuk menutup semua tab window yang masih tampak dari dua proyek sebelumnya sehingga dapat mulai baru. Klik saja “X” pada tab.
•
Pilih File / New Project. Maka Project baru akan tampak di
window. •
Pilih SOA sebagai category dan BPEL Module untuk project
type. •
Kemudian, klik Next.
•
Untuk Project Name, ketikkan QuoteLoan dan klik Finish.
•
Project QuoteLoan akan tampak dalam panel Projects:
•
Dapat dilihat bahwa tidak ada file dalam folder Process Files.
•
Klik tab Files untuk melihat view systems dari project:
79
BPEL adalah Business Processing Execution Language. Bersama Web services, tujuannya adalah untuk melakukan orkestrasi sekumpulan service yang menunjukkan tugas yang diperlukan untuk memenuhi tujuan bisnis. BPEL merupakan bahasa yang lebih tinggi dari Java, yang lebih dekat kepada kebijakan bisnis.
BPEL merupakan bahasa berbasis XML dan
framework yang sangat restrictive yang melakukan operasi yang sangat membantu yang memandu transisi status diantara sekumpulan services yang loosely-couple. Walau bekerja dengan objek yang mempunyai method dan atribut, programer BPEL memanfaatkan konstruksi seperti ::
•
: blocks menunggu pesan yang datang
•
: mengirim jawaban untuk pesan yang diterima lewat
•
receive
•
: memulai satu jalur interaksi request- response
dengan portType yang disediakan oleh partner •
partner: sebuah service yang berinteraksi dengan proses BPEL 80
•
portType:
sekumpulan
operasi
yang
servicenya
dapat
dieksekusi. •
: memetakan nilai ke variables yang digunakan dalam
service yang dimanfaatkan oleh proses BPEL Konstruksi dalam angle brackets (<>) adalah jenis statement BPEL. Jika palette tidak tampak, gunakan opsi menu bar Windows / Palette untuk menampilkannya. Kembali ke panel Projects dan klik-kanan QuoteLoan dan pilih New / BPEL Process. Untuk File Name, ketik QuoteLoanProcess Klik Finish. BPEL Editor tampak pada panel kanan:
81
Perhatikan bahwa kerangka proses terlihat dengan elemen Process Start dan Process End. Klik pada kontrol Source pada bagian atas panel editor untuk melihat statemen BPEL yang telah dihasilkan secara otomatis.:
Klik kontrol Design control untuk melihat view diagram lagi. Pada mode Design akan terlihat panel palette BPEL tampak pada editor proses sebelah kanan:
Proses bisnis BPEL dimulai dengan sebuah elemen receive dan diakhiri dengan elemen reply. Taruh kedua elemen tersebut ditempatnya.
82
Dari panel Palette, lakukan drag Receive ke dalam kanvas design dan drop pada lingkaran oranye setelah Process Start:
Kemudian icon receive dengan label Receive1 ditambahkan ke kanvas. Klik-double pada label Receive1 dan beri nama baru menjadi StartQuoteLoan {Dimulai dengan dan berakhir dengan yang merupakan standard pola pertukaran pesan request/reply.
membawa data ke dalam proses bisnis yang dapat digunakan pada langkah subsequent. Dapat berpindah dari view Source dari proses untuk melihat statement yang telah ditambahkan.}
Selanjutnya, tambahkan elemen reply dengan melakukan drag ikon Reply icon dari palette ke kanvas. Drop ke dot oranye dibawah node receive StartQuoteLoan:
83
Kemudian ikon reply dengan label Reply1 akan ditambahkan ke kanvas. Klik-double pada label Reply1 dan beri nama baru menjadi ReturnLoanQuote
{ memungkinkan untuk mengembalikan results ke pemanggil. Pada node reply labelnya diganti menjadi “ReturnLoanQuote” yang tidak cocok dengan “StartQuoteLoan,”. Tapi tideak masalah. Label ini murni hanya penjelasan saja. Sekarang akan terlihat dua statement BPEL pada view Source: - - }
5.2 Membangun Skema XML Exposisi proses bisnis mirip dengan eksposisi Web service. Proses bisnis perlu di “bungkus” seperti web service sehingga dapat dipanggil seperti DetermineRateService dan CalculatePaymentService. Untuk kedua Web services, telah ada dokumen WSDL yang merupakan interfaces. NetBeans akan membuat WSDL (dan XSD). Namun pada proyek ini akan dibuat WSDL dan XSD secara manual.
84
XSD mendefinisikan simple dan complex types. Complex types memungkinkan adanya isi elemen dan atribut, sedangkan simple types tidak berisi isi elemen dan menyimpan atribut. Sebelum mendefinisikan langkah-langkah di dalam proses bisnis, akan ditetapkan input proses dan outputnya. Maka akan didefinisikan skema XML untuk menetapkan jenis data (data types). Kemudian akan dibangun WSDL diatas skema XML untuk mendefinisikan interface publik. Pada node QuoteLoan, klik-kanan dan pilih New / XML Schema. Jika opsi ini tidak terlihat, gunakan menu New / Other / XML untuk menemukan XML Schema. Klik Next. Untuk File Name, ketik LoanQuoteSchema dan pilih Finish. File LoanQuoteSchema.xsd akan ditambahkan pada proyek dan tampak editor di sebelah kanan. Masuk ke mode Design dengan klik pada kontrol Design:
Definisikan dua Complex Types, satu untuk input dan lainnya untuk output. Klik-kanan panel design Complex Types dan pilih Add / Complex Type:
85
Node newComplexType akan tampak dibawah. Klik-double node baru dan beri nama baru
LoanQuoteInput.
Dengan kursor di atas LoanQuoteInput, klik-kanan dan pilih Add / Element:
Node newElement akan tampak. Klik-double dan beri nama baru loanType Dengan tetap di atas node loanType, temukan Properties dan lihat property Definition:
86
Klik ikon ellipsis (lihat gambar) dan atur property Definition property untuk loanType menjadi Built-In Types / string. Tambahkan elemen di bawah LoanQuoteInput dan atur properti Definition:
•
amount (Built-In Types / double)
•
period (Built-In Types / int) Maka definisi complex type LoanQuoteInput telah lengkap:
87
Sekarang akan didefinisikan sisi output dari interface publik proses BPEL.
Lakukan
hal
yang
sama
dalam
membuat
complex
type
LoanQuoteOutput. {Untuk membuat complex type, klik-kanan pada area Complex Types dan pilih Add / Complex Type. Ganti nama dengan klik-double.} Tambahkan dua elemen: • description (Built-In Types / string) • monthlyPayment (Built-In Types / double) {Untuk menambah elemen, klik kanan pada LoanQuoteOutput complex type dan pilih Add / Element.}
Maka akan terlihat file XSD seperti gambar dibawah ini:
88
{Untuk menetapkan data types, klik pada elemen dan temukan Definition property. Gunakan Built-In Types as yang sesuai seperti gambar. Jika ingin tahu, pindah ke view Source untuk melihat XML yang telah dibuat Netbeans.}
Lakukan penyimpanan dengan klik Save All. Sekarang akan ditambahkan dua elemen top level skema untuk menyajikan jenis data request yang datang dan response yang dikirim. Kedua elemen ini didasarkan pda complex types yang baru saja dibuat. Pada mode Design, klik-kanan Elements pada atas panel design. Kemudian pilih Add / Element:
Sebuah node newElement akan tampak. Klik-double pada node baru dan beri nama baru menjadi LoanQuoteRequest Untuk property Definition, klik ke Complex Types / LoanQuoteInput:
{Jika ingin tahu, cek ke view Schema untuk melihat XSD. Akan terlihat pohon hirarki yang lebih mudah
89
dieksplorasi. Simpan lagi. kebiasaan Ctrl-S.}
Biasakan melakukan
Klik-kanan area Elements lagii dan pilih node Add / Element. Node newElement lain akan tampak. Klik-double pada node baru dan beri nama baru menjadi LoanQuoteResponse Untuk property Definition, klik Complex Types / LoanQuoteOutput. Simpan dengan melakukan klik Save All. Gambar dibawah ini menunjukkan LoanQuoteSchema secara lengkap.
90
{Dokumen XSD ini mendefinisikan data types yang akan melewatkan ke dan mengirim dari proses bisnis. Dokumen XSD ini akan diimport ke dokumen WSDL yang akan dibuat, sehingga web service mempunyai definisi data yang diperlukan.}
Pindah ke mode Source untuk melihat dokumen XSD: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xml.netbeans.org/schema/LoanQuoteSchema" xmlns:tns="http://xml.netbeans.org/schema/LoanQuoteSchema" elementFormDefault="qualified">
91
<xsd:complexType name="LoanQuoteInput"> <xsd:sequence> <xsd:element name="loanType" type="xsd:string"/> <xsd:element name="amount" type="xsd:double"/> <xsd:element name="period" type="xsd:int"/> <xsd:complexType name="LoanQuoteOutput"> <xsd:sequence> <xsd:element name="description" type="xsd:string"/> <xsd:element name="monthlyPayment" type="xsd:double"/> <xsd:element name="LoanQuoteRequest" type="tns:LoanQuoteInput"/> <xsd:element name="LoanQuoteResponse" type="tns:LoanQuoteOutput"/>
Untuk mengecek error pada XSD, klik pada kontrol Schema untuk masuk ke mode Schema. Kemudian temukan kontrol Validate XML dan klik. Lihat apakah ada error pada panel Output.
5.3 Membangun Dokumen WSDL Dengan XSD ini maka akan didefinisikan jenis data WSDL. Selanjutnya akan dilakukan build pada definisi interface WSDL untuk BPEL Process. Klik-kanan pada node proyek QuoteLoan dan pilih New / WSDL Document. Window wizard New WSDL Document akan tampak. {Gunakan Document / Literal yang paling sering digunakan untuk kombinasi jenis pesan pada web services. Jika menggunakan Document, berarti menyatakan bahwa body dari dokumen SOAP akan berisi satu atau lebih child elements (parts).
92
Jika menggunakan RPC sebagai jenis pesan, berarti menunjukkan bahwa body dokumen berisi elemen yang menyediakan nama method yang diinvoke. Elemen in mempunyai sebuah child element untuk mendapatkan parameter yang dilewatkan pada saat pemanggilan method . Dalam memilih format serialisasi, ada dua pilihan: SOAP Encoding dan Literal. Jika memilih SOAP Encoding, berarti mengadopsi ruledari SOAP 1.1 spec pada bagaimana struktur data diserialisasi sebelum ditransmisi. Format serialisasi ini biasanya diasosiasikan dengan jenis RPC message. Jika memilih Literal, data pada message body diserialisasi menggunakan XML schema. Dengan kata lain, format dikontrol, dan tidak mengikuti default pada rule SOAP spec.}
Untuk File Name, ketik LoanQuoteWSDL Pilih Concrete WSDL Document yang menunjukkan bawha akan ditetapkan protokol dan alamat endpoint fisik. Tetap pilih SOAP pada Binding, tetapi pada menu drop-down Type pilih Document Literal. Klik Next. Pada bagian Input, beri nama part1 menjadi InputPart Untuk nilai Element atau Type untuk InputPart, klik pada ikon ... dan pilih elemen LoanQuoteRequest element (bukan complex type):
93
Klik OK untuk menyimpan record jenis pilihan. Pada bagian Output, ganti nama part1 menjadi OutputPart. Untuk Element atau Type, pilih elemen LoanQuoteResponse (bukan complex type). {Mengacu pada XSD dalam pembuatan WSDL sehingga tercakup dalam bagian untuk mendefinisikan data types.}
94
Klik Next. Wizard Concrete Configuration akan dieksekusi:
Klik Finish untuk menerima semua default. WSDL baru akan tampak di panel Projects dibawah hirarki QuoteLoan.
95
{Untuk menemukan kanvas desain BPEL klik-double pada node QuoteLoanProcess.bpel di hirarki QuoteLoan pada tab Projects.}
Sekarang telah ada interface WSDL untuk proses bisnis, sekarang kembali ke kanvas design dari QuoteLoanProcess.bpel dan gunakan definisi interface untuk melakukan build BPEL partner link.
5.4 Menambah Partner Link Temukan tab untuk panel proses BPEL dan klik untuk melihat proses. Dari panel Projects, drag node LoanQuoteWSDL.wsdl ke sisi kiri kanvas design BPEL seperti gambar dibawah ini:
{Apa perbedaan antar drag pada sisi kiri dan kanan? Drag WSDL di area kiri maupun kanan akan dibuat partner link.
96
Partner link merepresentasikan saluran melalui proses bisnis yang dapat berkomunikasi dengan “dunia luar” melalui interface yang ditetapkan dalam WSDL. “Dunia luar” disini adalah beberapa klien yang memanggil proses bisnis. Pada tutorial ini klien akan berupa user interface yang dihasilkan dengan NetBeans. Partner link dalam model BPEL mempunyai atribut partnerRole. Ini menunjukkan proses BPEL apakah atau tidak mengimplementasikan web service yang dipanggil melalui “channel” (saluran) Kembali ke sisi kiri atau kanan. Jika membuat partner link pada sisi kiri, menunjukkan bahwa proses BPEL merupakan implementer dari web service endpoint. partnerRole berupa “myRole” menunjukkan bahwa proses BPEL bertanggung jawab untuk implementasi. Jika partner link pada sisi kanan, maka , partnerRole akan mengidentifikasikan external web service endpoint yang akan berinteraksi dengan menggunakan . Elemen receive dan reply perlu dikoneksikan dengan partner link “channel” sehingga dapat diinvoke dan membawa data masuk dan dapat mengirim resspon kembali ke klien.}
Pada saat selesai melakukan drag dan drop, maka partner link akan tampak di kanvas. Ganti nama dengan melakukan klik-double pada nama default PartnerLink1 dengan mengetikkan: QuoteLoanPartnerLink
97
Klik node StartQuoteLoan pada kanvas design. Ikon edit (pensil) tampak diatas node:
Klik ikon edit untuk menampakkan node receive window Property Editor. Ketikkan fields seperti gambar dibawah ini. Klik tombol Create untuk menetapkan Input Variable.
{Untuk membuat Input Variable, klik saja tombol Create dan terima semua default.}
98
Pilih tombol Ok. Akan terlihat bahwa node receive StartQuoteLoan telah dihubungkan ke partner.
{Perhatikan bahwa elemen akan ditandai silang merah. Ini menunjukkan bahwa model masih belum lengkap.}
Pindah ke view Source pada proses BPEL:
{Pembuatan kode BPEL secara otomatis terjadi ketika bekerja pada kanvas desain.}
Akan terlihat bahwa statement BPEL Telah dibuat secara otomatis. Pindah kembali ke mode Design.
99
{Ketika berada pada mode Source kemudian melihat statemen BPEL akan tampak nomor garis pada batas kiri. Hal ini tidak menjadi masalah sampai terlihat pesan error pada GlassFish V2 pada panel Output yang mengidentifikasikan nomor statemen BPEL tertentu dimana eror terjadi.}
Perlu dihubungkan antara node reply dengan interface WSDL, sehingga klik pada node reply ReturnLoanQuote dan lihat ikon edit akan tampak.
100
Klik ikon edit (pensil) untuk menampilkan window Property Editor. Isi fields mengikuti gambar dibawah. Seperti pada Input Variable sebelumnya, gunakan pula tombol Create untuk menetapkan Output Variable:
Pilih tombol Ok . Sekarang kanvas design proses BPEL akan terlihat seperti gambar dibawah.
101
{Telah ditetapkan bahwa proses BPEL merespon ke pertukaran pesan request/reply.}
Simpan dengan klik Save All. Kedua node request dan reply sekarang dihubungkan ke partner link yang mendefinisikan inputs dan outputs dari proses bisnis. {Dapat berpindah ke view Source untuk melihat statemen yang telah dibuat oleh NetBeans.}
Pindah ke view Source untuk melihat statemen telah dibuat oleh NetBeans:
portType="tns:LoanQuoteWSDLPortType" variable="LoanQuoteWSDLOperationOut"/> {Sekarang proses bisnis dapat dipanggil (call) melalui ) dan memberikan hasil (result) dan semua pekerjaan BPEL ini dilakukan dengan memanipulasi ikon BPMN pada kanvas desain.}
Lakukan pengecekan untuk meyakinkan bahwa NetBeans telah menghasilkan XML BPEL yang well-formed. Pilih ikon Validate XML pada bagian atas panel kanvas.
Kemudian akan terlihat seperti ini :
Perhatikan bahwa adanya warning, tetapi bukan error. mengingatkan
bahwa
variabel
input
data
yang
datang
Ini hanya ke
node
StartQuoteLoan belum digunakan. Ini tidak masalah karena masih ditengah pengembangan proses. {Ini merupakan input variable untuk elemen StartQuoteLoan yang ditetapkan ketika membuat QuoteLoanPartnerLink.}
103
Setelah memulai eksekusi elemen, StartQuoteLoan, maka akan dieksekusi dua activities sebagai berikut:
•
DetermineRateService service mengirim interestRate
•
CalculatePaymentService untuk menentukan
monthlyPayment
dan membuatdescription. Cara memanggil service luar ke BPEL adalah dengan menyisipkan elemen invoke ke dalam model dan menghubungkan dengan partner link. Kemudian dari palette, lakukan drag operasi Invoke ke dalam model dan drop pada titik oranye diatas activity reply dari ReturnLoanQuote:
Elemen Invoke1 ditambahkan ke model. Klik-double pada label Invoke1 dan ganti nama menjadi DetermineRate Seperti node receive yang telah dikonfigurasi dengan partner link, juga diperlukan konfigurasi node invoke dari DetermineRate. Pertama,
perlu
dibuat
partner
link
untuk
web
service
DetermineRateService.
104
{Ini merupakan sebuah “channel” untuk berbicara melalui DetermineRateService yang dibuat di proyek terdahulu.}
5.5 Mengimport XSD dan WSDL Sebelum dapat menambahkan partner links ke model BPEL, diperlukan WSDL dan XSD. Untuk menyediakannya maka keduanya harus diimport ke dalam proyek QuoteLoan. Untuk mengimport WSDL (dan XSD) yang mendeskripsikan interface web service DetermineRateService, maka temukan web service dengan klik hirarki DetermineLoanRate / Web Services, kemudian klik-kanan pada DetermineRateService dan pilih opsi Generate and Copy WSDL.
Maka
window Generate and Copy WSDL akan tampak. Sebagai tujuan, pilih direktori src pada QuoteLoan dan klik OK:
105
Perhatikan pada node Process Files untuk QuoteLoan dan tampak bahwa WSDL dan XSD telah dikopi. Lakukan langkah yang sama untuk Generate and Copy WSDL untuk web service CalculatePaymentService pada proyek CalculateLoanPayment. Jika telah selesai, akan terlihat dokumen WSDL dan XML untuk web service ini. Pada Process Files untuk proyek QuoteLoan. Tutup
hirarki
pada
panel
DetermineLoanRate
dan
CalculateLoanPayment. Lakukan
drag
DetermineRateServiceService.wsdl
dari
QuoteLoan/Process Files dan drop ke sisi kanan kanvas BPEL: {Mengapa lebih banyak melakukan drag ke sisi kanan model daripada kiri? Drag ke kanan atau kiri menentukan role dari partner link Jika di sisi kanan berarti “Role-ku” akan dimanfaatkan. Jika disisi kiri maka “Partner Role” akan ditentukan. Partner links dapat dipandang sebagai “tunnels” yang berinteraksi dengan dunia luar melalui model BPEL. “Role-ku” menyatakan bahwa proses mengimplementasikan interface melalui “tunnel.” Jika “Partner Role” ditentukan, berarti bahwa partner diluar yang mengimplementasikan interface. Penjelasan garis bawah: – Jika proses bisnis dipanggil dari luar, partner link akan berada di sisi kiri dan “Role-ku” ditentukan. – Jika proses bisnis memanggil partner yang diluar“,”partner link akan beradi di sisi kanan dan “Partner Role” ditentukan.}
106
Window Create New Partner Link akan tampak. Untuk Name, ketik DetermineRatePartnerLink Klik Ok untuk menerima defaults.
Node partner link tampak pada
kanvas.
107
Sekarang perlu dihubungkan antara partner link dengan activity invoke dari DetermineRate. Klik elemen invoke DetermineRate. Klik ikon edit (pensil) diatasnya. Window Property Editor akan tampak. Ketikkan seperti gambar dibawah ini:
{Seperti sebelumnya, buat Input dan Output Variables, dengan klik pada tombol Create dan terima default. Sekarang (dinamai DetermineRate) dapat “berbicara” dengan DetermineRateService melalui “channel” yang disediakan partner link.}
Setelah memilih Ok, partner link akan dihubungkan dengan activity invoke pada kanvas design:
108
Sekarang statement invoke telah ditetapkan, dan dapat dilihat dengan berpindah ke view Source: Tambahkan activity invoke lainnya ke model untuk web services ke dua (CalculatePayment). Kembali ke view Design. Seperti yang telah dilakukan sebelumnya, dari palette, lakukan drag operasi Invoke ke dalam model dan drop di bagian titik oranye diatas elemen reply dari ReturnLoanQuote. Activity Invoke1 ditambahkan ke model.
Klik-double pada label
Invoke1 dan ganti nama menjadi CalculatePayment. {Untuk membuat partner link dari Web service CalculatePayment, maka akan dilakukan langkah yang sama seperti pada DetermineRate. Lalu lakukan drag CalculatePaymentServiceService.wsdl dari QuoteLoan/Process Files dan drop ke sisi kanan kanvas BPEL dibawah DetermineRatePartnerLink}
109
Seperti sebelumnya, window Create New Partner Link akan muncul. Untuk Name, ketikkan CalculatePaymentPartnerLink dan pilih Ok untuk menerima default.
Sekarang
akan
dihubungkan
partner
link
ke
activity
invoke
CalculatePayment: Klik activity invoke CalculatePayment. Klik pensil diatasnya. Window Property Editor akan muncul. Ketikkan seperti gambar dibawah:
110
{Lagi, gunakan tombol Create untuk menetapkan nama Input dan Output Variables. Lalu terima semua nama default.}
Setelah memilih Ok, partner link ini akan dihubungkan dengan activity pada kanvas design. Simpan dengan mengklik Save All. Model BPEL akan terlihat seperti gambar dibawah ini:
{Sekarang proses BPEL dapat “berbicara” kepada Web services. Dua web service ini menggunakan interface yang dideskripsikan dalam dokumen WSDL dan berbicara melalui “channels” yang disediakan oleh partner links.}
111
Untuk menjalankan fungsinya dua web services memerlukan input. Struktur data input didefinisikan dengan dikaitkan partner links sebagai input variables. Maka perlu pemetaan nilai untuk penetapan input. Dalam BPEL, akan dilakukan pemetaan dengan node Assign.
5.6 Menambah Elemen Assign Dua Web services akan mendapatkan input dari input yang disediakan oleh klien proses BPEL.
Input akan dikirimkan melalui “channel”
QuoteLoanPartnerLink melalui WSDL yang telah didefinisikan sebelumnya dalam proyek. Drag node Assign dari Palette dan drop ke bagian oranye sebelum activity DetermineRate. Klik-double
pada
label
Assign1
dan
ganti
nama
menjadi
AssignRateDeterminationInput
112
Klik-double pada AssignRateDeterminationInput dan lihat display Mapper:
Seperti
tampak
pada
gambar
diatas,
ekspansi
node
LoanQuoteWSDLOperationIn di panel kiri (panel “from”) untuk menunjukkan variabel yang berisi InputPart. Juga ekspansi node GetRateIn pada panel sisi kanan (panel “to”) untuk menunjukkan parameter GetRateIn. Pada Mapper, outputs berada dikiri dan input tampak pada sisi kanan. Lalu drag dan drop dari LoanQuoteWSDLOperationIn.InputPart.loanType ke GetRateIn.parameters.loanType:
113
Tinggalkan Mapper dan kembali ke mode Design dengan melakukan klik kontrol Design pada kanvas window. Drag node Assign lainnya dan drop ke area oranye sebelum node activity CalculatePayment. Klik-double pada label Assign1 dan ganti nama menjadi AssignPaymentCalculationInput {Jika ada masalah dalam menamai elemen Invoke, maka klik-kanan dan pilih Properties dan rubah nama dengan mengedit property Name.}
Klik-double pada node AssignPaymentCalculationInput dan lihat panel Mapper lagi. Drag dan drop untuk memetakan outputs (sisi kiri) ke input
(sisi kanan):
interestRate (GetRateOut.parameters.return --> Variables.GetPaymentIn.parameters.interestRate) amount (LoanQuoteWSDLOperationIn.InputPart.amount --> Variables.GetPaymentIn.parameters.amount) period (LoanQuoteWSDLOperationIn.InputPart.period --> Variables.GetPaymentIn.parameters.period)
114
{Jika ingin tahu, pindah ke view Source untuk melihat statemen . Seperti yang telah dilakukan pada value mappings, akan terlihat statemen ditambahkan di dalam .}
Pindah kembali ke mode Design. Sekarang akan ditambahkan elemen Assign lagi sehingga dapat dipetakan nilai ke output dari proses bisnis. Lalu,
drag
node Assign
dan
drop
ke
node
sebelum
reply
ReturnLoanQuote. Ganti nama assign menjadi AssignResults. {Ganti nama Assign, dengan klik-kanan dan pilih Properties dan rubah nama dengan mengedit Name property.} Klik-double node AssignResults untuk melihat display Mapper. Drag dan drop untuk memetakan “froms” (inputs pada sisi kiri) ke “to” (output pada sisi kanan):
115
Ini merupakan kopi dari perhitungan jumlah pembayaran bulanan yang dihasilkan oleh CalculatePaymentService ke dalam variabel monthlyPayment yang merupakan return dari proses bisnis. Sekarang, lakukan build text string pada variabel description dalam LoanQuoteWSDLOperationOut.OutputPart.
kemudian akan digabungkan
beberapa nilai variabel dari beberapa teks statik sepertii ini: + " loan for amount of " + {Window BPEL Mapper mempunyai beberapa fitur yang membantu membuat tambahan BPEL constructs. Pilih String / Concat untuk menunjukkan bagaimana mapper dapat menghasilkan tambahan statemen BPEL.}
Hal ini akan menghasilkan deskripsi seperti “AUTO loan for amount of 10000.00” Klik pada node description pada sisi kanan mapper. Area biiru tampak untuk menunjukkan titik sisipan pada mapper:
116
Pilih operasi Concat dari menu String pada bagian atas panel BPEL Mapper.
Node Concat ditambahkan ke kanvas Mapper pada area biru untuk node description. Hubungkan variabel loanType ke bagian pertama dari string penggabungan (concat):
{Jangan lupa memberikan spasi diantar teks, karena deskripsi yang akan tergabung.}
117
Klik-double pada String slot ke dua dan ketikkan teks loan for amount of:
{Untuk mengaktifkan slot String lakukan klik saja.}
Akhiri penggabungan (concatenation) dengan menambahkan nilai amount seperti gambar dibawah:
Jangan
lupa
hubungkan
return
String
LoanQuoteWSDLOperationOut.OutputPart.description
Concat
ke
sehingga
menghasilkan penggabungan. Pemetaan telah lengkap, lalu kembali ke mode Design. Simpan semua pekerjaan dengan klik Save All. Setelah pemetaan lengkap, dilanjutkan dengan validasi proses bisnis dengan memilih kontrol Validate XML pada bagian atas window design.
118
Jika proses BPEL bebas dari error sintaks, maka akan terlihat pesan “0 Error(s), 0 Warning(s)” pada panel cek XML.
Sekarang akan dilakukan build dengan klik-kanan node proyek QuoteLoan dan memilih Clean and Build. Jika terlihat pesan “BUILD SUCCESSFUL” maka bagian ini telah lengkap. {Lakukan Build saja (bukan Clean and Build) jika direktori tidak terhapus.}
Jika diperhatikan maka tidak ada opsi Deploy untuk jenis proyek ini. Pada langkah berikutnya, maka modul BPEL ini akan digabungkan dengan aplikasi komposit dan dideploy di proyek ini. Klik pada tab Files untuk melihat yang telah dihasilkan oleh Netbeans.
119
Klik pada tab Projects sehingga akan dibuat aplikasi komposit dan melakuan deploy.
5.7 Membuat Aplikasi Komposit Topik aplikasi komposit lagi trendy saat ini. Ini digunakan untuk membangun aplikasi yang terdiri dari ssekumpulan komponen (subassemblies) yang terpisah. Masing-masing sub-assembly membungkus dari implementasi dengan menyediakan well-defined public interface.
120
Untuk dapat melakukan pengujian proses BPEL QuoteLoan pada proyek selanjutnya, maka akan dibuat aplikasi komposit dan menambahkan proyek BPEL dalam aplikasi ini dan mendeploynya. Selanjutnya, buat aplikasi komposit dengan memilih File / New Project / SOA / Composite Application Klik Next dan ketik QuoteLoanApplication untuk Project Name. Klik Finish dan aplikasi komposit baru akan tampak pada panel Projects:
{Pada saat menambahkan proyek QuoteLoan ke aplikasi komposit, akan terlihat editor CASA (Composite Application Service Assembly).}
Kemudian akan ditambahkan modul BPEL QuoteLoan pada aplikasi komposit yang baru ini. Lakukan klik-kanan pada QuoteLoanApplication dan pilih Add JBI Module.
Window Select Project akan tampak, demikian pula CASA
(Composite Application Service Assembly) Editor juga muncul. Pada window Select Project lakukan klik pada QuoteLoan dan pilih tombol Add Project JAR Files. Pada editor CASA, akan tampak proyek QuoteLoan telah ditambahkan pada kanvas.
121
Selanjutnya lakukan klik kontrol Build Project pada bagian atas editor CASA. Editor CASA akan melakukan assembly canvas dan menunjukkan service units yang dapat diidentifikasikan untuk proyek QuoteLoan:
{Terlihat adanya Consume endpoints berwarna ungu, tetapi tidak berhubungan dengan Provide endpoints warna hijau.}
122
Akan terlihat bahwa modul BPEL sedang diinvokasi melalui SOAP request,
tetapi
tidak
ada
DetermineRatePartnerLink
dan
CalculatePaymentPartnerLink yang mengkonsumsi dua web services ini. Karena itu, lakukan drag dua soap WSDL Bindings dari palette dan drop ke area WSDL Ports area:
Hubungkan ke partner links:
123
Sekarang diperlukan informasi endpoint untuk ke dua WSDL ports yang baru itu. Klik-kanan pada casaPort1 WSDL port (yang terkoneksi ke DetermineRatePartnerLink) dan pilih Properties. Untuk Location, klik pada ikon ... dan ketikkan : http://localhost:8080/DetermineRateServiceService/DetermineRateService Untuk Endpoint Name, ketikkan: DetermineRatePort Pilih Close untuk merekam perubahan property. Klik-kanan pada casaPort2 WSDL port (yang terkoneksi ke CalculatePaymentPartnerLink) dan pilih Properties. Untuk Location, klik pada ikon ... dan ketikkan : http://localhost:8080/CalculateLoanPayment/CalculatePaymentServiceService {Perhatikan adanya dua nilai Location yang sesuai dengan service names pada dokumen WSDL untuk setiap web service. Nilai Endpoint Name cocok dengan port names pada dokumen WSDL.}
Untuk Endpoint Name, ketikkan: CalculatePaymentPort Pilih Close. Simpan semua pekerjaan dengan Save All. Klik kanan pada node QuoteLoanApplication pada panel Projects dan pilih opsi Clean and Build. Perhatikan pada windows Output adanya pesan “BUILD SUCCESSFUL”.
124
{Dapat juga dilakukan deploy aplikasi komposit dengan klik pada tool Deploy Project:}
Klik-kanan node QuoteLoanApplication dan pilih opsi Deploy. Perhatikan window Output adanya pesan “BUILD SUCCESSFUL”. Sebelum pindah ke proyek4, maka akan digunakan fasilitas pengujian NetBean's untuk melakukan beberapa unit testing. Perhatikan bahwa aplikasi komposit yang dideploy tampak seperti framework JBI. Klik pada tab Services dan ekspansi node Servers / GlassFish V2 untuk menemukan node JBI. Ekspansi node JBI untuk menemukan bahwa terdapat satu service assembly yang berisi dua service units yang telah dideploy.
125
{Klik-kanan pada service unit dan pilih Properties, akan terlihat bahawa JBI component (SE atau BC) akan terdeploy. Misalnya QuoteLoanApplication- QuoteLoan dideploy di sun-bpel-engine.}
Inilah QuoteLoanApplication service assembly yang terlihat pada CASA Editor:
126
Ada
tiga
WSDL
ports
yang
direpresentasikan
oleh
QuoteLoanApplication-sun-http-binding service unit. Modul BPEL QuoteLoan JBI pada CASA Editor direpresentasikan oleh QuoteLoanApplicationQuoteLoan service unit.
5.8 Testing Aplikasi Komposit Sekarang akan dilakukan pengujian untuk aplikasi yang mencakup input parameter jenis pinjaman, jumlah pinjaman dan periode, dan menghasilkan deskprisi dan jumlah pembayaran bulanan. . Dalam panel Projects pada node QuoteLoanApplication, klik node Test dan pilih New Test Case:
127
Window New Test Case akan muncul.. Untuk Test Case Name, ketikkan HomeLoanTestCase kemudiah pilih Next. Kemudian pilih dokumen WSDL yang akan ditest. Ekspansi QuoteLoan – Source Packages dan pilih LoanQuoteWSDL.wsdl:
Klik Next. Kemudian pilih LoanQuoteWSDLOperation dan klik Finish. Editor XML editor akan muncul dengan dokumen input. Akan ada tiga fields delimited dengan simbol “?”. Ketik fields ini dengan data yang akan diuji. HOME 250000.00 15 Simpan semua pekerjaan dengan klik Save All Jalankan pengujian dengan klik-kanan pada HomeLoanTestCase pada panel Projects dan pilih Run.
128
Pada saat run pertama dari test, output masih kosong, sehingga selalu ada pesan dialog “The expected output for the test case is empty ...”. Klik saja Yes. Jalankan test lagi dengan klik Run. Maka akan terlihat output dibawah ini yang menunjukkan keberhasilan test.
Klik-double pada output test untuk melihat output XML yang dikembalikan pada aplikasi komposit. Akan terlihat deskripsi dan pembayaran telah benar.
129
Lihat pada field monthlyPayment dan description. Terlihat aplikasi telah melakukan passed unit testing. Proyek selanjutnya akan dibuat interface berbasis web untuk menerapkan aplikasi komposit.
130