Sabtu, 18 Februari 2012



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

2. Koneksi Workflow Foundation dengan WCF
Artikel sebelumnya kita membahas bagaimana menghubungkan Windows Workflow Foundation  (WWF) dengan Webservice standard, selanjutnya kita coba untuk menghubungkan WWF dengan Windows Communication Foundation
  • Jalankan  Visual Studio 2008 keatas , selanjutnya new project pilih group WCF → WCF Service Application , kita akan membuat satu service sederhana untuk selanjutnya kita panggil di Workflow Foundation , kita akan coba membuat service operasi matemamtika sederhana, selanjutnya buat source code di interface WCF  sebagai berikut
<ServiceContract()>
Public Interface IService1
    <OperationContract()>
    Function tambah(ByVal cls As mathparam) As Decimal
    <OperationContract()>
    Function kurang(cls As mathparam) As Decimal
    <OperationContract()>
    Function kali(ByVal cls As mathparam) As Decimal
    <OperationContract()>
    Function bagi(ByVal cls As mathparam) As Decimal
End Interface
<DataContract()>
Public Class mathparam
    Private x1 As Decimal
    Private y1 As Decimal
    <DataMember()>
    Public Property x As Decimal
        Get
            Return x1
        End Get
        Set(ByVal value As Decimal)
            x1 = value
        End Set
    End Property
    <DataMember()>
    Public Property y As Decimal
        Get
            Return y1
        End Get
        Set(ByVal value As Decimal)
            y1 = value
        End Set
    End Property
End Class
Selanjutnya disisi implementasinya  sebagaimana code berikut :
Public Class Service1
Implements IService1
Public Sub New()
End Sub
Public Function tambah(ByVal cls As mathparam) As Decimal Implements IService1.tambah
Return cls.x + cls.y
End Function
Public Function kurang(ByVal cls As mathparam) As Decimal Implements IService1.kurang
Dim a As New mathparam
Return cls.x – cls.y
End Function
Public Function bagi(ByVal cls As mathparam) As Decimal Implements IService1.bagi
Dim a As New mathparam
Return cls.x / cls.y
End Function
Public Function kali(ByVal cls As mathparam) As Decimal Implements IService1.kali
Dim a As New mathparam
Return cls.x * cls.y
End Function
End Class
Sebagaimana mana artikel tutorial WCF setelah anda jalankan dan sukses selanjutnya publish ke IIS  sebagaimana biasa. Selanjutnya sebagaimana artikel terdahulu kita mulai dengan membuat project WCF Workflow Service Application,  Selanjutnya setelah keluar area kerja , kita tetap memilih menggunakan tipe flowchart ,  sebagaimana gambar berikut

Selanjutnya seperti kita akan mengambil service reference dari yang kita buat sebelumnya, sama dengan cara pengambilan service reference , kita tinggal klik kanansolution selanjutnya ada service reference, aka tampil windows sebagaimana berikut :

Selanjutnya klik tombol OK, setelah kita klik OK , akan tampil windows yang menyarankan kita untuk rebuild aplikasi sebagaimana gambar berikut

Klik Tombol OK, Setelah itu Rebuild dahulu aplikasi kita, setelah kita rebuild di toolbox akan keluar group baru yang berisi fungsi-fungsi dari WCF yang kita buat, sebagaiamana gambar berikut :

Jika sukses sebagaimana gambar diatas, kita siap mengimplementasikan fungsi-fungsi diatas ke Workflow kita. Kita kembali ke area kerja, Drug and Drop komponen Receive,Selanjutnya berinama pada bagian Operation Name , selanjutnya kita enable kanproperty CanCreateInstance sebagaimana gambar berikut


Kita buat variabel untuk penampung parameter service kita , create variabel sebagaimana gambar berikut ,

untuk variabel clsx untuk variable type kita pilih custom variabel dari class di service kitasebagaimana gambar berikut

