Windows Workflow Foundation Sebagai Salah Satu Dasar Implementasi Orchestarian SOA (1)

Service Oriented Architecture atau dikenal dengan SOA, beberapa tahun ini seperti menjadi trend dikalangan pengembang system sekala besar. Memang dengan menggunakan konsep SOA, pengembang dipermudah dalam hal fleksibelitas terutama di perubahan bisnis proses, yang boleh jadi ini menjadi momok bagi pengembang system. Dalam pengembangan konsep SOA,  dikenal dengan adanya konsep Orchestarian, yang menggambarkan pengaturan suatu system komputasi yang komplek yang terdiri atas midletier dan service secara otomatis,terkoordinasi dan termanage. Dikatakan sebagai orchestra, karena sama dengan orchestra di musik, dimana seorang konduktor dalam hal ini adalah system analist, menggabungkan berbagai macam jenis alat musik yaitu service dan aplikasi midletier lainnya, menjadi komposisi suatu musik, atau system yang harmoni dan terkontrol. Dimana perubahan nada , direpresentasikan berupa Bisnis Proses dapat di imbangi oleh berbagai macam alat musik atau service yang ada. Saat ini sudah banyak aplikasi-aplikasi  bantu untuk mempermudah managemen SOA, mulai dari BPEL nya SUN/ORACLE, BIZZTALK disisi Microsoft, WEBSPHERE dari IBM dan lain sebagainya yang mana semuannya adalah “hanya”  berupa alat bantu. Inti dari segala yang ada adalah proses dalam hal ini yang berperan dalam proses adalah service atau aplikasi midletier lainnya .  Ada suatu pendapat yang pernah saya baca yang dapat menjadi masukan sebelum kita melangkah ke implementasi SOA

SOA seringkali disamakan dengan Web Services, padahal keduanya adalah hal yang sangat berbeda. SOA merupakan konsep pengembangan perangkat lunak yang melakukan partisi sistemnya menjadi beberapa servis yang dapat berdiri secara independen, sementara Web Services merupakan aplikasi web yang berkomunikasi dengan aplikasi web services lainnya untuk tujuan pertukaran data. SOA tidak harus menggunakan Web Services untuk implementasinya, namun menggunakan Web Services untuk implementasi SOA, merupakan langkah yang baik, sebab teknologi Web Services sangat cocok untuk SOA.

Dari pernyataan tersebut kita dapat ambil kesimpulan bahwa inti dari konsep SOA adalah bagaimana kita memisah misah suatu system menjadi service – service.  Service adalah proses dari pekerjaan, dan untuk menjadi suatu system secara keseluruhan diperlukan suatu alur kerja atau alur proses yang di sebut dengan workflow atau yang kita kenal dalam keseharian dengan nama bisnis proses. Jadi  Apa itu workflow ? , Workflow adalah :

The automation of business processes, in whole or in part, during which documents, information or tasks are passed from one participant to another for action according to a set of procedural rules (Rob Allen, Chairman of Open Image Systems Inc., UK)

boleh jadi kalau diawal kita tadi membicarakan yang namanya Orchestra SOA, maka workflow adalah ajang dimana seorang system analist melakukan aransemen system sebelum melakukan orchestra. Nah sekarang bagaimana sebenarnya implementasi dari Workflow dan Service di aplikasikan ? Dikalangan pengembang system berbasis . NET,  terdapat teknologi yang dinamakan Windows Workflow Foundation atau disingkat WWF Atau WF dimana teknologi ini sudah relatif lama direlease oleh Microsoft dan sudah ada di Visual Studio 2008. Selanjutnya kita coba mempelajari kolaborasi antara Workflow Foundation dan Service dengan menggunakan tool Visual Studio 2010.

1. Memanggil Webservice dalam Workflow Foundation 

Ada sedikit perbedaan jika Windows Workflow Foundation (WWF) dikolaborasikan dengan Webservice Application (Webservice) dengan jika dikolaborasikan dengan Windows Communication Foundation (WCF),  kita akan coba satu persatu , kita awali dengan webservice yang relatif sederhana dahulu.

  • Kita akan buat Webservice , yaitu operasi matematika sederhana seperti penjumlahan, pengurangan, perkalian dan pembagian dengan dua parameter sebagaimana source berikut
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel

<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function tambah(ByVal x As Decimal, ByVal y As Decimal) As Decimal
        Dim hsl As Decimal
        hsl = x + y
        Return hsl
    End Function

    <WebMethod()> _
    Public Function kurang(ByVal x As Decimal, ByVal y As Decimal) As Decimal
        Dim hsl As Decimal
        hsl = x - y
        Return hsl
    End Function

    <WebMethod()> _
    Public Function kali(ByVal x As Decimal, ByVal y As Decimal) As Decimal
        Dim hsl As Decimal
        hsl = x * y
        Return hsl
    End Function

    <WebMethod()> _
    Public Function bagi(ByVal x As Decimal, ByVal y As Decimal) As Decimal
        Dim hsl As Decimal
        hsl = x / y
        Return hsl
    End Function
End Class
  • Jalankan , jika sukses selanjutnya kita publish ke IIS
  • Selanjutnya kita buat Workflow Foundation yang  akan memanggil webservice diatas, seperti biasa buka Visual Studio 2010 menu New Project→ Visual Basic →Workflow → WCF Workflow Service Foundation sebagai mana gambar berikut
