1
Penulis : Wiranto Herry Utomo
Kata Pengantar
Service Oriented Architecture (SOA) merupakan salah satu metode atau
teknologi yang digunakan untuk integrasi enterprise. Integrasi enterprise ini
mencakup integrasi di dalam enterprise (intra-enterprise integration) dan lintas
enterprise (inter-enterprise integration atau B2B). SOA sebagai teknologi dapat
diimplementasikan ke dalam berbagai platform tergantung vendor yang
membangun. Salah satu implementasi dari SOA adalah dengan ESB.
Agar lebih efektif, akan lebih baik jika pembaca sudah memahami pemrograman
berorientasi objek khususnya java, pemrograman web, pemrograman basisdata,
dan pemrograman XML.
Sasaran buku ini adalah masyarakat umum yang berminat dibidang teknologi
integrasi enterprise, tetapi buku ini secara khusus ditujukan bagi mahasiswa di
2
Penulis : Wiranto Herry Utomo
bidang ilmu komputer maupun teknik informatika. Buku ini dapat digunakan
sebagai referensi untuk mata kuliah Pemrograman Web Lanjut, Web Service,
Service Oriented Architecture, atau Komputasi Terdistribusi. Selain sebagai
perkuliahan, buku ini juga dapat digunakan untuk penelitian, atau sebagai acuan
bagi pengembang perangkat lunak yang memusatkan pada integrasi sistem.
Mengingat keterbatasan waktu dalam penulisan buku ini, maka tentunya masih
terdapat berbagai kelemahan, oleh karena itu penulis mohon saran dan kritik
yang berguna bagi pengembangan buku ini. Kritik maupun saran untuk
penyempurnaan buku ini, dapat dikirimkan ke alamat email :
wiranto.utomo@staff.uksw.edu.
Akhir kata, semoga buku ini dapat bermanfaat bagi pembaca dalam mempelajari
ilmu komputer, khususnya yang berkaitan dengan integrasi sistem, SOA dan
Web Service.
Penulis
3
Penulis : Wiranto Herry Utomo
Daftar Isi
BAB 1. Service Oriented Architecture (SOA) ............................................ 1
1.1 Integrasi Intra-Enterprise dan Inter-Enterprise ...................... 1
1.2 Evolusi SOA .......................................................................... 7
1.3 Konsep SOA .......................................................................... 17
1.4 Arsitektur Integrasi ................................................................. 23
1.4.1 Point-to-Point .............................................................. 23
1.4.2 Hub-and-Spoke ............................................................ 25
1.4.3 Enterprise Message Bus ............................................... 26
1.4.4 Enterprise Service Bus ................................................. 28
BAB 2. Web Service, BPEL dan ESB ......................................................... 33
2.1 Arsitektur Web service ........................................................... 34
2.2 Integrasi Web service ............................................................ 42
2.3 Business Process Execution Language (BPEL) ..................... 47
2.3.1 Evolusi standard BPEL ................................................ 48
2.3.2 Orkestrasi dan Koreografi ........................................... 55
2.4 Enterprise Service Bus (ESB) ............................................... 57
2.5 Java Business Integration ...................................................... 60
2.6 Instalasi GlassFish ESB ......................................................... 63
2.7 Memulai Glassfish ESB ......................................................... 69
BAB 3. Contoh 1 : Pemrograman Web service .......................................... 77
3.1 Membuat kontainer .................................................................. 77
3.2 Membuat Web service dari kelas Java ..................................... 78
3.3 Menambahkan Operation ke Web service ............................... 78
3.4 Deploying dan Testing Web service ........................................ 84
3.5 Klien Web service .................................................................... 87
3.5.1 Kelas Java ...................................................................... 87
3.5.2 Servlet ............................................................................ 90
3.5.3 Halaman web JSP ......................................................... 94
BAB 4. Contoh 2 : Pemrograman Web service ........................................... 98
4.1 Membangun Aplikasi Kelas Java .............................................. 98
4.1.1 Membuat Project Java .................................................. 98
4
Penulis : Wiranto Herry Utomo
6
Penulis : Wiranto Herry Utomo
BAB 1
Service Oriented Architecture
7
Penulis : Wiranto Herry Utomo
8
Penulis : Wiranto Herry Utomo
(EAI) dan arsitektur terdistribusi dan memusatkan pada penggunaan aplikasi dan
sistem yang sudah ada, interoperabilitas dan integrasi aplikasi, serta komposisi
proses bisnis dari service-service atau fungsionalitas yang disediakan oleh
aplikasi.
Menurut Pahl et al (2009) dan Chen et al (2010), SOA secara cepat
mencapai momentum sebagai arsitektur perangkat lunak dan platform teknologi
yang memungkinkan integrasi Enterprise Architecture Integration (EAI). EAI
ini berkenaan dengan integrasi sistem legacy, dengan interoperabilitas melalui
SOA dan Web service. Dalam hal ini integrasi SOA dan EAI sangat berkaitan
dengan integrasi informasi. Integrasi service tidak dapat dicapai tanpa integrasi
informasi untuk aplikasi heterogen. Integrasi informasi ini merupakan masalah
utama untuk EAI pada umumnya.
Integrasi informasi melalui SOA ini bukan hanya untuk EAI, namun juga
untuk inter-EAI (B2B), sehingga menurut Schroth-Janner (2007), ada beberapa
keunggulan dari SOA yaitu : pertama, SOA memungkinkan integrasi service
antar organisasi (inter-EAI). Dengan mengikuti standard umum dalam
mendeskripsikan antarmuka service, perusahaan dapat melakukan pengaturan
transaksi bisnis secara longgar dengan perusahan lain dan mengotomatisasikan
transaksi bisnis secara cepat. Kedua, SOA memudahkan integrasi intra-
perusahaan (EAI) dari service yang terpisah. Ketiga, pengembangan aplikasi
berbasis SOA secara nyata telah mengurangi waktu pengembangan dengan
ketersediaan blok bangunan aplikasi yang dapat digunakan ulang.
9
Penulis : Wiranto Herry Utomo
10
Penulis : Wiranto Herry Utomo
dalam hub. Model integrasi ini merupakan peningkatan dari solusi point-to-point
dengan mengurangi jumlah koneksi yang diperlukan untuk integrasi. Karena
aplikasi tidak terkoneksi secara langsung dengan aplikasi lain, maka aplikasi
dapat dihilangkan dari topologi integrasi dengan menghilangkan dari hub. Hal
ini akan mengurangi kekacauan dalam pengaturan integrasi. Namun ada
kelemahan dalam arsitektur hub-and-spoke, yaitu terletak pada sifat hub yang
terpusat. Jika hub mengalami kegagalan maka keseluruhan integrasi juga akan
kegagalan. Selain itu model integrasi hub and spoke mempunyai persoalan yaitu
teknologi integrasinya berkepemilikan yang terkunci oleh vendor.
Konsep integrasi aplikasi berbasis SOA pada awalnya hadir sebagai solusi
terhadap masalah kompleksitas integrasi point-to-point serta integrasi hub-and-
spoke tersebut. SOA merupakan arsitektural pengembangan aplikasi perangkat
lunak berbasis service, maka dalam integrasi service-service akan terjadi ikatan-
longgar. Hal ini memungkinkan penggunaan ulang service-service yang sudah
ada dan menghasilkan aplikasi yang dapat dibangun dan dirubah secara mudah
dan cepat.
Definisi mengenai SOA sendiri sangat beragam, dan belum ada definisi
yang berlaku umum untuk SOA. Pada penelitian ini konsep SOA akan ditinjau
berdasarkan konsep SOA Delivery menurut Erl (2005). SOA Delivery menurut
Erl (2005), merupakan arsitektur perangkat lunak yang dibangun menggunakan
prinsip-prinsip perancangan berorientasi service. Perancangan berorientasi
service ini berarti bahwa fungsionalitas sistem dipecahkan ke dalam unit lojik
yang lebih kecil yang dinamakan service-service. Service-service ini bebas satu
11
Penulis : Wiranto Herry Utomo
sama lain, tetapi mempunyai kemampuan untuk berinteraksi satu sama lain
melalui mekanisme komunikasi tertentu. SOA tidak terkait dengan suatu
teknologi tertentu, tapi lebih ke arah pendekatan untuk pembangunan perangkat
lunak yang moduler.
Orkestrasi menggunakan Web service mempunyai dua kelemahan yaitu
dalam hal skalabilitas dan belum mampu mengatasi ketidaksesuaian protokol
dan ketidaksesuaian data. Untuk mengatasi hal ini, pada saat ini telah
dikembangkan orkestrasi Web service dengan menggunakan ESB. ESB
merupakan infrastruktur untuk koneksi service SOA dan pertukaran pesan.
Fungsionalitas utama ESB adalah melakukan rute, transformasi protokol serta
transformasi pesan atau data. Dengan adanya fungsi transformasi protokol dan
pesan pada ESB ini maka ketidaksesuaian protokol dan data dapat diatasi. ESB
juga memudahkan koneksi dan mediasi, menyederhanakan integrasi serta
memudahkan penggunaan ulang komponen-komponen service, sehingga
skalabilitas integrasi menjadi tinggi.
Kelebihan lain orkestrasi Web service dengan ESB adalah memungkinkan
lapisan bisnis dan sistem informasi mempunyai relasi yang lebih dekat, karena
orkestrasi Web service disajikan pada abstraksi level tinggi yang dinamakan
proses bisnis dengan menyembunyikan obyek middleware tradisional yang telah
digunakan untuk mendukung interaksi bisnis-ke-bisnis. Selain itu, kebutuhan
bisnis dapat secara langsung diterjemahkan ke dalam aplikasi proses bisnis
melalui komposisi Web service.
12
Penulis : Wiranto Herry Utomo
13
Penulis : Wiranto Herry Utomo
operasi. Pada metode berbagi data ini, sebuah aplikasi menuliskan data ke file,
sedangkan aplikasi lain yang berjalan pada mesin yang sama dapat melakukan
baca dan tulis di file tersebut. Walaupun metode berbagi data melalui file
merupakan metode paling umum, namun metode ini mempunyai kelemahan
yaitu data tidak dapat dibagi secara waktu-nyata.
Kemudian disusul dengan metode berbagi data melalui database. Metode
ini mirip dengan metode sebelumnya metode file. Pada metode database ini,
suatu aplikasi menuliskan data ke database, dan aplikasi lain membaca data dari
database tersebut. Perbedaan penting dengan metode file adalah basidata
berjalan pada mesin yang terpisah. Hal ini berarti transfer data antar aplikasi
selalu terjadi melalui jaringan, sedangkan metode file membagi data pada mesin
yang sama. Oleh karena itu, metode ini lebih lambat dari pada metode file.
Keunggulan metode ini adalah koneksi antar aplikasi tidak secara point-to-point,
seperti metode file. Sejumlah aplikasi dapat membagi data yang dituliskan pada
database. Penggunaan database untuk integrasi aplikasi cukup terkenal karena
penggunaan relasi database berbasis SQL. Kebanyakan platform pengembangan
mendukung SQL, sehingga tidak perlu mengkawatirkan adanya beberapa format
file yang berbeda. Karena itu, sekali mempelajari SQL, akan dapat digunakan
untuk platform yang berbeda.
Menurut Roshen (2009) komputasi terdistribusi dimulai dengan
pengembangan pemrograman soket yang memungkinkan aplikasi membangun
koneksi langsung dan berbagi data secara waktu-nyata (Gambar 1.1 dan 1.2).
Membangun koneksi melalui soket merupakan dasar dari ide mengenai service-
14
Penulis : Wiranto Herry Utomo
service dan SOA. Hal ini disebabkan pengembangan service dan SOA
berikutnya menggunakan landasan soket. Jadi sulit membayangkan ide service
dan SOA saat ini akan berkembang tanpa adanya soket.
Gambar 1.1 Sisi server soket untuk berbagi data waktu-nyata (Roshen,
2009)
15
Penulis : Wiranto Herry Utomo
Gambar 1.2 Sisi klien soket untuk berbagi data waktu-nyata (Roshen,
2009)
16
Penulis : Wiranto Herry Utomo
17
Penulis : Wiranto Herry Utomo
SOA seperti antarmuka service yang bebas bahasa pemrograman, konsep awal
tentang registry dan pemisahan aplikasi yang berbeda dari fungsionalitas yang
berkaitan jaringan, dan kode untuk marshalling dan unmarshaling yang sangat
meningkatkan penggunaan kembali kode karena kode yang sama dapat
digunakan oleh sejumlah aplikasi yang berbeda. Server aplikasi semacam
WebSphere Application Server dan JBoss menggunakan teknologi ORB.
18
Penulis : Wiranto Herry Utomo
19
Penulis : Wiranto Herry Utomo
20
Penulis : Wiranto Herry Utomo
pada isi dan konteks, transparansi lokasi, kualitas service, pengayaan data, dan
fungsi lain.
Selain Web service yang menggunakan aplikasi baru dan ESB, SOA harus
menyediakan cara untuk mengintegrasikan aplikasi yang sudah ada untuk
menawarkan solusi integrasi lengkap. Hal ini berarti memerlukan
pembungkusan (wrapping) aplikasi yang sudah ada ke dalam Web service atau
menggunakan adapter yang memungkinkan aplikasi yang ada berkomunikasi
satu sama lain. Mengenai perkembangan teknologi integrasi berbasis SOA ini
dapat dilihat pada Gambar 1.6.
21
Penulis : Wiranto Herry Utomo
SOA
Transformasi protokol
ESB Transformasi message / data
Routing berbasis content atau
context
Berbagi fungsionalitas
RPC Deskripsi interface
Bebas platform
Konektivitas
Socket
Berbagi data secara real time
23
Penulis : Wiranto Herry Utomo
25
Penulis : Wiranto Herry Utomo
dan ketergantungan mereka seperti yang dijelaskan diatas dapat dilihat pada
gambar 1.8. Setiap entitas pada diagram ini disajikan sebagai segiempat.
Aplication frontend merupakan pemilik proses bisnis dan dikoneksikan
ke service melalui service bus. Service didefinisikan melalui interface yang
memungkinkan akses ke service, contract yang menetapkan fungsionalitas dan
implementasi service. Implementasi service menyediakan logika bisnis dan data
yang relevan. Service menyediakan fungsionalitas bisnis yang dapat digunakan
oleh application frontend atau service lain. Service repository digunakan untuk
menyimpan service contract dari service sehingga dapat menggunakan service.
Jelas ada kesamaan antara definisi SOA menurut Erl dan Krafzig.
Keduannya berisi service sebagai entitas dasar di dalam konsep mereka, dan
service description yang mendeskripsikan service yang disediakan. Keduanya
juga mengandung komponen komunikasi antar service, tetapi Erl menggunakan
message sebagai konsep abstrak, disisi lain Krafzig memanfaatkan sebuah
service bus. Dalam definisi Erl dalam SOA dasar, tidak ada elemen service
registry, sebaliknya pada Krafzig, service registry merupakan komponen SOA.
Tetapi dalam definisi web service berbasis SOA, menurut Erl, service registry
merupakan bagian penting SOA. Selain itu, definis Krafzig berisi beberapa
elemen tambahan yang tidak dapat ditemukan pada SOA dasar ataupun web
service SOA pada Erl.
26
Penulis : Wiranto Herry Utomo
27
Penulis : Wiranto Herry Utomo
28
Penulis : Wiranto Herry Utomo
1.4.1 Point-to-Point
EAI secara tradisional telah dikerjakan dengan menggunakan integrasi
secara point-to-point. Dalam integrasi point-to-point, maka terlebih dahulu
29
Penulis : Wiranto Herry Utomo
didefinisikan solusi integrasi untuk sepasang aplikasi, sehingga ada dua end
point yang akan diintegrasikan. Kemudian membangun protokol dan atau
format adapter, atau transformer pada satu atau kedua end points. Ini
merupakan cara termudah untuk integrasi, sepanjang jumlah yang diintegrasikan
masih sedikit. Teknologi yang digunakan untuk integrasi ini biasanya adalah
FTP, IIOP, remoting atau batch interfaces. Keunggulan arsitektur ini adalah
integrasi secara tight coupling, sehingga kedua end points saling mengetahui
pasangannya.
Gambar 1.9 berikut ini adalah merupakan gambar diagram dari integrasi
point-to-point:
1.4.2 Hub-and-Spoke
Arsitektur hub-and-spoke juga dinamakan message broker dan mirip
dengan arsitektur point-to-point ditambah dengan sebuah hub (broker) yang
menghubungkan seluruh aplikasi. Fitur lain dari arsitektur hub-and-spoke
adalah bahwa setiap aplikasi dihubungkan dengan central hub melalui konektor
ringan (lightweight connectors). Lightweight connectors memudahkan integrasi
aplikasi dengan sedikit perubahan atau tanpa perubahan pada aplikasi yang ada.
Transformasi message dan routing terjadi di dalam hub. Arsitektur ini
merupakan peningkatan dari solusi point-to-point dengan mengurangi jumlah
koneksi yang diperlukan untuk integrasi. Karena aplikasi tidak terkoneksi secara
langsung dengan aplikasi lain, maka aplikasi dapat dihilangkan dari topologi
integrasi dengan menghilangkan dari hub. Hal ini akan mengurangi kekacauan
dalam setup integrasi.
Namun ada kelemahan dalam arsitektur hub-and-spoke, yaitu terletak
pada sifat hub yang terpusat. Jika hub gagal maka keseluruhan integrasi juga
gagal.
Gambar 1.10 berikut ini adalah gambar diagram dari integrasi hub-and-
spoke:
31
Penulis : Wiranto Herry Utomo
32
Penulis : Wiranto Herry Utomo
33
Penulis : Wiranto Herry Utomo
36
Penulis : Wiranto Herry Utomo
komunikasi dan kendali atas penggunaan services yang mencakup (Juric, 2007)
:
a. Kemampuan menangkap pesan (message interception), yang
memungkinkan untuk menangkap pesan request untuk services dan pesan
response dari service, serta memberikan pemrosesan tambahan. Dengan
cara ini, ESB dapat bertindak sebagai intermediary.
b. Kemampuan routing, yang memungkinkan ESB melakukan routing pesan
ke services yang berbeda didasarkan pada isi (content), asal, atau atribut lain.
c. Kemampuan transformasi, yang memungkinkan transformasi pesan sebelum
dikirimkan ke services. Untuk pesan format XML, transformasi semacam
ini dilakukan menggunakan XSLT (Extensible Stylesheet Language for
Transformations) atau mesin XQuery.
d. Kendali atas deployment, penggunaan dan pemeliharaan services. Hal ini
memungkinkan adanya logging, profiling, load balancing, performance
tuning, ongkos penggunaan services, distributed deployment, on-the-fly
reconfiguration, dsb.
e. Fitur manajemen lain yang mencakup definisi korelasi antar pesan, definisi
path komunikasi yang handal, definisi security constraints yang berkaitan
dengan pesan dan services, dsb.
ESB menyediakan dukungan untuk keragaman teknologi atas service
yang diimplementasikan. ESB juga menyediakan konektor untuk range
penggunaan teknologi yang luas, seperti komponen J2EE dan .NET, messaging
middleware, aplikasi legacy, dan monitor Transactions Processing. ESB
37
Penulis : Wiranto Herry Utomo
38
Penulis : Wiranto Herry Utomo
BAB 2
Web service, BPEL dan ESB
modular, abstraksi dan enkapsulasi. Dengan standard terbuka seperti XML dan
SOAP, SOA menyediakan interoperabilitas antar service yang bekerja pada
platform berbeda dan antar aplikasi yang diimplementasikan dalam bahasa
pemrograman yang berbeda.
40
Penulis : Wiranto Herry Utomo
Web service dan XML dalam implementasinya. Untuk selanjutnya, yang disebut
sebagai SOA adalah Contemporary SOA.
Definisi yang diajukan oleh W3C tentang Web service adalah: Web
service merupakan aplikasi perangkat lunak yang diidentifikasi melalui URI
yang antarmuka dan binding nya mampu diidentifikasi, dideskripsikan dan
ditemukan melalui XML dan mendukung interaksi langsung dengan aplikasi
perangkat lunak lain menggunakan pesan berbasis XML melalui protokol
berbasis internet.
Perkembangan Web service yang begitu cepat menyebabkan lahirnya
ekstensi-ekstensi Web service yang memperluas fungsi Web service itu sendiri.
Untuk membedakan Web service dasar dengan ekstensi-ekstensinya, maka
keduanya dibedakan menjadi Web service generasi pertama dan Web service
generasi kedua. Web service generasi pertama adalah pondasi dari teknologi
Web service ini sendiri. Implementasi dari teknologi ini, yang berupa aplikasi
Web service, saling berinteraksi satu sama lain dengan menggunakan dokumen
berformat XML dan protokol pengiriman pesan SOAP (Simple Object Access
Protocol) melalui HTTP. Format XML, SOAP, dan HTTP ini juga merupakan
standar terbuka yang dapat diadopsi (Erl, 2004, Kumar, 2010).
Perkembangan teknologi Web service berlanjut pada munculnya
ekstensi-ekstensi dari Web service, yang biasa disebut generasi kedua Web
service atau WS-* (Erl, 2004, Kumar, 2010). Ekstensi ini merupakan
pengembangan dari teknologi Web service dasar yang muncul disebabkan
kebutuhan-kebutuhan yang ada di dalam perusahaan. Adapun beberapa ekstensi
41
Penulis : Wiranto Herry Utomo
Komponen Web service terdiri dari 3 yaitu SOAP, WSDL dan UDDI
(Gambar 2.1). Penjelasan dari ketiga komponen tersebut akan diuraikan dibawah
ini.
1. SOAP
Dalam komunikasi antara Web service diperlukan suatu standard format
pesan antara peminta service dengan penyedia service. SOAP adalah format
pesan yang digunakan untuk komunikasi tersebut. SOAP mendefinisikan
mekanisme pembungkusan yang mengatur pertukaran pesan antara Web
42
Penulis : Wiranto Herry Utomo
service. Pesan SOAP adalah dokumen XML yang mengandung tiga elemen
yaitu envelope, header, body. Struktur umum SOAP dapat dilihat pada
Gambar 2.2.
Envelope adalah elemen utama dari pesan SOAP. Elemen ini mengandung
elemen header yang opsional dan elemen body yang harus ada. Elemen
header adalah mekanisme umum untuk mendefinisikan fitur tambahan pada
SOAP. Elemen body berisi deskripsi pesan aktual ditujukan untuk penerima
akhir dan akan diproses. Komunikasi pesan SOAP antar Web service ini
ilakukan melalui protokol HTTP.
2. WSDL
WSDL adalah spesifikasi dari W3C yang menyediakan bahasa untuk
mendeskripsikan definisi dari Web service (Erl et al, 2008). Dalam definisi
tersebut termasuk juga deskripsi service dan fungsifungsi yang disediakan oleh
Web service.
Gambar 2.3 menunjukkan ada 5 elemen WSDL yaitu types, message,
portType, binding, dan service/port yang menjelaskan service (Erl et al, 2008).
types Elemen ini mendefinisikan type data yang terdapat dalam pesan
yang dipertukarkan sebagai bagian dari service. Type data berupa
simple, complex, derviced, atau array. Type (baik definisi skema
maupun reference) yang diacu dalam elemen dokumen pesan WSDL
didefinisikan dalam elemen type dokumen WSDL.
message Elemen ini mendefinisikan pesan dari service yang
dipertukarkan. Dokumen WSDL mempunyai elemen pesan yang tiap
pesannya dipertukarkan dan elemen pesan berisi type data yang
diasosiasikan dengan pesan.
44
Penulis : Wiranto Herry Utomo
WSDL document
Abstract description
types Jenis data apa yang digunakan?
operation
operation
operation
Concrete description
Bagaimana service digunakan
bindings protokol jaringan?
Rincian SOAP?
operation
portType Elemen ini menetapkan secara abstrak, operasi dan pesan yang
merupakan bagian dari service. Dokumen WSDL mempunyai satu atau
lebih definisi portType.
45
Penulis : Wiranto Herry Utomo
binding Elemen ini melakukan bind type port abstrak dan pesan dan
operasinya, untuk protokol transport dan untuk format pesan.
service and port Elemen-elemen ini bersama-sama mendefinisikan nama
service aktual dan menyediakan address tunggal untuk menetapkan end
point individual dari service. Port dapat mempunyai satu alamat.
Kelompok elemen service berkaitan dengan port dan melalui atribut nama,
menyediakan nama logikal untuk service.
3. UDDI Registry
UDDI adalah spesifikasi yang telah diakui secara luas untuk pendaftaran
suatu Web service. UDDI mendefinisikan metadata dan protokol yang digunakan
untuk mengetahui dan mengubah informasi dari suatu Web service. Langkah
pertama dalam menemukan Web service adalah dengan meminta alamat tempat
penyimpanan dari Web service yang akan dipakai yang biasa disebut dengan
direktori (Gambar 2.4).
Setelah menemukan direktori, peminta Web service dapat mengirimkan
permintaan lagi untuk mendapatkan informasi detail tentang Web service
(misalnya penyedia Web service dan dimana diletakkan). Selanjutnya perangkat
lunak menggunakan informasi yang didapat untuk secara dinamik mengakses
Web service yang diinginkan.
Tempat penyimpanan UDDI dapat dibagi dalam tiga cara, yaitu :
46
Penulis : Wiranto Herry Utomo
1. Public UDDI, dianggap sebagai resource bagi Web service berbasis internet.
Salah satu contohnya adalah UDDI Business Registry (UBR) yang dimiliki
oleh grup yang terdiri dari IBM, Microsoft, SAP.
2. Intra Enterprise UDDI, merupakan tempat penyimpanan yang private yang
menyediakan service bagi kalangan internal suatu perusahaan.
3. Inter Enterprise UDDI, merupakan repository yang dapat diakses oleh
perusahaan yang merupakan partner dalam suatu bisnis.
Seperti yang telah dijelaskan terdahulu, penemuan service memainkan
peranan yang penting dalam SOA. Banyak cara yang dapat dipakai untuk
mekanisme ini, tapi dalam teknologi Web service, UDDI menyediakan standard
yang baik dan fleksibel untuk penemuan service web.
47
Penulis : Wiranto Herry Utomo
48
Penulis : Wiranto Herry Utomo
Gambar 2.5 Lapisan lojik bisnis dan lojik aplikasi dalam SOAD (Erl,
2005)
Gambar 2.5 Fungsi dari lapisan ini adalah membungkus lojik yang ada di lojik
aplikasi, sekaligus proses bisnis yang ada di lojik bisnis. Dengan pendekatan ini,
aplikasi bisa lebih dimodularisasi dan menggunakan berbagai macam
teknologi.
Interface Service Layer ini juga terbagi atas 3 lapisan abstraksi, yaitu
Application Service Layer, Business Service Layer, dan Orchestration Service
Layer. Ilustrasi dari ketiganya dapat dilihat pada Gambar 2.6.
Gambar 2.6 Interface Service Layer pada SOA (Erl, 2005; Shirazi et al,
2009; Lee et al, 2010)
50
Penulis : Wiranto Herry Utomo
51
Penulis : Wiranto Herry Utomo
52
Penulis : Wiranto Herry Utomo
53
Penulis : Wiranto Herry Utomo
54
Penulis : Wiranto Herry Utomo
55
Penulis : Wiranto Herry Utomo
58
Penulis : Wiranto Herry Utomo
59
Penulis : Wiranto Herry Utomo
60
Penulis : Wiranto Herry Utomo
61
Penulis : Wiranto Herry Utomo
lojik, dan rangkaian invokasi. BPEL merupakan bahasa pemodelan proses bisnis
yang dapat dieksekusi dan secara de facto menjadi standard cara melakukan
orkestrasi Web service. BPEL didukung oleh industri secara meluas yang
mencakup IBM, Microsoft, dan Oracle dengan implementasi yang konkrit.
(Barker et al, 2009)
62
Penulis : Wiranto Herry Utomo
63
Penulis : Wiranto Herry Utomo
64
Penulis : Wiranto Herry Utomo
65
Penulis : Wiranto Herry Utomo
Dari Gambar 2.11 dapat dilihat bahwa terdapat tiga komponen dalam JBI
Runtime Environment yang terdiri dari Normalized Message Router (NMR),
Binding Component (BC) dan Service Engine (SE) dengan fungsi masing-
masing komponen sebagai berikut (Vinoski, 2005; Binildas, 2008, Kumar et al,
2010, Schmutz et al, 2010):
Normalized Message Router berfungsi membawa pesan dari klien dan me-
routing-kan pesan ke SE yang sesuai untuk pemrosesan dan melewatkan
normalized message (WSDL) diantara komponen JBI.
BPEL Service Engine melakukan orkestrasi proses bisnis dengan WS-BPEL
2.0.
XSLT Service Engine berfungsi menjalankan transformasi dokumen XML
dari satu format ke format lain menggunakan XSL stylesheets dan
transformasi untuk dideploy sebagai Web service yang dapat digunakan oleh
klien eksternal.
SQL Service Engine berfungsi melakukan eksekusi SQL Data Definition
Language, SQL Data Manipulation Language dan stored procedures dari
sebuah database.
IEP Service Engine berfungsi memebaca data dari sebuah sumber input dan
kemudian memproses ke dalam format yang dapat digunakan untuk berbagai
tujuan seperti pelaporan atau informasi business intelegent.
Java EE Service Engine berperan sebagai jembatan antara container JBI
yang memungkinkan Java EE Web service dikonsumsi dari dalam
komponen JBI.
68
Penulis : Wiranto Herry Utomo
69
Penulis : Wiranto Herry Utomo
70
Penulis : Wiranto Herry Utomo
Instalasi GlassFish ESB dilakukan dengan melakukan klik 2 kali pada file
Glasfish 2.2.exe, kemudian klik Run. Klik Next untuk melanjutkan. Statement
lisensi muncul. Respon lisensi dengan mengkklik Accept, kemudian klik Next
lagi untuk melanjutkan instalasi.
71
Penulis : Wiranto Herry Utomo
72
Penulis : Wiranto Herry Utomo
Terima saja defaults, dan klik Next. Kemudian ringkasan konfigurasi akan
tampak. Gambar berikut ini merupakan ringkasan yang menunjukkan JBI Service
Engines dan Binding Components yang terdistribusi dengan GlassFish ESB.
73
Penulis : Wiranto Herry Utomo
Perhatikan progress bar untuk melihat ketika instalasi telah lengkap. Saat
instalasi selesai maka akan terlihat gambar berikut. Progress bar instalasi akan
memakan waktu 8-10 menit untuk instalasi yang lengkap.
74
Penulis : Wiranto Herry Utomo
Klik Finish dan dengan demikian proses instalasi telah lengkap. Halaman
registrasi akan tampak di browser dan menanyakan registrasi Glassfish ESB.
Jika melakukan register, maka ada keuntungan menjadi anggota komunitas dan
menerima update penting tentang perkembangan teknologi ini.
75
Penulis : Wiranto Herry Utomo
gambar berikut.
Ketika pesan tampak, klik pada pesan pop-up dan ikuti langkah untuk
melakukan update Netbeans. Lihat daftar update seperti yang terlihat yang dapat
didownload. Jika tidak terlihat daftar plug- ins, ini menunjukkan bahwa NetBeans
sudah up-to-date.
76
Penulis : Wiranto Herry Utomo
Jika pesan pop-up yang menunjukkan update tidak terlihat maka gunakan
pilihan menu Help / Check for Updates untuk memulai pengecekan update.
Setelah instalasi selesai, maka lihat panel Services dan start aplikasi server
Glassfish dengan melakukan klik kana pada node GlassFish V2 dibawah Servers
dan pilih Start .
Setelah Glassfish start, cek JBI Service Engines dan Binding Components
yang terpaket dengan GlassFish ESB dengan melakukan ekspansi hirarki
GlassFish V2:
77
Penulis : Wiranto Herry Utomo
SOA middleware yang ada pada GlassFish ESB didasarkan pada standard
Java Business Integration 1.0 (JSR 208). JBI menetapkan model kontainer untuk
integrasi. Ada dua jenis komponen pada JBI yaitu Service Engines dan Binding
Components. Keduanya mini-containers.
78
Penulis : Wiranto Herry Utomo
79
Penulis : Wiranto Herry Utomo
80
Penulis : Wiranto Herry Utomo
81
Penulis : Wiranto Herry Utomo
82
Penulis : Wiranto Herry Utomo
BAB 6
Contoh 4: Pemrograman SOA
83
Penulis : Wiranto Herry Utomo
6.1 Skenario
Pada Aplikasi Persetujuan Kredit BPR UKSW ini, pemilik
mempunyai ide menggunakan SOA sebagai strategi TI. Pemilik
menginginkan pegawainya memahami SOA dengan menggunakan web
service dan aplikasi komposit. Karena itu akan dibuat aplikasi sebagai
proyek proof of concept dari penerapan SOA. Aplikasi ini terbagi dalam 5
modul (Lihat gambar berikut ini) yang terdiri dari :
1. Penetapan Bunga Pinjaman: Penetapan bunga pinjaman akan
diimplementasikan menggunakan web service, yang dibangun dari EJB
stateless yang menyediakan lojik untuk menetapkan bunga pinjaman.
2. Menghitung Pembayaran Pinjaman.: Web service lainnya akan
mengambil input jumlah pinjaman, tingat bunga dan periode
dan menghitung jumlah cicilan bulanan. Rumus menghitung pembayaran
menggunakan rumus umum dalam keuangan. Web service akan
mengimplementasikan algoritma dari rumus tersebut. Akan digunakan
aplikasi web untuk menyediakan lojik penghitungan pembayaran..
3. Proses Peminjaman: Proses Business Process Execution Language (BPEL)
digunakan untuk melakukan orkestrasi (orchestration) dengan menggunakan
dua web service yang telah dibuat sebelumnya. BPEL akan menerima
84
Penulis : Wiranto Herry Utomo
85
Penulis : Wiranto Herry Utomo
Call lewat
Form Submit Interface Web Java DB
pd hlm web 4 Kuota Pinjaman
Hlm Web JSP/JSF
5
Call lewat
Aplikasi Komposit Kuota Pinjaman hlm test
3 klien web
Proses BPEL
86
Penulis : Wiranto Herry Utomo
Pertama kali lakukan start GlassFish ESB, dengan melakukan : Start / All
Programs / GlassFish ESB pada opsi menu. Sekarang akan dimulai proyek
pertama:
Pilih File / New Project from the menu bar, maka wizard windows New
Project akan tampak.
Pilih Java EE dari category dan EJB Module
Untuk jenis proyek. Kemudian klik Next.
Untuk Project Name, masukkan PenetapanBungaPinjaman. Untuk
Project Location, masukkan: C:\LatihanSOA. Jika direktori belum ada,
maka akan secara otomatis dibuatkan. Klik Next.
Terima sisanya sebagai defaults dengan melakukan klik Finish. Proyek
PenetapanBungaPinjaman akan tampak.
mendefinisikan jenis data (data types) yang digunakan dalam pesan (messages).
Kemudian membangun dokumen Web service Description Language (WSDL)
yang diimport dari XSD dan mendefinisikan penuh Web service nya. Ingat
bahwa ini merupakan penyimpangan dari best practices. Disini langsung
dibuat implementasi Web service tanpa membuat interfacenya dulu.
Selanjutnya akan diikuti jalur dalam implementasi yang sudah
disediakan, dan membiarkan Netbeans menciptakan interface (XSD dan
WSDL). Alasan melakukan shortcut ini adalah karena web service akan
diperoleh secara cepat dan dapat dilakukan build and testing.
Pada node PenetapanBungaPinjaman. pada panel Projects
lakukan klik kanan, dan pilih New / Web service. Windows wizard New Web
service akan tampak. Untuk Web service Name, masukkan
ServicePenetapanBunga , dan untuk package, masukkan bunga
Kemudian klik Finish. Web service ini dibuat dari awal, dan bukan dari EJB
yang sudah ada.
Web service yang baru telah ditambahkan ke proyek dan view Source
akan tampak :
88
Penulis : Wiranto Herry Utomo
Pilih kontrol Design untuk berpindah dari mode Source ke mode Design.
Kanvas Design akan tampak:
Klik pada tombol Add Operation untuk membuat sebuah operasi untuk
89
Penulis : Wiranto Herry Utomo
90
Penulis : Wiranto Herry Utomo
Ekspansi hirarki Web service pada panel Projects untuk melihat bahwa
operasi getBunga telah ditambahkan.
Klik pada kontrol Source untuk berpindah ke view kode Java dan
membuat implementasi dari metode getBunga seperti gambar berikut
ini :
91
Penulis : Wiranto Herry Utomo
Untuk memudahkan copy dan paste, berikut ini adalah kode untuk
metode getBunga():
if (jenisPinjaman.equals("RUMAH")) return 7.0;
else if (jenisPinjaman.equals("MOBIL")) return 10.0;
else return 15.0;
92
Penulis : Wiranto Herry Utomo
93
Penulis : Wiranto Herry Utomo
Jika modul tidak tampak, perlu dilakukkan klik-kanan pada EJB Modules
dan pilih Refresh. Panel ServicePenetapanBunga.java dapat ditutup
dengan klik kanan pada tab X.
94
Penulis : Wiranto Herry Utomo
Lakukan drag pada URL tersebut dan gunakan Ctrl-C untuk mengkopi
ke clipboard. Klik pada tombol Close.
Pada web browser, lakukan, paste dari URL yang baru saja dikopi.
Makan akan terlihat WSDL yang telahdibuat. Ini menjelaskan interface untuk
service baru. Namun beberapa informasi kunci disimpan di suatu tempat dan
ini hanya referensi saja.
Source lainnya berupa dokumen skema XML direferensi pada bagian
<types> dibawah ini:
Lakukan kopi URL dari bagian <types> ke dalam web browser baru
untuk melihat struktur data input dan output yang terlibat dalam definisi
interface web srvices. Ini adalah URL yang harus di-paste.
95
Penulis : Wiranto Herry Utomo
http://localhost:8080/ServicePenetapanBungaService/ServicePenetapanBung
a?xsd=1
96
Penulis : Wiranto Herry Utomo
98
Penulis : Wiranto Herry Utomo
Untuk package, ketik cicilan dan klik Finish. Akan terlihat web
service baru ditambahkan pada panel Projects.
Seperti yang telah dikerjakan di proyek1, klik pada ontrol Design untuk
ke mode Design dan klik tombol Add Operation untuk membuat sebuah method
baru. Wizard window Add Operation akan tampak.
Untuk Name, ketik: getCicilan
Untuk Return Type, ketik: double
Pada tab Parameters, gunakan tombol Add tiga kali untuk
mengetikkan argumen input:
tingkatBunga (double)
jumlah (double)
periode (int)
Gunakan box drop-down list pada kolom Type untuk memilih type data
double dan int.
Klik OK untuk mengakhiri pembuatan interface untuk operasi
getCicilan. Klik pada kontrol Source untuk pindah ke mode Source. Maka
kerangka implementasi telah selesai dibuat.
Implementasikan method getCicilan seperti gambar dibawah ini.
99
Penulis : Wiranto Herry Utomo
100
Penulis : Wiranto Herry Utomo
101
Penulis : Wiranto Herry Utomo
Disini ada dua jenis pesan yang dibuat berdasarkan dua elemen pada XSD.
Port Type menyediakan definisi interface yang menunjukkan bahwa operasi
getCicilan tersedia, yang mengharapkan pesan input dan mengirimkan pesan
output berdasarkan jenis pesan diatas. Untuk bagian konkrit dari WSDL, kaitkan
operasi ke SOAP sebagai sebuah protocol.
102
Penulis : Wiranto Herry Utomo
Seperti yang telah dikerjakan pada proyek terakhir, temukan baris yang
melakukan import skema XML untuk mendefinisikan pesan input dan output:
Lakukan kopi URL ini ke web browser lain untuk melihat definisi jenis
data web service sisanya.
Copy:
http://localhost:8080/HitungCicilanPinjaman/ServiceHitungCicilanService?xsd
=1
Ada dua complex types yang didefinisikan. Dan ini akan menjadi dasar
untuk dua elemen. Complex type pertama mendefinisikan inputs
(tingatBunga, jumlah dan periode). Yang kedua mendefinisikan nilai
return dengan tipe double.
103
Penulis : Wiranto Herry Utomo
105
Penulis : Wiranto Herry Utomo
106
Penulis : Wiranto Herry Utomo
Dapat dilihat bahwa tidak ada file dalam folder Process Files.
Klik tab Files untuk melihat view systems dari project:
107
Penulis : Wiranto Herry Utomo
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 KuotaPinjaman dan pilih New
/ BPEL Process. Untuk File Name, ketik ProsesKuotaPinjaman Klik Finish.
BPEL Editor tampak pada panel kanan:
109
Penulis : Wiranto Herry Utomo
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.:
110
Penulis : Wiranto Herry Utomo
Proses bisnis BPEL dimulai dengan sebuah elemen receive dan diakhiri
dengan elemen reply. Taruh kedua elemen tersebut ditempatnya.
Dari panel Palette, lakukan drag Receive ke dalam kanvas design dan
drop pada lingkaran oranye setelah Process Start:
Dapat berpindah dari view Source dari proses untuk melihat statement
<receive> yang telah ditambahkan. <receive> membawa data ke dalam proses
bisnis yang dapat digunakan pada langkah berikutnya.
Selanjutnya, tambahkan elemen reply dengan melakukan drag ikon Reply
icon dari palette ke kanvas. Drop ke dot oranye dibawah node receive
StartKuotaPinjaman:
111
Penulis : Wiranto Herry Utomo
Exposisi proses bisnis mirip dengan eksposisi Web service. Proses bisnis
perlu di bungkus seperti web service sehingga dapat dipanggil seperti
ServicePenetapanBunga dan ServiceHitungCicilan. Untuk
kedua Web service, telah ada dokumen WSDL yang merupakan interfaces.
NetBeans akan membuat WSDL (dan XSD). Namun pada proyek ini akan
dibuat WSDL dan XSD secara manual.
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 KuotaPinjaman, 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 SkemaKuotaPinjaman dan pilih Finish. File
113
Penulis : Wiranto Herry Utomo
Definisikan dua Complex Types, satu untuk input dan lainnya untuk
output.
Klik-kanan panel design Complex Types dan pilih Add / Complex Type:
114
Penulis : Wiranto Herry Utomo
Add / Element:
115
Penulis : Wiranto Herry Utomo
Klik ikon ellipsis (lihat gambar) dan atur property Definition property
untuk jenisPinjaman menjadi Built-In Types / string.
Tambahkan elemen di bawah InputKuotaPinjaman dan atur properti
Definition:
jumlah (Built-In Types / double)
periode (Built-In Types / int)
Sekarang akan didefinisikan sisi output dari interface publik proses BPEL.
Lakukan hal yang sama dalam membuat complex type
OutputKuotaPinjaman.
Untuk membuat complex type, klik-kanan pada area Complex Types dan
116
Penulis : Wiranto Herry Utomo
117
Penulis : Wiranto Herry Utomo
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:
118
Penulis : Wiranto Herry Utomo
Klik-kanan area Elements lagi dan pilih node Add / Element. Node
newElement lain akan tampak.
Klik-double pada node baru dan beri nama baru menjadi
ResponKuotaPinjaman
Untuk property Definition, klik Complex Types /
OutputKuotaPinjaman.
Simpan dengan melakukan klik Save All.
Gambar dibawah ini menunjukkan SkemaKuotaPinjaman secara
lengkap.
119
Penulis : Wiranto Herry Utomo
120
Penulis : Wiranto Herry Utomo
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.
122
Penulis : Wiranto Herry Utomo
123
Penulis : Wiranto Herry Utomo
124
Penulis : Wiranto Herry Utomo
125
Penulis : Wiranto Herry Utomo
Klik Finish untuk menerima semua default. WSDL baru akan tampak di
panel Projects dibawah hirarki KuotaPinjaman. Untuk menemukan kanvas
desain BPEL klik-double pada node ProsesKuotaPinjaman.bpel di
hirarki KuotaPinjaman pada tab Projects.
Sekarang telah ada interface WSDL untuk proses bisnis, sekarang kembali
ke kanvas design dari ProsesKuotaPinjaman.bpel dan gunakan definisi
interface untuk melakukan build BPEL Partner Link.
126
Penulis : Wiranto Herry Utomo
Apa perbedaan antar drag pada sisi kiri dan kanan? Drag WSDL di area
kiri maupun kanan akan tetap dibuat Partner Link. 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 web service endpoint external yang akan
berinteraksi dengan menggunakan <invoke>.
Elemen receive dan reply perlu dikoneksikan dengan Partner Link channel
sehingga <receive> dapat diinvoke dan membawa data masuk dan <reply> 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: KuotaPinjamanPL
127
Penulis : Wiranto Herry Utomo
128
Penulis : Wiranto Herry Utomo
Untuk membuat Input Variable, klik saja tombol Create dan terima
semua default. Pilih tombol Ok.
Akan terlihat bahwa node receive StartKuotaPinjaman telah
dihubungkan ke partner.
129
Penulis : Wiranto Herry Utomo
130
Penulis : Wiranto Herry Utomo
Antara node reply dan interface WSDL perlu dihubungkan, dan lakukan
klik pada node reply ReturnKuotaPinjaman, lalu lihat ikon edit akan
tampak.
131
Penulis : Wiranto Herry Utomo
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:
132
Penulis : Wiranto Herry Utomo
Simpan dengan klik Save All. Kedua node request dan reply sekarang
dihubungkan ke Partner Link yang mendefinisikan inputs dan outputs dari
proses bisnis.
Pindah ke view Source untuk melihat statemen <reply> telah dibuat
oleh NetBeans:
<reply name="ReturnKuotaPinjaman"
partnerLink="KuotaPinjamanPL"
operation="WSDLKuotaPinjamanOperation"
xmlns:tns="http://j2ee.netbeans.org/wsdl/KuotaPinjaman/WS
DLKuotaPinjaman" portType="tns:WSDLKuotaPinjamanPortType"
variable="WSDLKuotaPinjamanOperationOut"/>
133
Penulis : Wiranto Herry Utomo
135
Penulis : Wiranto Herry Utomo
136
Penulis : Wiranto Herry Utomo
137
Penulis : Wiranto Herry Utomo
Window Create New Partner Link akan tampak. Untuk Name, ketik
PenetapanBungaPL. Klik Ok untuk menerima defaults. Node Partner Link
tampak pada kanvas.
138
Penulis : Wiranto Herry Utomo
Seperti sebelumnya, buat Input dan Output Variables, dengan klik pada
tombol Create dan terima default. Sekarang <invoke> (dinamai
PenetapanBunga) dapat berbicara dengan ServicePenetapanBunga
melalui channel yang disediakan Partner Link.
Setelah memilih Ok, Partner Link akan dihubungkan dengan activity
invoke pada kanvas design:
139
Penulis : Wiranto Herry Utomo
140
Penulis : Wiranto Herry Utomo
operasi Invoke ke dalam model dan drop di bagian titik oranye diatas elemen
reply dari ReturnKuotaPinjaman.
Activity Invoke1 ditambahkan ke model. Klik-double pada label Invoke1
dan ganti nama menjadi HitungCicilanPinjaman.
141
Penulis : Wiranto Herry Utomo
142
Penulis : Wiranto Herry Utomo
143
Penulis : Wiranto Herry Utomo
Sekarang proses BPEL dapat berbicara kepada Web service. Dua web
service ini menggunakan interface yang dideskripsikan dalam dokumen WSDL
dan berbicara melalui channels yang disediakan oleh Partner Links.
Untuk menjalankan fungsinya dua web service 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.
Dua Web service akan mendapatkan input dari input yang disediakan oleh
144
Penulis : Wiranto Herry Utomo
145
Penulis : Wiranto Herry Utomo
146
Penulis : Wiranto Herry Utomo
periode(WSDLKuotaPinjamanOperationIn.InputPart.periode
--> Variables.GetCicilanIn.parameters.periode)
147
Penulis : Wiranto Herry Utomo
148
Penulis : Wiranto Herry Utomo
149
Penulis : Wiranto Herry Utomo
Klik pada node deskripsi pada sisi kanan Mapper. Area biiru tampak
untuk menunjukkan titik sisipan pada Mapper:
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 jenisPinjaman ke bagian pertama dari
string penggabungan (concat):
150
Penulis : Wiranto Herry Utomo
Klik-double pada String slot ke dua dan ketikkan teks loan for jumlah
of:
151
Penulis : Wiranto Herry Utomo
Jika proses BPEL bebas dari error sintaks, maka akan terlihat pesan 0
Error(s), 0 Warning(s) pada panel cek XML.
152
Penulis : Wiranto Herry Utomo
Klik pada tab Projects sehingga akan dibuat aplikasi komposit (composit
application) dan melakuan deploy.
154
Penulis : Wiranto Herry Utomo
Selanjutnya lakukan klik kontrol Build Project pada bagian atas editor
CASA. Editor CASA akan melakukan assembly pada kanvas dan menunjukkan
service units yang dapat diidentifikasikan untuk proyek KuotaPinjaman:
155
Penulis : Wiranto Herry Utomo
Karena itu, lakukan drag dua soap WSDL Bindings dari palette dan drop
ke area WSDL Ports area:
http://localhost:${HttpDefaultPort}/AplikasiKompositKuotaService1/c
asaPort1
Untuk Endpoint Name, ketikkan: PenetapanBungaPort. Pilih Close
untuk merekam perubahan property. Klik-kanan pada casaPort2 WSDL port
(yang terkoneksi ke HitungCicilanPinjamanPartnerLink) dan pilih
Properties.
Untuk Location, klik pada ikon ... dan ketikkan :
http://localhost:8080/HitungCicilanPinjaman/ServiceHitun
gCicilanService
http://localhost:${HttpDefaultPort}/AplikasiKompositKuotaService2
/casaPort2
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:
HitungCicilanPinjamanPort. Pilih Close. Simpan semua pekerjaan
dengan Save All.
Klik kanan pada node AplikasiKuotaPinjaman pada panel
157
Penulis : Wiranto Herry Utomo
Projects dan pilih opsi Clean and Build. Perhatikan pada windows Output
adanya pesan BUILD SUCCESSFUL.
158
Penulis : Wiranto Herry Utomo
Klik-kanan pada service unit dan pilih Properties, akan terlihat bahawa JBI
component (SE atau BC) akan terdeploy. Misalnya
AplikasiKuotaPinjaman- KuotaPinjaman dideploy di sun-bpel-
engine.
Inilah AplikasiKuotaPinjaman service assembly yang terlihat
pada CASA Editor:
159
Penulis : Wiranto Herry Utomo
Window New Test Case akan muncul. Untuk Test Case Name, ketikkan
HomeLoanTestCase kemudiah pilih Next. Kemudian pilih dokumen WSDL
yang akan ditest. Ekspansi KuotaPinjaman Source Packages dan pilih
WSDLKuotaPinjaman.wsdl:
160
Penulis : Wiranto Herry Utomo
161
Penulis : Wiranto Herry Utomo
Editor XML editor akan muncul dengan dokumen input. Akan ada tiga
fields delimited dengan simbol ?. Ketik fields ini dengan data yang akan
diuji.
<soapenv:Body>
<skem:RequestKuotaPinjaman>
<skem:jenisPinjaman>RUMAH</skem:jenisPinjaman>
<skem:jumlah>25000.00</skem:jumlah>
<skem:periode>15.0</skem:periode>
</skem:RequestKuotaPinjaman>
</soapenv:Body>
Jalankan test lagi dengan klik Run. Maka akan terlihat output dibawah
ini yang menunjukkan keberhasilan test.
162
Penulis : Wiranto Herry Utomo
163
Penulis : Wiranto Herry Utomo
164
Penulis : Wiranto Herry Utomo
Untuk merubah default pada label text, lakukan klik-double dan ketikkan
teks yang diinginkan. Tambahkan tiga Text Fields ke layout di sebelah kanan
label. Untuk meluruskan teks, klik semua label, kemudian klik-kanan dan
gunakan opsi Align. Coba juga gunakan opsi Align / Snap to Grid.
Gunakan opsi menu bar Window / Properties untuk menampilkan panel
Properties. Ubah id property dari tiga text fields menjadi :
jenisTextField
jumlahTextField
periodeTextField
165
Penulis : Wiranto Herry Utomo
Beri nama button menjadi Hitung deengan merubah pada text property
pada panel Properties.
Pada tiga data entry textField dan pada label yang menampilkan jumlah
pembayaran lakukan, add binding attribute dengan klik pada tiap widgets
(jenisTextField, jumlahTextField, periodeTextField dan
cicilanLabel) dan memilih opsi seperti dibawah ini.
166
Penulis : Wiranto Herry Utomo
Simpan semua pekerjaan dengan klik Save All. Klik pada kontrol JSP
pada bagian panel layout untuk melihat sintaks JSP yang secara otomatis dibuat
didasarkan pada widget yang ditambahkan pada kanvas design. Aksi Add
Binding Attribute telah ditambahkan pada sintaks yang disorot berikut ini.
167
Penulis : Wiranto Herry Utomo
168
Penulis : Wiranto Herry Utomo
tahu dimana endpoint web service berada. Dengan kata lain, bagaimana proses
BPEL mendengarkan request SOAP/HTTP?
Untuk menjawabnya, dengan melihat WSDLKuotaPinjaman yang
dibuat untuk melakukan wrap proses BPEL sehingga dapat dipanggil via
SOAP. WSDL ini dapat berjalan karena telah ditest melalui
HomeLoanTestCase.
Kemudian, klik-double pada WSDLKuotaPinjaman.wsdl pada
Process Files untuk KuotaPinjaman sehingga dapat dilihat endpoint
address:
169
Penulis : Wiranto Herry Utomo
170
Penulis : Wiranto Herry Utomo
171
Penulis : Wiranto Herry Utomo
Dapat dilihat dalam property Component Name bahwa port WSDL port
(SOAP endpoint) dideploy pada sun-http-binding JBI component. Komponen
binding HTTP merupakan salah satu dari lebih 40 komponen JBI dalam proyek
Open ESB.
Setelah diketahui port dari komponen sun-http-binding maka akan
diketahui nomor port untuk endpoint web service untuk memanggil proses
KuotaPinjaman.
Untuk menemukan port sun-http-binding component maka pindah ke
panel Services dan akses Properties nya:
172
Penulis : Wiranto Herry Utomo
Tambahkan ?wsdl pada bagian akhir the URL dan gunakan web browser
untuk melihat endpoints WSDL:
http://localhost:9080/WSDLKuotaPinjamanService/WSDLKu
otaPinjamanPort?wsdl
173
Penulis : Wiranto Herry Utomo
Dengan URL dari endpoint WSDL , maka akan siap dibangun klien web
service. Pada panel Projects, klik-kanan pada proyek UIKuotaPinjaman dan
pilih opsi New / Other / Web service / Web service Client. Klik Next untuk
memulai wizard.
Klik radio button WSDL URL. Kemudian paste dalam URL untuk WSDL
yang akan ditampilkan:
http://localhost:9080/WSDLKuotaPinjamanService/WSDLKuo
174
Penulis : Wiranto Herry Utomo
taPinjamanPort?wsdl
Klik Finish untuk mulai membuat sisi klien. WSDL diakses dan klien Web
service muncul pada proyek dibawah Web service References:
175
Penulis : Wiranto Herry Utomo
yang baru saja dibuat. Klik pada bagian kode setelah komentar. Tekan Enter
untuk membuat baris kosong. Pada baris kosong, klik-kanan dan pilih Web
service Client Resources / Call Web service Operation. Pada window pop-up
pilih WSDLKuotaPinjamanOperation dan pilih OK.
Kode klien untuk mengakses proses KuotaPinjaman BPEL sebagai
web service per interface WSDL akan ditambahkan pada button handler:
177
Penulis : Wiranto Herry Utomo
org.netbeans.xml.schema.SkemaKuotaPinjaman.InputKuotaPinjaman
inputPart = new
org.netbeans.xml.schema.SkemaKuotaPinjaman.InputKuotaPinjaman(
);
inputPart.setJenisPinjaman(jenisPinjaman);
inputPart.setJumlah(jumlah);
inputPart.setPeriode(periode);
org.netbeans.xml.schema.SkemaKuotaPinjaman.OutputKuotaPinjaman
result = port.wsdlKuotaPinjamanOperation(inputPart);
System.out.println("Result = " + result);
double cicilanBulanan = result.getCicilanBulanan();
String cicilanBulananString = String.valueOf(cicilanBulanan);
cicilanLabel.setValue(cicilanBulananString);
} catch (Exception ex) {
cicilanLabel.setValue("Error");
System.out.println("****** " + ex.getMessage());
System.out.println("****** " + ex.getCause());
}
return null;
}
}
179
Penulis : Wiranto Herry Utomo
180
Penulis : Wiranto Herry Utomo
181
Penulis : Wiranto Herry Utomo
182
Penulis : Wiranto Herry Utomo
183
Penulis : Wiranto Herry Utomo
184
Penulis : Wiranto Herry Utomo
Klik-kanan pada node Java DB dan pilih Create Database. Window Java
DB Database akan tampak. Ketik windows seperti gambar dibawah ini:
185
Penulis : Wiranto Herry Utomo
Password: admin
186
Penulis : Wiranto Herry Utomo
187
Penulis : Wiranto Herry Utomo
Setelah eksekusi SQL Command maka pada window Output akan terilhat
pesan berikut :
Untuk meyakinkan bahwa tabel telah berhasil dibuat, klik pada node
Tabel dan pilih Refresh. Tabel KUOTAPINJAMAN akan tampil di daftar :
188
Penulis : Wiranto Herry Utomo
189
Penulis : Wiranto Herry Utomo
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
190
Penulis : Wiranto Herry Utomo
Klik tombol New untuk membuat Connection Pools baru. Ketik window
wizard seperti ini:
191
Penulis : Wiranto Herry Utomo
193
Penulis : Wiranto Herry Utomo
Klik pada tombol New untuk membuat JDBC Resources baru seperti
gambar dibawah:
194
Penulis : Wiranto Herry Utomo
195
Penulis : Wiranto Herry Utomo
Drag invoke baru dari palette ke dalam model di kanan sebelum elemen
ReturnKuotaPinjaman dibagian bawah. Ganti nama elemen invoke menjadi
SimpanKuotaPinjaman.
196
Penulis : Wiranto Herry Utomo
197
Penulis : Wiranto Herry Utomo
Type telah diset ke Tabel. Pilih Next. Dari URL drop-down list, pilih
DBLatihan [admin on ADMIN] data source dari drop-down list. Klik Next.
198
Penulis : Wiranto Herry Utomo
Ada dua property yang harus diubah. Ubah property paramOrder menjadi
:
199
Penulis : Wiranto Herry Utomo
JENISPINJAMAN,JUMLAH,PERIODE,CICILAN
200
Penulis : Wiranto Herry Utomo
201
Penulis : Wiranto Herry Utomo
202
Penulis : Wiranto Herry Utomo
203
Penulis : Wiranto Herry Utomo
StoreKuotaPinjaman.
Ganti nama elemen assign dari Assign1 menjadi:
PersiapanPenyimpanan. Klik-double elemen
PersiapanPenyimpanan dan lengkapi pemetaan dibawah ini:
Simpan pekerjaan dengan Save. Pindah ke view Source dan pilih ikon
Validate XML untuk mengecek adanya error:
204
Penulis : Wiranto Herry Utomo
205
Penulis : Wiranto Herry Utomo
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):
206
Penulis : Wiranto Herry Utomo
Klik Close untuk keluar dari window Properties. Sekarang jalankan test
lagi dan lihat apakah ada rekaman yang dituliskan di tabel database. Temukan
TestCasePinjamanRumah pada AplikasiKuotaPinjaman dengan
klik-kanan dan pilih Run:
207
Penulis : Wiranto Herry Utomo
Cek output dari hasil test. Akan tampak sama seperti test sebelumnya:
208
Penulis : Wiranto Herry Utomo
sehingga dapat diihat apakah ada rekaman yang telah disisipkan ke tabel
KUOTAPINJAMAN:
Pilih opsi View Data Untuk melihat adanya baris data yang telah
ditambahkan ke tabel KUOTAPINJAMAN:
209
Penulis : Wiranto Herry Utomo
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:
210
Penulis : Wiranto Herry Utomo
Daftar Pustaka
Andary, J.F. and Sage, A.P., 2010, The role of service oriented architectures in
systems engineering, Information Knowledge Systems Management 9
(2010), IOS Press
Anonim, 2014, Getting Started with JAX-WS Web Services, diakses dari
https://netbeans.org/kb/docs/websvc/jax-ws.html, tanggal 23
Desember 2014
Barrett, T., 2009, Getting Started with NetBeans, diakses dari http://www.open-
esb.net, tanggal 23 Desember 2014
Barrett, T., 2009, Demonstrating Database Operations with the Database BC (V
1.0), diakses dari http://www.open-esb.net, tanggal 23 Desember
2014
Barrett, T., 2009, A Gentle Introduction to GlassFish ESB, diakses dari
http://www.open-esb.net, tanggal 23 Desember 2014
Binildas, C. A., 2008. Service Oriented Java Business Integration, Birmingham-
Mumbai: Packt Publishing.
Erl, T., 2005, Service-Oriented Architecture: Concepts, Technology, and
Design, Prentice Hall PTR, Upper Saddle River, New Jersey 07458
Erl, T., 2004, Service Oriented Architecture: A Field Guide to Integrating XML
and Web service, Prentice Hall PTR, Upper Saddle River, New Jersey
07458
Havey, M., 2005, Essential Business Process Modeling, O'Reilly Media, Inc.
1005 Gravenstein Highway North, Sebastopol, CA 95472
Holanda, H.J.A., Herniz, JM., Barroso, GC., and Serra, AB., 2010, Performance
Evaluation of Web service Orchestrated with WS-BPEL4People,
International Journal of Computer Networks & Communications
(IJCNC) Vol.2. No.6, November 2010
211
Penulis : Wiranto Herry Utomo
Josuttis, N.M., 2007, SOA in Practice, OReilly Media, Inc. 1005 Gravenstein
Highway North, Sebastopol, CA 95472
Juric, M.B., Loganathan, R., Sarang, P., dan Jennings, F., 2007, SOA Approach
to Integration, Packt Publishing, Birmingham, B27 6PA, UK.
Juric, M.B., Mathew, B., dan Sarang, P. 2006, Business Process Execution
Language for Web service, Packt Publishing, Birmingham, B27 6PA,
UK.
Juric, M.B., Chandrasekaran, S., Frece, A., Hertis, M., dan Srdic, G., 2010, WS-
BPEL 2.0 for SOA Composite Applications with IBM WebSphere 7,
Packt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA,
UK.
Korherr, B., 2008, Business Process Modeling- Languages, Goals and
Variabilities, Ph.D. Thesis, Vienna University of Technology Faculty
of Informatics, Vienna
Krafzig, D., Banke, K., dan Slama, D., 2004, Enterprise SOA: Service-Oriented
Architecture Best Practices, Prentice Hall PTR
Kumar, B.V., Narayan, P., dan Tony Ng, 2010, Implementing SOA Using
Java EE, Pearson Education, Inc, 501 Boylston Street, Suite 900,
Boston, MA 02116
Lee, H. L. ; Whang, S. 2010. E-Business and Supply Chain Integration.
http://www.stanford.edu/group/scforum/Welcome/EB SCI.pdf.
Louridas, P., 2008, Orchestrating Web service with BPEL, IEEE Software,
March/April 2008, Published by the IEEE Computer Society
OASIS. 2003. Business Process Execution Language for Web service
(BPEL4WS) Specification, Version 1.1, 5 May 2003,
http://dev2dev.bea.com/webservices/BPEL4WS.html
Piispanen, T., 2008, Business Process Management: State-of-the-Art
Technologies, Master Thesis, Helsinki University Of Technology,
Faculty of Information and Natural Sciences, Department of Computer
Science and Engineering
212
Penulis : Wiranto Herry Utomo
213