pilih type class mathparam sesuai dengan nama dari datacontract  WCF kita. selanjutnya di colom default , kita inisialisasi class dengan perintah New WFServiceWCF.ServiceReference1.mathparam  . Untuk memasukkan parameter dariservice kita klik di Content dari komponen Receive  , kita akan membuat parameter sebagaimana gambar berikut
Setelah kita membuat parameter dan koneksi ke variabel sebagaimana gambar diatas,  klik tombol OK setelah kembali ke area kerja kita akan membuat output dari service dengan cara klik kanan komponen Receive selanjutnya pilih create sendreply akan terbentuk komponen SendReplyToReceive  , klik content  isi content Definition sebagaimana gambar berikut
klik tombol OK , akan kembali ke area kerja, masuk ke toolbox→flowchart, drug & dropkomponen FlowSwitch <T> , isi property expression dari komponen FlowSwitch <T> dengan variabel stsx , drug & drop fungsi-fungsi kita selanjutnya hubungkan fungsi-fungsi service kita dengan FlowSwitch <T>  sebagaimana gambar berikut
jika sudah sesuai dengan gambar diatas jalankan aplikasi Service kita
3. Testing Service 
Sebelum kita publish , kita pastikan service kita berjalan sesuai rencana, Setiap kita menjalankan service dengan menekan tombol Run  kita akan mendapatkan tampilanWindows sebagaimana berikut :
Double click nama fungsi service kita sesuai nama OperationName dalam gambar diatas kebetulan OperationName adalah Operasi3 setelah kita double click di nama fungsinya selanjutnya kita akan mendapati tampilan di sisi kanan selanjutnya pilih kolom valuedengan nilai bukan null selanjutnya akan tampil  sebagaimana berikut
Selanjutnya klik kolom name di nama service  kita , akan tampil parameter dari service kita, isi setiap parameter, selanjutnya tekan tombol Invoke  jika sukses akan tampil sebagaimana beikut

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 systemkomputasi yang komplek yang terdiri atas midletier dan service secara otomatis,terkoordinasi dan termanage. Dikatakan sebagai orchestra, karena sama denganorchestra di musik, dimana seorang konduktor dalam hal ini adalah system analist, menggabungkan berbagai macam jenis alat musik yaitu service dan aplikasi midletierlainnya, 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 MicrosoftWEBSPHERE dari IBM dan lain sebagainya yang mana semuannya adalah “hanya”  berupa alat bantu. Inti dari segala yang ada adalah prosesdalam 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 systemsebelum melakukan orchestra. Nah sekarang bagaimana sebenarnya implementasi dariWorkflow dan Service di aplikasikan ? Dikalangan pengembang system berbasis .NET,  terdapat teknologi yang dinamakan Windows Workflow Foundation atau disingkatWWF Atau WF dimana teknologi ini sudah relatif lama direlease oleh Microsoft dan sudah ada di Visual Studio 2008. Selanjutnya kita coba mempelajari kolaborasi antaraWorkflow 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 denganWindows 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 webservicediatas, 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 kelompokflowchart →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 messageapa yang akan dihasilkan oleh service kita , Untuk itu masuk ke areatoolbox →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 receivekita. 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 komponenReceive,  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 typesselanjutnya 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 keluarwindows content description rencana variabel hsl akan kita jadikan nilai kembalian dari service kita , maka kita isi type jenis message di content description di bagianmessage 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 membuatservice dimana kita akan melakukan pengecekan isi parameter sts , kita masuk ke area kerja kita, masuk ke toolbox , masuk ke group flowchart , pilih komponenflowdecision ,  drug  and drop ke area kerja kita , selanjutnya isi properti conditiondengan sts=1  sebagaimana gambar berikut
  • selanjutnya kita hubungkan receive ke flowdecision kita drug & drop 2 komponena←b assign yang ada di toolbox primitives, selanjutnya isi di komponen pertama dengan hsl = servicex.tambah(var1,var2) dan untuk komponen 2 isi denganhsl=servicex.kurang(var1,var2) selanjutnya untuk nilai true dari flowdecisionhubungkan 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 WWFdengan Webservice dan menghasilkan WCF .

Membuat Service Aplikasi Dengan WorkFlow Foundation (2)

