BAB II DASAR TEORI 2.1 Business Process Management (BPM) 2.1.1 Konsep Dasar Business Process Management (BPM) adalah disiplin ilmu untuk memodelkan, automatisasi, mengelola, dan mengoptimasi proses bisnis untuk meningkatkan profitability [KAH07]. Proses bisnis yang dimaksud di dalam definisi BPM ini termasuk sistem teknologi informasi dan interaksi manusia [NEW04]. Penggunaan dari disiplin ilmu ini semakin meluas di organisasi. Hal ini disebabkan pentingnya sebuah organisasi menjadi efektif dan efisien dengan terus memperbaiki proses bisnisnya. Proses bisnis sendiri didefinisikan sebagai serangkaian aktivitas yang terstruktur atau semiterstruktur yang dilakukan dalam sekumpulan atau oleh dua atau lebih individu untuk mencapai tujuan bersama [KAH07]. Ada lima poin esensial dari definisi ini [KAH07]: 1. Proses bisnis terdiri atas sekumpulan oleh task (pekerjaan). Satu task tidak bisa dikategorikan dalam proses bisnis. 2. Proses bisnis itu terstruktur atau semi-terstruktur. Hal ini berarti ada sekumpulan lojik atau aturan yang mengatur keterurutan aktivitas. Aktivitas tidak dijalankan secara ad hoc. 3. Task dapat muncul dalam serial atau paralel. 4. Harus ada setidaknya dua atau lebih individu atau aplikasi yang terlibat sebagai pemain dalam melakukan tugas yang berbeda untuk sebuah proses. 5. Sekumpulan task harus memiliki tujuan, sehingga dapat dinilai untuk optimalisasi berikutnya dengan melihat keberhasilan mencapai tujuan atau tidak. Seperti dijelaskan pada poin nomor empat di atas, proses bisnis dewasa ini tidak seluruhnya dijalankan secara manual oleh manusia. Sebagian dijalankan dengan bantuan sistem lain. Konversi dari aktivitas sebuah organisasi dari manual atau setengah terkomputerisasi menjadi terotomasi penuh disebut business process automation [NEW04].
2.1.2 Tujuan Tujuan dari BPM seperti yang dituliskan pada [NEW04] adalah sebagai berikut. 1. Mengurangi ketidakcocokan antara kebutuhan perusahaan dengan sistem teknologi informasi yang terimplementasi dengan memungkinkan pihak analis bisnis memodelkan proses bisnis dan membiarkan bagian teknologi informasi (misal:
II-1
II-2 sebuah divisi atau departemen) menyediakan infrastruktur untuk mengeksekusi dan mengontrol proses bisnis tersebut. 2. Meningkatkan produktivitas pegawai dan mengurangi biaya operasional dengan mengotomatisasi dan melancarkan proses bisnis 3. Meningkatkan agility dan fleksibilitas pada perusahaan dengan secara eksplisit memisahkan antara logika proses dari aturan bisnis dan merepresentasikan proses bisnis dalam bentuk yang mudah diubah jika terjadi perubahan kebutuhan. 4. Mengurangi biaya pengembangan dan usaha dengan menggunakan bahasa pemrograman high level yang memungkinkan analis bisnis dan pengembang secara cepat membangun dan memperbaharui sistem teknologi informasi dalam domain permaslahan tertentu
2.1.3 Business Process Management System (BPMS) Dikarenakan saat ini peran teknologi informasi sudah semakin penting dalam sebuah organisasi, konsep BPM banyak dikaitkan dengan penerapannya pada perangkat lunak yang digunakan oleh organisasi tersebut. Pada dasarnya konsep BPM tidak menyangkut pada perangkat lunak saja, namun pada seluruh proses bisnis yang dilakukan oleh perusahaan. Untuk menunjang pengerjaan BPM pada perangkat lunak, terdapat sebuah teknologi yang disebut sebagai Business Process Management System (BPMS). 2.1.3.1
Komponen-Komponen BPMS
Menurut [NEW04], umumnya komponen yang ada di dalam BPMS adalah sebagai berikut: 1. Process Modeling. Kakas ini berfungsi memodelkan proses bisnis dalam bentuk visual. Kakas ini memungkinkan pihak yang tidak mengerti dalam hal implementasi, tapi terlibat penting dengan proses tersebut dapat memodelkan proses bisnis untuk dijalankan pada sistem. 2. Process Execution. Kakas ini menyediakan mesin untuk mengimpor model proses yang telah dimodelkan pada kakas process modeling untuk dapat dijalankan dalam sistem ini. Kakas ini juga bertanggung jawab menjalankan proses yang diimpor tersebut. Beberapa contoh tanggung jawab dari kakas ini adalah: •
Menghubungkan beberapa task dan mengeksekusinya di dalam keterurutan yang benar
•
Memberikan dan mengalamatkan task kepada pengguna yang berhak
•
Memantau status dari proses
II-3 •
Mengakses sistem IT lokal atau remote untuk mengambil informasi yang dibutuhkan proses, memperbaharui informasi yang dibuat oleh proses, dan mengeksekusi transaksi yang didefinisikan oleh proses
•
Mengawasi proses eksekusi, memberikan pemberitahuan saat business rule dilanggar, dan melaporkan permasalahan kepada supervisor atau manajer jika tidak dibenahi dalam jangka waktu tertentu.
Dikarenakan proses bisnis dapat berjalan dalam waktu yang lama, terkadang sebuah process engine dibutuhkan untuk mendukung beberapa versi di dalam sebuah proses 3. Process Monitoring. BPMS juga memiliki kakas untuk mengawasi proses bisnis yang berjalan. Beberapa kemampuan yang termasuk di sini adalah: •
Melihat laporan dari seluruh eksekusi proses
•
Melihat laporan dari seluruh proses yang komplit
•
Melihat status dari proses, apakah telah selesai atau masih berjalan
•
Menghentikan sementara proses dan menyambungnya lagi
•
Mengatur prioritas dari proses
4. Business Activity Monitoring (BAM). Komponen ini berfungsi untuk menganalisis kejadian dan informasi yang tersimpan mengenai proses bisnis untuk menyediakan feedback secara real-time untuk perbaikan proses bisnis. Keempat komponen tersebut digambarkan pada Gambar II-9.
Gambar II-1 Komponen Dasar BPMS [NEW04]
II-4 2.1.3.2
Contoh BPMS
Saat ini terdapat banyak sekali BPMS. Pada pembahasan ini akan dibahas tiga diantaranya, yaitu Intalio BPMS, jBoss jBPM, dan OpenESB. 1. Intalio BPMS Intalio BPMS Community Edition (CE) merupakan sebuah BPMS yang dikembangkan oleh Intalio. Pada Desember 2006 BPMS ini dirilis sebagai sebuah produk open source, sehingga membebaskan pengembang manapun untuk menggunakan dan mengajukan usulan untuk pengembangan perangkat lunak ini. Intalio BPMS CE terdiri atas dua aplikasi utama, yaitu Intalio BPMS Designer dan Intalio BPMS Server. Intalio BPMS Designer berfungsi untuk merancang proses bisnis yang akan dieksekusi oleh Intalio BPMS Server, sementara BPMS Server berfungsi untuk mengeksekusi proses bisnis yang telah didefinisikan dan memberikan report terhadap hasil eksekusi tersebut. Intalio BPMS Server juga menyediakan dukungan untuk mengintegrasikan web services dalam proses bisnisnya. Perancangan yang difasilitasi oleh Intalio BPMS Designer dilakukan dengan notasi Business Process Modeling Notation (BPMN), yang akan dikonversi ke BPEL untuk dieksekusi. Selain fitur perancangan proses bisnis tersebut, BPMS ini juga menyediakan fitur untuk merancang form untuk proses bisnis yang melibatkan manusia. Intalio BPMS Designer dibangun di atas Eclipse STP. Eclipse STP merupakan IDE open source yang dapat dikembangkan sesuai kebutuhan. Aplikasi ini bersifat desktop based. Sementara Intalio BPMS Server dibangun dengan menggunakan Apache ODE (Orchestration Director Engine). Sebuah proyek dari Apache untuk mesin eksekusi BPEL. 2. jBoss jBPM Aplikasi jBoss jBPM adalah sebuah BPMS yang dikembangkan oleh jBoss. Seperti halnya Intalio, aplikasi ini terdiri atas aplikasi server yang mengeksekusi proses (jBPM Process Engine), dan sebuah aplikasi berbasis Eclipse untuk mendesain proses (jBPM Process Designer). Aplikasi jBPM Process Engine dapat digunakan sebagai pengintegrasi aplikasiaplikasi dalam sebuah enterprise, dan dapat juga dijadikan sebagai mesin eksekusi proses bisnis dalam sebuah aplikasi. jBPM Process Engine mendukung eksekusi proses yang didefinisikan dengan bahasa jPDL sebagai bahasa utama. Selain jPDL
II-5 juga disediakan ekstensi untuk dukungan eksekusi proses dalam bahasa BPEL. Namun pengembangan dukungan untuk bahasa ini masih dalam tahap beta. Aplikasi
jBPM
Process
Designer
yang
disediakan
oleh
jBPM
dapat
memvisualisasikan proses bisnis, namun terbatas dalam bahasa jPDL. Untuk eksekusi dengan BPEL, dibutuhkan pembuatan kode BPEL secara manual. 3. OpenESB Pada teknologi Java Enterprise Edition (JEE), terdapat sebuah standar yang digunakan untuk integrasi aplikasi, yaitu Java Business Integration (JBI). Standard ini digunakan untuk mengintegrasikan berbagai jenis aplikasi yang berada dalam platform yang berbeda. Teknologi JBI digunakan untuk menerapkan orkestrasi web service. Terdapat lima komponen JBI utama untuk lapisan ini, yaitu : 1. Process Modeler, berfungsi untuk melakukan perancangan terhadap proses bisnis yang akan dijalankan oleh perangkat lunak, dalam lingkungan JBI. Komponen ini akan menerima masukan berupa proses bisnis yang dituliskan dalam Business Process Modeling Notation (BPMN) dan mengubahnya menjadi bahasa BPEL, yang menjadi keluaran. Hasil keluaran ini nantinya akan digunakan oleh komponen process engine. 2. Process Monitoring, komponen ini berfungsi untuk memantau pekerjaan yang dilakukan oleh process engine. Dari komponen ini dapat dilihat proses bisnis apa saja yang bekerja, gagal, waktu eksekusi proses, dan fitur-fitur lainnya sesuai dengan kebutuhan sistem. Komponen ini akan diimplementasi menggunakan Java Management Extensions (JMX). 3. Process Engine, komponen ini berfungsi melakukan eksekusi dari proses bisnis sesuai dengan keluaran dari process modeler. 4. JBI Normalized Message Router, komponen ini berfungsi sebagai jalur untuk mengalirkan message dari satu komponen maupun service ke lainnya. 5. HTTP/SOAP Binding Component. Untuk menyambung setiap layanan dengan lingkungan JBI ini, maka digunakan binding component. Dikarenakan pada SOA telah disepakati untuk menggunakan SOAP sebagai format pesan, maka untuk memungkinkan seluruh service terintegrasi digunakan HTTP/SOAP Binding Component Untuk mengimplementasikan model ini dapat digunakan aplikasi OpenESB. Aplikasi ini telah mengimplementasikan lingkungan JBI mulai dari process modeler, process
II-6 engine, binding component, dan JBI message router. Komponen process monitoring tidak langsung diimplementasi oleh OpenESB, namun dapat dibangun dengan menggunakan teknologi Java Management Extension (JMX).
2.1.4 Business Process Modeling Notation (BPMN) Business Process Modeling Notation (BPMN) merupakan sebuah standard untuk memodelkan web service dan proses web service, yang diinisiasi oleh Business Process Management Initiative (BPMI) [OWE03]. BPMN terdiri atas sebuah diagram, yaitu Business Process Diagram (BPD). Tujuan dari pembuatan diagram ini adalah agar proses bisnis dapat mudah dimengerti dan dapat memodelkan proses bisnis yang sulit. BPMN merupakan satu-satunya inisasi dari BPMI yang dikembangkan saat ini. Selain BPMN, terdapat Business Process Modeling Language (BPML) dan Business Process Query Language (BPQL). [OWE03]. Diagram BPMN dirancang untuk dapat langsung dipetakan menjadi BPML, seperti physical data model dipetakan menjadi Data Definition Language (DDL). Salah satu BPML yang umum digunakan adalah Business Process Execution Language (BPEL). Contoh sebuah proses yang dimodelkan dalam BPMN dapat dilihat pada Gambar II-2 Proses Lelang Online [OWE03]Proses tersebut memodelkan lelang online.
Gambar II-2 Proses Lelang Online [OWE03]
II-7 Diagram BPMN terdiri atas elemen. Elemen ini terbagi atas empat kategori, yaitu Flow Object, Connecting Object, Swimlanes, dan Atrifacts. Berikut penjelasan dari masing masing elemen BPMN. 1. Flow Object, terdiri atas: a. Event direpresentasikan dalam bentuk lingkaran dan menjelaskan apa yang terjadi saat itu. Ada tiga jenis event, yaitu start, intermediate, dan end. Masing-masing mewakili kejadian dimulainya proses bisnis, interupsi proses bisnis, dan akhir dari proses bisnis. Untuk setiap jenis event tersebut sendiri terbagi atas beberapa jenis, misalnya message start, yang dilambangkan seperti start event namun mendapatkan tambahan lambang amplop di dalamnya, yang berarti ada pesan event tersebut dimulai dengan masuknya pesan.
Gambar II-3 Elemen start, intermediate, dan end event
b. Activity merepresentasikan pekerjaan (task) yang harus diselesaikan. Ada empat macam activity, yaitu task, looping task, sub process, dan looping subprocess. Keempatnya secara terurut diperlihatkan pada Gambar II-4.
Gambar II-4 Elemen-Elemen Activity
c. Gateway merepresentasikan pemecahan alur yang terdapat di dalam proses bisnis. Ada berbagai macam gateway, yaitu exclusive data based, exclusive event based, inclusive event based, dan parallel. Keempatnya secara terurut ditunjukkan dalam Gambar II-5.
Gambar II-5 Elemen-Elemen Gateway
2. Connecting Object, terdiri atas:
II-8 a. Sequence flow, merepresentasikan pilihan default untuk menjalankan proses b. Message flow, merepresentasikan aliran pesan antar proses c. Association, digunakan untuk menghubungkan elemen dengan artifact
Gambar II-6 Elemen sequence flow, message flow, dan association
3. Swimlanes. Elemen ini digunakan untuk mengkategorikan secara visual seluruh elemen dalam diagram. Ada dua jenis swimlanes, yaitu pool dan lane. Perbedaannya adalah lane terletak di bagian dalam pool untuk mengkategorisasi elemen-elemen di dalam pool menjadi lebih spesifik.
Gambar II-7 Pool dan Lane
4. Artifacts. Elemen ini digunakan untuk memberi penjelasan di diagram. Elemen ini terdiri atas tiga jenis, yaitu: a. Data object, digunakan untuk menjelaskan data apa yang dibutuhkan dalam proses b. Group, untuk mengelompokkan sejumlah aktivitas di dalam proses tanpa mempengaruhi proses yang sedang berjalan c. Annotation, digunakan untuk memberi catatan agar diagram menjadi lebih mudah dimengerti
Gambar II-8 Elemen data object, group, dan annotation
II-9
2.2 Service-Oriented Architecture (SOA) Sebelum memahami mengenai pengertian SOA, ada baiknya untuk mengetahui definisi service terlebih dahulu. Service dalam lingkup SOA merupakan sekumpulan fungsi, prosedur, atau proses yang akan memberi respon jika diminta oleh sebuah client. SOA adalah sebuah bentuk teknologi arsitektur yang mengikuti prinsip-prinsip serviceorientation (berorientasi service) [ERL05]. Konsep service-orientation ini melakukan pendekatan dengan membagi masalah besar menjadi sekumpulan service kecil yang bertujuan untuk menyelesaikan permasalahan tertentu. SOA tidak terkait dengan suatu teknologi tertentu, tapi lebih ke arah pendekatan untuk pembangunan perangkat lunak yang moduler. Untuk lebih jelasnya, konsep dari service-oriented ini akan dijelaskan pada bagian berikut.
2.2.1 Konsep Service-Oriented Seperti telah dijelaskan sebelumnya, service-oriented merupakan sebuah pendekatan dalam penyelesaian masalah besar dengan membaginya menjadi sekumpulan layanan (service) kecil yang menyelesaikan permasalahan spesifik. Istilah ini telah ada cukup lama dan telah digunakan untuk berbagai macam konteks permasalahan dan tujuan tertentu [ERL05]. Contoh dari dekomposisi permasalahan menjadi sekumpulan service ini dapat dilihat dalam kasus pemesanan makanan di restoran. Misalkan seorang pelanggan ingin memesan makanan, maka ia akan memanggil pelayan di restoran tersebut untuk mencatatan pesanan, lalu pelayan tersebut memberikan pesanan kepada dapur untuk dimasak. Setelah makanan yang dimasak telah jadi, makanan tersebut akan diantar ke pelanggan oleh pelayan. Dengan pendekatan service-oriented, penyelesaian masalah itu dapat dibagi menjadi sekumpulan service berupa pemesanan makanan, pengantaran pesanan ke dapur, pembuatan makanan di dapur, dan pengantaran makanan ke pelanggan. Selain definisi yang dijelaskan sebelumnya, service sendiri dapat dipandang sebagai enkapsulasi lojik dari satu atau sekumpulan aktivitas tertentu. Bila dicontohkan dalam sebuah otomasi bisnis, service dapat dilihat pada Gambar II-9. Otomasi bisnis merupakan sekumpulan aktivitas yang disusun dalam langkah-langkah sebagai implementasi proses bisnis. Seperti dapat dilihat pada Gambar II-9, lingkup dari service tidak terbatas, service dapat mengenkapsulasi sebuah proses besar atau hanya satu langkah proses kecil. Hal ini dapat disesuaikan tergantung kebutuhan. Misalkan bila dicontohkan dalam kasus pemesanan makanan sebelumnya, sebuah service pembuatan makanan di dapur dapat didekomposisi lagi
II-10 menjadi beberapa langkah. Misalkan penyediaan bahan, pemeriksaan keberadaan bahan, proses masak, dan sebagainya. Setelah seluruh permasalahan dapat dibagi dalam beberapa service, solusi dari permasalahan tersebut harus bisa diselesaikan dengan memungkinkan seluruh service berpartisipasi dalam sebuah orkestrasi. Untuk itu ada beberapa permasalahan yang harus dimiliki oleh service, yaitu bagaimana service berhubungan, bagaimana service berkomunikasi, bagaimana service didesain, dan bagaimana pesan antar service didefinisikan [ERL05].
Gambar II-9 Enkapsulasi business process dengan service
Pembagian berdasarkan service ini sesungguhnya bukan sesuatu yang baru, karena telah banyak diterapkan. Namun hal baru dari pendekatan service-oriented ini terkait dengan sifatsifat yang dimilikinya [ERL05], yaitu: 1. Loosely coupled, yaitu setiap service berdiri sendiri secara independen dan tidak tergantung service lain untuk berjalan. Ketergantungan diminimalisir sehingga hanya butuh mekanisme komunikasi satu sama lain. 2. Service contract, yaitu setiap service memiliki kesepakatan mengenai cara untuk komunikasi 3. Autonomy, yaitu service memiliki hak penuh terhadap semua lojik yang dienkapsulasi 4. Abstraction, yaitu service tidak memperlihatkan bagaimana lojik diimplementasi di dalamnya. 5. Reusability, yaitu lojik dibagi menjadi sekumpulan service yang dapat memudahkan reuse. 6. Statelessness, yaitu service tidak memiliki status tertentu terkait dengan aktivitas yang dilakukannya.
II-11 7. Discoverability, yaitu service didesain untuk deskriptif sehingga bisa ditemukan dan diakses melalui mekanisme pencarian tertentu.
2.2.2 Komponen-Komponen SOA Bila dilihat pada penjelasan sebelumnya, SOA terdiri atas sekumpulan service. Namun sekumpulan service tidak cukup untuk membentuk sebuah arsitektur ini. Menurut [ERL05], SOA terdiri atas empat komponen, yaitu: 1. Message, yaitu data yang dibutuhkan untuk menyelesaikan sebagian atau sebuah unit kerja, yang dipertukarkan antara satu service dengan yang lainnya 2. Operation, yaitu fungsi-fungsi yang dimiliki oleh sebuah service untuk memproses message hingga menghasilkan sesuatu. Fungsi-fungsi inilah yang nantinya akan saling berinteraksi untuk menyelesaikan sebuah unit kerja 3. Service, merepresentasikan sekumpulan operation yang berhubungan untuk menyelesaikan sekumpulan unit kerja yang berhubungan 4. Process, merupakan business rule yang menentukan operasi mana yang digunakan untuk mencapai tujuan tertentu. Ilustrasi dari keempat komponen ini dapat dilihat pada Gambar II-10.
Gambar II-10 Ilustrasi Operations dan Services [ERL05]
Komponen-komponen tersebut terhubung satu sama lain dengan deskripsi sebagai berikut [ERL05]: 1. Sebuah operation mengirim dan menerima message untuk mengerjakan sesuatu 2. Sebuah operation kebanyakan didefinisikan oleh message yang memprosesnya 3. Sebuah service mengelompokkan sekumpulan operation yang berhubungan 4. Sebuah service didefinisikan oleh operation yang membentuknya 5. Sebuah instans dari service dapat mengkomposisi service lain 6. Sebuah instans dari process tidak harus didefinisikan oleh service karena mungkin hanya membutuhkan sebagian dari fungsionalitas yang diberikan oleh service
II-12 7. Sebuah instans dari process memicu sekumpulan operation berjalan untuk menyelesaikan proses otomasi 8. Setiap instans dari process didefinisikan secara parsial operation yang digunakannya Ilustrasi dari keterhubungan seluruh komponen ini dapat dilihat dari Gambar II-11.
Gambar II-11 Keterhubungan antar komponen SOA [ERL05]
2.2.3 Layering pada SOA Perangkat lunak yang tidak menggunakan SOA secara umum dapat dibagi menjadi dua layer utama, yaitu application layer di mana aplikasi dijalankan dan business process layer yang mendeskripsikan bagaimana proses bisnis dalam perusahaan berjalan. Proses bisnis organisasi akan didefinisikan dalam aplikasi bersamaan dengan kode program yang bersifat teknis. Hal tersebut dapat dilihat pada Gambar II-12.
Gambar II-12 Business Logic dan Application Logic pada Enterprise [ERL05]
II-13 Dalam implementasi SOA, konsep service-oriented yang dipegangnya diimplementasikan dalam sebuah layer di antara business process layer dan application layer yang mana keduanya merupakan bagian dari enterprise logic. Layer tersebut dinamakan service interface layer, dan dapat dilihat pada Gambar II-13. Fungsi dari layer ini adalah mengenkapsulasi lojik yang ada di application logic, sekaligus business process yang ada di business logic. Dengan pendekatan ini, aplikasi bisa lebih dimodularisasi dan menggunakan berbagai macam teknologi. Seperti dapat dilihat pada Gambar II-13, teknologi .NET pada aplikasi A, J2EE pada aplikasi B, dan aplikasi C akhirnya akan dienkapsulasi oleh service interface layer. Service interface layer ini juga terbagi atas berbagai lapisan abstraksi, yaitu application service layer, business service layer, dan orchestration service layer. Ilustrasi dari ketiganya dapat dilihat pada Gambar II-14.
Gambar II-13 Implementasi layer pada enterprise [ERL05]
2.2.3.1
Application Service Layer
Application service layer. menyediakan sekumpulan service yang spesifik untuk mengenkapsulasi teknologi tertentu yang terdapat di dalam application logic. Service yang disediakan dalam layer ini akan melakukan abstraksi terhadap semua lojik yang tidak terkait
II-14 dengan proses bisnis, namun dibutuhkan untuk menjalankan fungsi-fungsi yang ada di proses bisnis tersebut. Misalkan sebuah proses bisnis mengandung aktivitas notifikasi yang mengharuskan pengiriman email kepada pihak yang dinotifikasi, maka application service layer menyediakan layanan untuk mengirimkan email. 2.2.3.2
Business Service Layer
Business service layer merepresentasikan business logic dari aplikasi. Layer ini bisa diibaratkan sebagai controller dari application service layer. Pada business service layer inilah fungsi-fungsi bisnis, yang berupa aktivitas-aktivitas yang dilakukan untuk menjalankan proses bisnis disediakan. Aktivitas-aktivitas tersebut akan menjalankan fungsi-fungsi yang ada di application service layer jika dibutuhkan. Layer ini sendiri menyediakan abstraksi kepada pengguna layanannya mengenai fungsi-fungsi bisnis yang ada, sehingga tidak perlu melihat bagaimana application logic dijalankan di sana. Ada dua macam service yang mungkin disediakan oleh business service layer, yaitu: 1. Task-centric, yaitu sebuah service yang mengenkapsulasi lojik tertentu dalam proses bisnis yang melibatkan satu atau dua entitas bisnis. Service jenis ini memiliki potensi reuse yang terbatas, namun proses analisis untuk menghasilkannya akan lebih mudah 2. Entity-centric, yaitu service yang mengenkapsulasi lojik yang sifatnya spesifik terhadap entitas bisnis tertentu. Service jenis ini sangat baik dalam reusability, namun proses analisis yang dibutuhkan untuk menghasilkannya lebih sulit. 2.2.3.3
Orchestration Service Layer
Orchestration service layer merupakan sebuah layer yang menyediakan abstraksi dengan level tertinggi dari aplikasi. Pada layer ini semua proses bisnis yang ada di dalam sistem didefinisikan dan dijalankan dengan menggunakan fungsi-fungsi yang terdapat pada business service layer.
II-15
Gambar II-14 Abstraksi dari service interface layer [ERL05]
2.2.4 SOA dan Web Services Seperti telah dijelaskan sebelumnya, untuk mengimplementasikan sebuah service, terdapat beberapa isu utama, yaitu bagaimana service berkomunikasi, bagaimana service didesain, dan bagaimana pesan antar service didefinisikan. Web Service merupakan sebuah teknologi yang dapat memenuhi kebutuhan ini. Teknologi ini juga telah jamak dipakai untuk membangun aplikasi berbasis SOA. Malah dengan penggunaan web services ini, potensi-potensi SOA baru dapat dimunculkan. Hal inilah yang menyebabkannya sering identik dengan SOA. Selain pengaruh dari teknologi web services, ekstensi dari teknologi ini, yang biasa disebut dengan WS-*, juga memberikan pengaruh terhadap perkembangan SOA. Akibatnya, SOA semakin identik dengan web services. Atas dasar ini Thomas Erl dalam [ERL05] menyebutnya sebagai contemporary SOA. Contemporary SOA merupakan SOA yang menggunakan web services dan XML dalam implementasinya. Untuk selanjutnya, yang disebut sebagai SOA adalah contemporary SOA. Bagaimana Web Services sebagai sebuah teknologi dapat memfasilitasi beberapa isu perancangan tersebut dijelaskan sebagai berikut: 1. Sebuah service dalam SOA adalah sebuah aplikasi web service. Pada dasarnya sebuah service di dalam SOA adalah sebuah aplikasi. Aplikasi ini merepresentasikan sebuah business logic atau automation logic dari sebuah proses sistem besar yang mencakupinya. Tuntutan dari sistem ini adalah dia harus bisa berdiri sendiri dan bisa berkomunikasi satu sama lain. Hal itu sudah dimiliki oleh
II-16 sebuah aplikasi web services. Maka dari itu, implementasi service dalam SOA merupakan aplikasi web services. 2. Hubungan satu service dengan yang lainnya didefinisikan dengan Web Service Description Language (WSDL)
Gambar II-15 Peran WSDL dalam hubungan antar service [ERL05]
WSDL mendeskripsikan bagaimana format sebuah pesan yang akan dikirim oleh sebuah aplikasi web service harus ditulis, agar dapat dimengerti oleh aplikasi web services lainnya yang menerima. Dalam sudut pandang SOA, yang menggunakan web services
sebagai
service,
teknologi
WSDL
ini
menjadi
jembatan
untuk
menghubungkan sebuah service ke service lainnya. Ilustrasi hubungan ini dapat dilihat pada Gambar II-15. 3. Service berkomunikasi satu sama lain menggunakan SOAP messaging. Kebutuhan untuk saling berkirim pesan dalam SOA merupakan hal yang paling penting. Untuk teknologi perngiriman pesan, kita dapat menggunakan SOAP. Hal ini dikarenakan SOAP fleksibel dan dapat diperluas. Seperti telah dijelaskan sebelumnya, teknologi WS-* memberikan peran terhadap berkembangnya SOA fundamental, hingga menjadi contemporary SOA. Salah satu permasalahan pada SOA yang dapat diselesaikan oleh teknologi ini adalah pembuatan proses bisnis, dengan WS-BPEL. Untuk mengkomposisi sekumpulan web services menjadi sebuah workflow, dibutuhkan sebuah standar. Hal ini dimungkinkan dengan adanya WS-BPEL atau BPEL4WS. Ekstensi web service ini memiliki bahasa yang bisa dikompilasi dan dijalankan oleh aplikasi yang mendukung orkestrasi. Ekstensi ini membawa web service ke dalam integrasi enterprise.
2.2.5 Analisis dan Perancangan SOA Implementasi dari SOA membutuhkan pendekatan yang berbeda dengan pembangunan perangkat lunak umumnya. Saat ini perangkat lunak banyak dibangun dengan pendekatan
II-17 object oriented. Implementasi dari SOA juga diterapkan dengan membangun secara object oriented, namun menggunakan analisis dan perancangan berorientasi objek saja tidak cukup untuk membangun SOA, karena sifatnya terlalu low level [ZIM04]. Sebelum melangkah ke identifikasi kelas dan objek seperti yang dilakukan pada analisis dan perancangan berorientasi objek, terlebih dahulu harus dilakukan analisis di level yang lebih tinggi yaitu analisis dan perancangan service. Aktivitas yang dilakukan pada tahap ini adalah bagaimana mengidentifikasi service apa saja yang bakal diimplementasikan, operasi apa saja yang dikandungnya, dan teknologi apa saja yang diterapkan nantinya. Setelah service teridentifikasi, baru analisis dan perancangan pada level kelas dapat dilakukan. Salah satu pendekatan yang diajukan adalah Service-Oriented Analysis and Design yang diusulkan pada [ERL05]. Pendekatan ini memberikan sejumlah langkah-langkah untuk mengimplementasikan SOA. 2.2.5.1
Service-Oriented Analysis
Service-Oriented Analysis bertujuan untuk mengidentifikasi service apa saja yang akan dibangun dan lojik apa saja yang akan dienkapsukasi. Kumpulan lojik yang akan dienkapsulasi direpresentasikan dalam operasi yang dikandung oleh setiap service tersebut. Adapun tiga langkah utama yang terdapat pada analisis ini adalah: 1. Mendefinisikan lingkup dari proses analisis, yaitu mendefinisikan proses apa saja yang akan dianalisis dalam implementasi 2. Mengidentifikasi sistem yang telah ada. Kebanyakan implementasi SOA merupakan integrasi dari aplikasi-aplikasi yang ada sebelumnya. Oleh karena itu, identifikasi sistem lain yang terkait harus dilakukan terlebih dahulu 3. Memodelkan kandidat service. Hasil requirement pada dua sebelum lalu dimodelkan dalam bentuk kumpulan service. Ada beberapa pendekatan yang dilakukan untuk memodelkan service tersebut, yaitu task-centric, entity-centric, dan gabungan antara keduanya. 2.2.5.2
Service-Oriented Design
Service-Oriented Design bertujuan untuk membentuk rancangan dari hasil analisis yang telah dilakukan sebelumnya. Beberapa pertanyaan penting yang harus terjawab pada tahap ini adalah bagaimana definisi service interface diturunkan dari kandidat service yang dimodelkan pada fase analisis, karakteristik SOA apa saja yang harus diimplementasi, standar industri apa saja yang dibutuhkan untuk implementasi. Adapun langkah-langkah yang dilakukan pada tahap ini adalah:
II-18 1. Mengkomposisi SOA, yaitu mendefisikan sekumpulan service dan memilih teknologi terbuka yang mendukung layer-layer tersebut. 2. Merancang service, tujuannya adalah mengubah dari kandidat service yang dihasilkan pada analisis menjadi service yang siap diimplementasi dengan web service yang mengenkapsulasi lojik yang tepat, dan memenuhi requirement. 3. Merancang proses bisnis berorientasi service, tujuannya adalah untuk membentuk orchestration layer. Hasil dari proses ini adalah workflow logic yang dapat dieksekusi.
2.3 Web Services Web services adalah sistem pertukaran informasi berbasis XML yang menggunakan internet untuk interaksi antara aplikasi [ION07]. Teknologi ini merupakan standar yang diadopsi oleh banyak vendor perangkat lunak, karena memiliki standar terbuka. Standar terbuka ini yang memungkinkan aplikasi web service yang diimplementasi oleh vendor berbeda dapat berkomunikasi satu sama lain. Perkembangan web services yang begitu cepat menyebabkan lahirnya ekstensi-ekstensi web services yang memperluas fungsi web services itu sendiri. Untuk membedakan web services dasar dengan ekstensi-ekstensinya, maka keduanya dibedakan menjadi web service generasi pertama dan web services generasi kedua. Pada pembahasan berikut akan diulas keduanya serta salah satu ekstensi yang akan digunakan pada tugas akhir ini, yaitu WS-BPEL.
2.3.1 Web Services Generasi Pertama [ERL04] Web services generasi pertama adalah pondasi dari teknologi web services ini sendiri. Implementasi dari teknologi ini, yang berupa aplikasi web services, 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. Sebuah aplikasi web service tentunya tidak dapat langsung diketahui bagaimana penggunaannya. Oleh karena itu, aplikasi ini harus menyediakan deskripsi service. Untuk deskripsi ini, web service juga memiliki standar terbuka yaitu WSDL (Web Service Description Language). Standard web service juga menyediakan mekanisme pencarian aplikasi web service, yaitu UDDI (Universal Description Discovery and Integration). UDDI ini dapat dianalogikan sebagai catalog web service di dunia maya, sehingga memungkinkan sebuah aplikasi web service dapat menemukan aplikasi lain yang dibutuhkan. Namun penggunaan UDDI sendiri
II-19 saat ini belum banyak diadopsi. Gambaran umum dari standar-standar tersebut dapat dilihat pada Gambar II-16.
Gambar II-16 Keterhubungan Antar Komponen Web Services [ERL04]
Spesifikasi web service seperti yang dijelaskan sebelumnya merupakan dasar dari aplikasi web services, yang dapat disebut sebagai web services generasi pertama. Penjelasan lebih lanjut dari WSDL, SOAP, dan UDDI dapat dilihat sebagai berikut 2.3.1.1
Web Service Description Language (WSDL)
Web Services Description Language (WSDL) adalah bahasa berbasis XML yang digunakan untuk mendeskripsikan web services [ERL04]. Adanya WSDL memungkinkan kita mengatahui jenis deskirpisi layanan yang disediakan dan fungsi-fungsi apa saja yang dimiliki sebuah aplikasi web service. Struktur umum dari WSDL adalah sebagai berikut [ERL04]: <definitions>
… … <message> <part> … … <service> <endpoint> … …
…
II-20 Penjelasan dari elemen-elemen yang ada di dalam bahasa ini dijelaskan sebagai berikut 1. Elemen
interface merepresentasikan interface dari web service, dan terdiri atas
operasi-operasi yang dimiliki oleh web service dengan tag operation 2. Elemen message merepresentasikan semua input dan output message dari operation. Sebuah message dapat terdiri atas satu parameter atau lebih. Untuk itu digunakan komponen part 3. Elemen service menyimpan koleksi dari endpoint, yang menyimpan alamat fisik dan informasi protokol. Setiap komponen endpoint dapat mereferensi elemen binding, dan lalu dihubungkan dengan informasi endpoint pada operasi tertentu 4. Elemen binding mengasosiasikan dirinya dengan konstruksi operation 2.3.1.2
Simple Object Access Protocol (SOAP)
Simple Object Access Protocol merupakan protokol untuk menukarkan pesan berbasis XML dalam jaringan komputer [ERL04]. Umumnya SOAP melalui protokol HTTP. Struktur pesan SOAP adalah sebagai berikut [ERL04]. <env:Envelope xmlns:env=”http://www.w3.org/2003/05/soap-envelope”> <env:Header> … <env:Body> …
Elemen envelope membentuk dokumen pesan terdiri atas bagian body dan header. Elemen header sifatnya opsional. Penggunaan header umumnya adalah untuk implementasi ekstensi SOAP dan data-data tambahan, sementara body bertujuan untuk menyimpan pesan. 2.3.1.3
Universal Description Discovery and Integration (UDDI)
Universal Description Discovery and Integration (UDDI) adalah registry berbasis XML yang bersifat platform-independent [ERL04]. UDDI memungkinkan sebuah bisnis untuk mempublikasikan service mereka sehingga aplikasi mereka dapat digunakan oleh aplikasi lainnya. UDDI mengorganisasikan registry dalam enam tipe data [ERL04]: 1. Business Entity, menyimpan
informasi profil mengenai bisnis yang disimpan,
termasuk nama, deskripsi, dan unique identifier. 2. Business Service, merepresentasikan layanan aktual yang ditawarkan oleh bisnis terdaftar, disimpan dalam elemen businessEntity 3. Specification Pointers, menyimpan alaman dari business service ke informasi implementasi, disebut juga binding components
II-21 4. Service types, menyediakan informasi dari definisi inter 5. Business relationships, direpresentasi dengan publisherAssertion, menyimpan hubungan antara entitas bisnis dengan yang lainnya 6. Subscriptions, direpresentasi dengan elemen subscription, memungkinkan subscriber mendapatkan notifikasi saat profil business entity diperbaharui.
2.3.2 Web Service Generasi Kedua [ERL04] Perkembangan teknologi web services berlanjut pada munculnya ekstensi-ekstensi dari web service, yang biasa disebut second generation web services atau WS-* [ERL04]. Ekstensi ini merupakan pengembangan dari teknologi web services dasar yang muncul disebabkan kebutuhan-kebutuhan yang ada di dalam enterprise. Adapun beberapa ekstensi yang jamak digunakan adalah WS–Coordination, WS–Transaction, Business Process Execution Language for Web Services (BPEL4WS atau WS-BPEL), WSReliableMessaging,
WS–Addressing,
WS–Policy,
WS–PolicyAssertions,
WS–
PolicyAttachments, WS –Attachments, dam SOAP with Attachments (SwA). Perkembangan dari teknologi ekstensi ini tidak berhenti pada ekstensi-ekstensi yang ada di atas. Seiring dengan berjalannya waktu, standar ini akan terus berkembang.
2.3.3 WS-BPEL WS-BPEL adalah ekstensi web services yang digunakan untuk memfasilitasi proses pemodelan dan eksekusi BPEL (Business Process Execution Language) dalam web services. BPEL sendiri merupakan sebuah bahasa pemodelan berformat XML yang digunakan untuk mendeskripsikan proses bisnis. Model yang dihasilkan oleh bahasa ini nantinya dapat dieksekusi oleh engine BPEL. WS-BPEL pertama kali disusun pada Juli 2002 dengan rilis versi 1.0. Bahasa ini dibangun berdasarkan Web Services Flow Language (WSFL) dari IBM dan spesifikasi XLANG dari Microsoft [ERL04]. Saat ini perkembangan bahasa ini telah mencapai versi 2.0 dan pengembangannya dipegang oleh OASIS. Struktur umum dari bahasa ini digambarkan sebagai berikut: [ERL04] <process> <partnerLinks> ...
... <sequence>
... ...
II-22 Penjelasan dari elemen-elemen yang ada di dalam bahasa ini akan dijelaskan sebagai berikut. 1. Process. Process merupakan elemen utama dari BPEL. Nama proses didefinisikan di sini dengan atribut name. Selain itu tag ini digunakan juga untuk memasukkan infromasi yang terkait definisi proses. 2. partnerLink dan partnerLinks. Elemen ini mendefinisikan tipe port dari service lain yang ikut berpartisipasi dalam eksekusi dari proses bisnis. 3. variables. Elemen ini digunakan untuk menyimpan informasi status yang digunakan selama workflow logic berjalan. 4. sequence. Elemen ini mengorganisasikan sekumpulan aktivitas sehingga bisa dieksekusi dalam keterurutan. Adapun elemen-elemen yang didukung WS-BPEL untuk sequence diantaranya recieve, assign, invoke, dan reply. Selain empat elemen utama di atas, WS-BPEL juga memfasilitasi sejumlah tag lain. Standar dari BPEL ini didefinisikan oleh OASIS dan dapat diperoleh di website OASIS.