New Project

New Project

  • Selanjutnya akan tampil area kerja seperti biasa sebagaimana gambar berikut

  • Selanjutnya Klik  bagian Sequential Service selanjutnya hapus komponen tersebut, rencananya kita akan menggunakna tipe flowchart untuk membuat service kita
  • Setelah komponen Sequential service dihapus , drug and drop Tool di kelompok flowchart →Flowchart masukkan ke daerah yang bertuliskan Drop Activity Here, selanjutnya akan tampil sebagaimana gambar berikut
  • Karena kita akan membuat Service berbasis WWF ,  yang diperlukan selanjutnya adalah menentukan  Message apa yang akan di terima oleh service kita dan message apa yang akan dihasilkan oleh service kita , Untuk itu masuk ke area toolbox →Messaging →Receive , drug & drop komponen tersebut, fungsi komponen tersebut adalah sebagai pintu input dan output dari service kita, atau dengan kata lain receive adalah header dari function yang akan kita buat , setelah kita drug & drop kita arahkan alur dari start ke arah komponen Receive sebagaimana gambar berikut
  • Selanjutnya kita beri nama pada properti operationname  dari komponen receive kita. Selanjutnya klik kanan Receive pilih property , masuk ke property CanCreateInstance, kita akan memberi nilai True untuk property ini yaitu dengan menyentang checkbox yang terdapat dalam property tersebut sebagaimana gambar berikut
  • Selanjutnya kita siapkan parameter fungsi dan variabel-variabel sebagai penampung sementara data, create variabel , kita siapkan variabel Var1 & Var2 bertipe decimal untuk penampung parameter dan hsl untuk penampung nilai kembalian, selanjutnya kita siapkan parameter fungsi kita, klik property content di komponen Receive,  Selanjutnya akan tampil windows baru , kita pilih parameter , selanjutnya kita akan membuat parameter-parameter untuk service kita  , kita siapkan 3 parameter untuk fungsi kita yaitu 2 bertipe decimal sebagai variabel operasi mastematika kita nanti dan 1 untuk parameter pemilihan jenis operasi matematika sebagaimana gambar berikut
  • Dari tampilan diatas dapat diartikan bahwa parameter param1 yang bertipe decimal  akan kita tampung di variabel var1 demikian juga param2 di var2  selanjutnya kita ok untuk kembali ke area kerja kita.
  • Selanjutnya kita akan memanggil webservice yang kita buat sebelumnya yang berisi  fungsi-fungsi matematika sederhana , sama dengan pemanggilan webservice lainnya dipemrograman basis .NET , kita tinggal klik kanan di solution , selanjutnya add web reference  selanjutnya kita isi dengan alamat webservice kita sebagaimana gambar berikut :

  • Selanjutnya kita siapkan variabel untuk menampung object dari service kita, create variabel selanjutnya untuk type variabel klik tipe , selanjutnya pilih Browse for types selanjutnya pilih type dari service kita sebagaimana gambar berikut :

  • Selanjutnya kita siapkan inisialisasi object di sisi variabel sebagaimana berikut :

  • Nah setelah ini kita siapkan service kita, pertama kita siapkan dahulu nilai kembalian dari service kita , caranya klik kanan pada komponen receive pilih create send reply selanjutnya akan terbentuk komponen sendreplytoreceive selanjutnya kita siapkan nilai dari output  service kita, klik content selanjutnya akan keluar windows content description rencana variabel hsl akan kita jadikan nilai kembalian dari service kita , maka kita isi type jenis message di content description di bagian message data  dengan nilai hsl  yaitu variabel nilai kembalian dan bagian message type  dengan system.decimal sebagaimana gambar berikut

  • Selama ini kita membuat program lebih banyak berupa source, atau dalam bentuk visual, di WWF kita membuat program seolah olah kita membuat flowchart, dimana kita menentukan alur dari system kita, sebab WWF didesain untuk organisasi service dan juga implementasi bisnis proses.  Kita akan coba membuat service dimana kita akan melakukan pengecekan isi parameter sts , kita masuk ke area kerja kita, masuk ke toolbox , masuk ke group flowchart , pilih komponen flowdecision ,  drug  and drop ke area kerja kita , selanjutnya isi properti condition dengan sts=1  sebagaimana gambar berikut

  • selanjutnya kita hubungkan receive ke flowdecision kita drug & drop 2 komponen a←b assign yang ada di toolbox primitives, selanjutnya isi di komponen pertama dengan hsl = servicex.tambah(var1,var2) dan untuk komponen 2 isi dengan hsl=servicex.kurang(var1,var2) selanjutnya untuk nilai true dari flowdecision hubungkan dengan komponen a←b assign  pertama dan nilai false hubungkan dengan komponen kedua, selanjutnya hubungkan kedua komponen tersebut ke komponen sendreplytoreceive sebagaimana gambar berikut

  •   Jika telah selesai , jalankan program kita , jika Ok, maka kita telah membuat satu service dari WCF Workflow Service Application dengan menghubungkan WWF dengan Webservice dan menghasilkan WCF .

Leave a comment