2. Flowchart
Selain menggunakan lembarkerja berbasis sequential service, dalam workflow diagram kita juga dapat menggunakan basis flowchart, dimana kita membuat program seolah-olah membuat suatu diagram alur, hanya saja dapat langsung di compile menjadi suatu program. Adapun prosesnya sebagai berikut :
  • Buat project di visual studio 2010 seperti biasa, selanjutnya pilih bagianWorkflow selanjutnya pilih WCF Workflow Service Application, selanjutnya akan tampil sebagaimana gambar berikut :
      • Secara default Visual Studio, lembar kerjanya berbasis Sequential Service, selanjutnya kita dapat memakai basis flowchart , selanjutnya kita hapus sequential Service dari lembar kerja kita,
      • Selanjutnya kita masuk ke toolbox dan masuk ke bagian Flowchart, drug & Drop component flowchart dari toolbox group Flowchart kedalam area yang bertuliskan, Drop Activity Here selanjutnya lembar kerja akan menjadi seperti berikut :
      • Selanjutnya drop component receive yang ada di group messaging untuk membuat fungsi yang akan di jadikan service , tarik panah dari start ke component receive dan beri nama operation name dengan nama fungsi kita selanjutnya deklarasikan variabel-variabel untuk menyimpan parameter kita sebagaimana gambar berikut :
      • selain itu aktifkan properti CanCreateInstance sebagaimana gambar berikut :
      •  Selanjutnya klik kanan pada komponen receive pilih menu create sendreply fungsi ini untuk menetapkan nilai kembalian dari component receive otomatis akan membuat component SendReplyToReceive
      • Kita akan mencoba membuat proses penjumlahan , untuk itu kita masukan component A <- B Assign selanjutnya arahkan panah dari component receive ke component tersebut dan panah dari componenta<-b assign ke komponen SendReplyToReceive
      • selanjutnya diagram kita akan menjadi sebagaimana berikut :
      • Kita isi masing masing content dari receive dimana param1 kita assign to kan ke var1, param2 kita assign to ke var2 sebagaimana berikut :
      • Dan content di component SendReplyToReceive sebagaimana berikut :
      • Selanjutnya kita dapat jalankan aplikasi service kita, dan jika tidak ada error dapat membuat aplikasi client

Membuat Service Aplikasi Dengan WorkFlow Foundation (1)

Selain dapat membuat aplikasi berbasis console, kita juga dapat membuat suatu servicedengan menggunakan Workflow Foundation(WF), dengan menggunakan teknik WF, akan mempermudah kita dalam hal membuat service aplikasi.
    • Buka Visual Studio 2010 , Buat project baru , di bagian Recent Templatesmasuk ke bagian Visual Basic, selanjutnya masuk ke bagian WorkFlowdan pilih WCF Workflow Service Application
    • Akan terbuka area kerja sebagaimana berikut
  • Dari lembar kerja diatas ada 2 component  yang harus kita perhatikan yaitu :
    1. Receive request   :  Component  ini berfungsi untuk mendeklarasikan nama service dan parameter input untuk service yang akan kita bangun
    2. Send Response   :  Component  ini berfungsi untuk mendeklarasikan parameter output dari service yang kita bangun
  • Selanjutnya kita coba untuk membuat service , ada beberapa metode dalam kita membuat suatu program di Workflow Foundation , antara lain :
  1. CONTROL FLOW
Metode ini adalah metode standard dalam mmbuat Workflow Foundation, dimana syarat utamanya adalah kita siapkan component sequantial service selanjutnya kita inputkan receive request  &  Send response sebagaimana gambar diatas, selanjutnya mari kita mulai membuatnya .
  • Setelah Sequantial service kita drop di lembar kerja kita dan masukkan receive request & Send response
  • Klik receive request , dalam receive request ada 2 bagian yaitu :
    • Operationname yang fungsinya untuk mendeklarasikan nama dari service kita.
    • Content yang fungsinya untuk mendeklarasikan parameter untuk service kita
  • Ganti variabel dari operationname dari Getdata menjadi Operasi1 dari sini kita akan coba membuat suatu fungsi dengan nama Operasi1
  • Selanjutnya kita coba membuat parameter untuk fungsi Operasi1, coba click view message di variable Content selanjutnya akan tampil windows content definition sebagaimana gambar berikut :
Content Definition
Content Definition
  •  Ada 2 tipe content dalam content definition yaitu
    • Message     : Content ini digunakan jika service kita tidak memerlukan data dari parameter tapi langsung berupa data
    • Parameter  : Content ini digunakan untuk mendeklarasikan parameter dari suatu fungsi kita
  • Oke selanjutnya kita pilih content dengan tipe Parameter, dengan tipe ini kita dapat membuat beberapa parameter inputan bagi fungsi kita , stelah kita pilih radiobutton parameter selanjutnya akan tampil  tabel parameter sebagaimana gambar berikut
Content Definition - Parameter
Content Definition - Parameter
    • Saat kita memilih parameter , kita akan mendapatkan tabel yang terdiri dari 3 kolom yaitu :
      • Name        : Kolom ini fungsinya tempat dimana kita mendeklarasikan nama parameter
      • Type         : Kolom ini fungsinya tempat dimana kita mendeklariskan tipe parameter untuk parameter di kolom Name, Seluruh data type di VB.Net support di type parameter tersebut
      • Assign To : yaitu Kolom untuk menginisialisasi parameter ke variabel/parameter kita di WF
      Selanjutnya kita akan coba untuk membuat parameter, kita akan coba membuat 2 parameter untuk memanggil service kita yaitu param1 dengan type integer dan param2 yang juga bertype integer sebagaimana gambar berikut:
    • Selanjutnya kita buat variabel guna penyimpanan data dari nilai parameter, klik tab variabel di bawah kiri, selanjutnya kita buat variabel sebagaimana gambar berikut
    • Selanjutnya kita dapat edit content dari receiverequest, isi assign to dari param1 dengan prm1 dan param2 dengan prm2 , fungsinya adalah prm1 adalah variabel untuk menyimpan parameter param1 dan prm2 untuk menyimpan param2 , sebagaimana gambar berikut :
    • Selanjutnya kita akan membuat proses penjumlahan , dalam hal ini kita dapat menggunakan component A<-B Assigndrop kedalam sequential service, Selanjutnya isi pernyatan pertama dengan variabel hsl, dan pernyataan kedua dengan prm1+prm2 , sebagaimana gambar berikut :
    • Selanjutnya kita edit nilai content dari sendresponse, isi content message->data dengan hsl dengan datatype int sebagaimana gambar berikut
    • Run program kita  jika sukses maka selanjutnya kita dapat membuat aplikasi client seperti biasa

Mengakses Activedirectory Menggunakan VB.Net(3)

Reset Password
Untuk mereset password kita dapat menggunakan fungsi berikut :
Public Function setpassword(ByVal username As String, ByVal newpwd As String) As String
   Dim ousr, ousr1 As DirectoryEntry
   Dim CNName As String
   CNName = "cn=" & username
   Try
        ousr1 = New DirectoryEntry(strldappath, strdomain & "\" & strnameadmin, strpwdAdmin)
        Try
           ousr = ousr1.Children.Find(CNName, "user")
           ousr.Invoke("SetPassword", newpwd)
           ousr.CommitChanges()
           Return "Succes"
         Catch ex As Exception
           Return ex.Message
         End Try
      Catch ex As Exception
         Return ex.Message
       Finally
         ousr = Nothing
         ousr1 = Nothing
        End Try
    End Function
Intinya hampir sama dimana kita diwajibkan login sebagai administrator prosesnya ada pada perintah
ousr1 = New DirectoryEntry(strldappath, strdomain & “\” & strnameadmin, strpwdAdmin)
selanjutnya kita lakukan pencarian dari user yang akan kita ubah passwordnya
ousr = ousr1.Children.Find(CNName, “user”)
setelah ditemukan selanjutnya reset password dengan perintah
ousr.Invoke(“SetPassword”, newpwd)
ousr.CommitChanges()

Tidak ada komentar:

Posting Komentar