Chapter 16. Service-Oriented Design   Part IV Business Process Design         Oleh: Farid Ridho
Ada apa di bab ini?• WS-BPEL language basic• WS-Coordination overview• disain Business Process
WS-BPEL Language Basic• Bahasa berbasis XML• Mendefinisikan bisnis proses• Merupakan bahasa untuk orkestrasi
Struktur Umum WS-BPEL
Sejarah BPEL4WS dan WS-BPEL• BPEL4WS pertama kali disusun pada juli 2002  oleh tim gabungan IBM, Microsoft dan BEA ->  BPE...
Prasyarat• Pengetahuan dasar tentang orchestration,  coordination, atomic transactions dan  business process• Dibahas di b...
The process element (1)• Merupakan root elemen• Mempunyai atribut name• Untuk mendefinisikan proses
The process element (2)<process name="TimesheetSubmissionProcess"targetNamespace="http://www.xmltc.com/tls/process/" xmlns...
The partnerLinks and      partnerLink elements (1)• Berperan sebagai client pada proses• Bertanggungjawab melakukan invoke...
The partnerLinkType element (2)<definitions name="Employee"targetNamespace="http://www.xmltc.com/tls/employee/wsdl/" xmlns...
The partnerLinks and       partnerLink elements (2)<partnerLinks>   <partnerLink name="client"   partnerLinkType="tns:Time...
The partnerLinkType element (1)• Digunakan untuk setiap partner service yang  terlibat pada proses• Biasanya juga di-embed...
The variables element (1)• Menyimpan informasi yang berhubungan  dengan workflow logic• Keseluruhan pesan dan set data dal...
The variables element (2)<variables><variable name="ClientSubmission“messageType="bpl:receiveSubmitMessage"/> <variablenam...
The getVariableProperty and getVariableData functions (1)• getVariableProperty(variable name, property  name)  – Mengekstr...
The getVariableProperty and getVariableData functions (2)getVariableData (InvoiceHoursResponse,ResponseParameter)getVariab...
The sequence element (1)• Untuk mengatur serangkaian aktivitas agar  bisa dieksekusi secara berurutan (sequential)• Sebuah...
The sequence element (2)<sequence> <receive> ... </receive> <assign> ... </assign> <invoke> ... </invoke> <reply> ... </re...
The invoke element (1)• Menjelaskan operasi dari partner service yang  diinginkan (invoke) selama eksekusi• Pada elemen in...
The invoke element (2)<invoke name="ValidateWeeklyHours"partnerLink="Employee"portType="emp:EmployeeInterface"operation="G...
The receive element• Membuat informasi process service yang  diinginkan pada saat melakukan request• Process service sebag...
The receive element (2)<receive name="receiveInput“partnerLink="client"portType="tns:TimesheetSubmissionInterface"operatio...
The reply element (1)• Terdapat pada pertukaran synchronous• Bertanggungjawab untuk membuat detil dari  respon pesan yang ...
The reply element (2)<reply partnerLink="client"portType="tns:TimesheetSubmissionInterface"operation="Submit"variable="Tim...
The switch, case, and       otherwise elements (1)• Untuk menambahkan conditional logic pada  definisi proses• Mirip denga...
The switch, case, and      otherwise elements (2)<switch><case condition="getVariableData(EmployeeResponseMessage,Response...
The assign, copy, from, and        to elements (1)• Memiliki kemampuan untuk meng-copy  values diantara variable proses• M...
The assign, copy, from, and        to elements (2)<assign><copy><from variable="TimesheetSubmissionFailedMessage"/><to var...
faultHandlers, catch, and       catchAll elements• Digunakan untuk penanganan kondisi error• Dapat terdiri dari banyak ele...
faultHandlers, catch, and       catchAll elements<faultHandlers><catch faultName="SomethingBadHappened"faultVariable="Time...
Pembahasan WS-BPEL lebih lengkap• Silahkan kunjungi:http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.pdf
WS-Coordination Overview
WS-Coordination Overview• Mekanisme untuk manajemen konteks yang  dapat diterapkan untuk mendukung transaksi  yang atomic ...
WS-Coordination Overview•   The CoordinationContext element•   The Identifier and Expires elements•   The CoordinationType...
Service-oriented Business     Process Design
Disain Service-oriented
Overview• Menerjemahkan business process requirement  yang telah dikumpulkan dengan tepat dan  menerapkannya dengan akurat...
Process Service Design
Process Description
Case Study: TLSTimeSheet Submission   Process (Bab 12)
Service Design• Untuk menentukan   partner link pada   WS-BPEL>>
Service Composition
Service Candidate
Designing Business Process
Step by step1. Menyusun skenario interaksi antara process   service dengan partner service2. Merancang antarmuka process s...
1. Menyusun skenario interaksi• Tentukan requirement pertukaran pesan pada  process service dari informasi-informasi yang ...
Successful completion of theTimesheet Submission Process
A failure condition caused by an     authorization rejection
The incoming and outgoing request messages expected to be processed by the Timesheet        Submission Process Service ->
2. Merancang antarmuka process               service• Menentukan definisi service untuk process service• Dalam bentuk WSDL...
Case Study• Timesheet submission process hanya memiliki  satu operasi yang dijalankan oleh client yaitu  submit
Timesheet Submission Process       Service design
The abstract service definition for the    Timesheet Submission Process Service<definitions name="TimesheetSubmission"targ...
3. Membentuk percakapan process                   service• Tentukan partner services yang berpartisipasi  dalam proses dan...
The revised Employee service definitions               construct<definitions name="Employee"targetNamespace="http://www.xm...
The partnerLinks construct containing  partnerLink elements for each of the process              partner services<partnerL...
The variables construct containing individual variable elements  representing input and output messages from all partner  ...
4. Menentukan logika proses• Semua keterangan alur kerja yang ada  diimplementasikan dengan WS-BPEL
Case Study: A descriptive, diagrammatic view of the              process definition logic
Case study• Yang pertama dibuat adalah elemen receive<receive xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-proces...
Case study• Sebelum meminta invoice service, konstruk  assign digunakan untuk mengekstrak value  dari timesheet document y...
Case study• Tambahkan elemen invoke setelah variable  InvoiceHoursRequest berisi value yang  dibutuhkan untuk operasi GetB...
Case study• Setelah meminta invoice service, pesan balasan  diterima dari operasi GetBilledHours. Pesan ini  disimpan pada...
Case study<switch name="BilledHoursMatch"><case condition="getVariableData(InvoiceHoursResponse,ResponseParameter) !=getVa...
Case study<faultHandlers><catchAll><sequence> ...</sequence></catchAll></faultHandlers>Fault handler menjalankan task:– Up...
A visual representation of the processlogic within the faultHandlers construct
Update employee profile history• Menggunakan konstruk assign dengan dua  copy, satu untuk mendapatkan EmployeeID  dari var...
Update employee profile history Two copy elements used to populate the EmployeeHistoryRequest message<assign name="SetEmpl...
Send notification• Aktifitas terakhir pada proses adalah  mengirimkan notifikasi kepada managaer dan  employee
5. Menyelaraskan skenario interaksi  dan memperbaiki proses (opsional)• Tinjau ulang skenario interaksi yang telah  dibuat...
Keuntungan dari menyelaraskan     process logic dengan WS-BPEL• Peta interaksi servis adalah bagian yang sangat  penting s...
Keuntungan memperbaiki process            definition• Menggabungkan atau menataulang aktifitas  untuk meraih peningkatan p...
Sequential, synchronous execution of process                  activities.
Concurrent execution of process activities using             the flow construct
Tool untuk Permodelan Bisnis Proses•   Modeliosoft•   TestMaker•   Eclipse•   eBPMN•   Dan lain-lain
SelesaiSekian dan terimakasih
Upcoming SlideShare
Loading in …5
×

Business Process Design in SOA

742 views

Published on

  • Be the first to comment

Business Process Design in SOA

  1. 1. Chapter 16. Service-Oriented Design Part IV Business Process Design Oleh: Farid Ridho
  2. 2. Ada apa di bab ini?• WS-BPEL language basic• WS-Coordination overview• disain Business Process
  3. 3. WS-BPEL Language Basic• Bahasa berbasis XML• Mendefinisikan bisnis proses• Merupakan bahasa untuk orkestrasi
  4. 4. Struktur Umum WS-BPEL
  5. 5. Sejarah BPEL4WS dan WS-BPEL• BPEL4WS pertama kali disusun pada juli 2002 oleh tim gabungan IBM, Microsoft dan BEA -> BPEL4WS 1.0• SAP dan Siebel System bergabung dengan tim dan merilis versi terbaru pada mei 2003 -> BPEL4WS 1.1• BPEL4WS 2.0 -> WS-BPEL
  6. 6. Prasyarat• Pengetahuan dasar tentang orchestration, coordination, atomic transactions dan business process• Dibahas di bab 6
  7. 7. The process element (1)• Merupakan root elemen• Mempunyai atribut name• Untuk mendefinisikan proses
  8. 8. The process element (2)<process name="TimesheetSubmissionProcess"targetNamespace="http://www.xmltc.com/tls/process/" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"xmlns:bpl="http://www.xmltc.com/tls/process/"xmlns:emp="http://www.xmltc.com/tls/employee/"xmlns:inv="http://www.xmltc.com/tls/invoice/"xmlns:tst="http://www.xmltc.com/tls/timesheet/"xmlns:not="http://www.xmltc.com/tls/notification/"> <partnerLinks> ... </partnerLinks><variables> ... </variables> <sequence> ...</sequence> ... </process>
  9. 9. The partnerLinks and partnerLink elements (1)• Berperan sebagai client pada proses• Bertanggungjawab melakukan invoke pada process service• Dapat di-invoke oleh process service itu sendiri• Memiliki atribut myRole dan partnerRole
  10. 10. The partnerLinkType element (2)<definitions name="Employee"targetNamespace="http://www.xmltc.com/tls/employee/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" ... > ... <plnk:partnerLinkTypename="EmployeeServiceType" xmlns="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"> <plnk:role name="EmployeeServiceProvider"><portType name="emp:EmployeeInterface"/></plnk:role> </plnk:partnerLinkType> ...</definitions>
  11. 11. The partnerLinks and partnerLink elements (2)<partnerLinks> <partnerLink name="client" partnerLinkType="tns:TimesheetSubmissionType" myRole="TimesheetSubmissionServiceProvider"/> <partnerLink name="Invoice" partnerLinkType="inv:InvoiceType" partnerRole="InvoiceServiceProvider"/> <partnerLink name="Timesheet" partnerLinkType="tst:TimesheetType" partnerRole="TimesheetServiceProvider"/> <partnerLink name="Employee" partnerLinkType="emp:EmployeeType" partnerRole="EmployeeServiceProvider"/> <partnerLink name="Notification" partnerLinkType="not:NotificationType" partnerRole="NotificationServiceProvider"/></partnerLinks>
  12. 12. The partnerLinkType element (1)• Digunakan untuk setiap partner service yang terlibat pada proses• Biasanya juga di-embedded pada dokumen WSDL• Berisi satu elemen peran (role) masing-masing myRole dan partnerRole• Pada akhirnya bisa memiliki satu atau dua elemen child role
  13. 13. The variables element (1)• Menyimpan informasi yang berhubungan dengan workflow logic• Keseluruhan pesan dan set data dalam bentuk XSD dapat disimpan ke dalam variable dan ditemukan kembali selama proses berjalan
  14. 14. The variables element (2)<variables><variable name="ClientSubmission“messageType="bpl:receiveSubmitMessage"/> <variablename="EmployeeHoursRequest“messageType="emp:getWeeklyHoursRequestMessage"/><variable name="EmployeeHoursResponse"messageType="emp:getWeeklyHoursResponseMessage"/><variable name="EmployeeHistoryRequest"messageType="emp:updateHistoryRequestMessage"/><variable name="EmployeeHistoryResponse"messageType="emp:updateHistoryResponseMessage"/> ...</variables>
  15. 15. The getVariableProperty and getVariableData functions (1)• getVariableProperty(variable name, property name) – Mengekstrak nilai properti dari suatu variabel – Argumen pertama adalah nama variabel, argumen kedua adalah nama propertinya• getVariableData(variable name, part name, location path) – Mendapatkan data dari variabel
  16. 16. The getVariableProperty and getVariableData functions (2)getVariableData (InvoiceHoursResponse,ResponseParameter)getVariableData (input,payload,/tns:TimesheetType/Hours/...)
  17. 17. The sequence element (1)• Untuk mengatur serangkaian aktivitas agar bisa dieksekusi secara berurutan (sequential)• Sebuah aktivitas akan dieksekusi apabila aktivitas sebelumnya pada antrian telah selesai
  18. 18. The sequence element (2)<sequence> <receive> ... </receive> <assign> ... </assign> <invoke> ... </invoke> <reply> ... </reply></sequence>
  19. 19. The invoke element (1)• Menjelaskan operasi dari partner service yang diinginkan (invoke) selama eksekusi• Pada elemen invoke biasanya terdapat 5 atribut yaitu partnerLink, portType, operation, inputVariable, dan outputVariable
  20. 20. The invoke element (2)<invoke name="ValidateWeeklyHours"partnerLink="Employee"portType="emp:EmployeeInterface"operation="GetWeeklyHoursLimit"inputVariable="EmployeeHoursRequest"outputVariable="EmployeeHoursResponse"/>
  21. 21. The receive element• Membuat informasi process service yang diinginkan pada saat melakukan request• Process service sebagai process provider yang diminta (invoke)
  22. 22. The receive element (2)<receive name="receiveInput“partnerLink="client"portType="tns:TimesheetSubmissionInterface"operation="Submit“variable="ClientSubmission“createInstance="yes"/>
  23. 23. The reply element (1)• Terdapat pada pertukaran synchronous• Bertanggungjawab untuk membuat detil dari respon pesan yang dikembalikan kepada partner service yang melakukan request• Berhubungan dengan elemen partnerLink yang sama dengan yang ada pada elemen receive
  24. 24. The reply element (2)<reply partnerLink="client"portType="tns:TimesheetSubmissionInterface"operation="Submit"variable="TimesheetSubmissionResponse"/>
  25. 25. The switch, case, and otherwise elements (1)• Untuk menambahkan conditional logic pada definisi proses• Mirip dengan switch case yang ada di bahasa pemrograman – Switch -> scope – Case -> conditional – Otherwise -> catch all the end of switch (if case condition failed, otherwise are executed)
  26. 26. The switch, case, and otherwise elements (2)<switch><case condition="getVariableData(EmployeeResponseMessage,ResponseParameter)=0"> ... </case><otherwise> ... </otherwise></switch>
  27. 27. The assign, copy, from, and to elements (1)• Memiliki kemampuan untuk meng-copy values diantara variable proses• Memungkinkan kita memberikan data melalui proses sebagai informasi yang diterima dan dirubah selama proses eksekusi
  28. 28. The assign, copy, from, and to elements (2)<assign><copy><from variable="TimesheetSubmissionFailedMessage"/><to variable="EmployeeNotificationMessage"/></copy><copy><from variable="TimesheetSubmissionFailedMessage"/><to variable="ManagerNotificationMessage"/></copy></assign>
  29. 29. faultHandlers, catch, and catchAll elements• Digunakan untuk penanganan kondisi error• Dapat terdiri dari banyak elemen catch• Penanganan default error menggunakan elemen catchAll
  30. 30. faultHandlers, catch, and catchAll elements<faultHandlers><catch faultName="SomethingBadHappened"faultVariable="TimesheetFault"> ...</catch><catchAll> ... </catchAll></faultHandlers>
  31. 31. Pembahasan WS-BPEL lebih lengkap• Silahkan kunjungi:http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.pdf
  32. 32. WS-Coordination Overview
  33. 33. WS-Coordination Overview• Mekanisme untuk manajemen konteks yang dapat diterapkan untuk mendukung transaksi yang atomic dan long-running• Mekanisme coordination meliputi activation service, registration service, a coordinator, dan participants yang mengimplementasikan protokol atau aturan-aturan tertentu (bab 6)• Manajemen konteks diatur secara otomatis oleh orchestration engine yang dibuat dengan WS- BPEL
  34. 34. WS-Coordination Overview• The CoordinationContext element• The Identifier and Expires elements• The CoordinationType element• The RegistrationService element
  35. 35. Service-oriented Business Process Design
  36. 36. Disain Service-oriented
  37. 37. Overview• Menerjemahkan business process requirement yang telah dikumpulkan dengan tepat dan menerapkannya dengan akurat• Perhitungkan semua kemungkinan variasi aktivitas proses• Termasuk memperhitungkan bagaimana proses merespon kondisi yang abnormal• Proses bisnis dirancang oleh analis menggunakan alat permodelan -> menghasilkan diagram• Implementasi ditangani oleh arsitek dan developer
  38. 38. Process Service Design
  39. 39. Process Description
  40. 40. Case Study: TLSTimeSheet Submission Process (Bab 12)
  41. 41. Service Design• Untuk menentukan partner link pada WS-BPEL>>
  42. 42. Service Composition
  43. 43. Service Candidate
  44. 44. Designing Business Process
  45. 45. Step by step1. Menyusun skenario interaksi antara process service dengan partner service2. Merancang antarmuka process service3. Membentuk percakapan process service4. Menentukan logika proses5. Meluruskan skenario interaksi dan perbaiki proses (opsional)
  46. 46. 1. Menyusun skenario interaksi• Tentukan requirement pertukaran pesan pada process service dari informasi-informasi yang sudah ada sebelumnya: – Workflow logic yang telah dihasilkan pada service modelling (Bab 12) – Kandidat process service (Bab 12) – Service design yang sudah ada (existing) (Bab 15)• Informasi ini digunakan untuk menganalisis semua kemungkinan interaksi antara process service dan partner service
  47. 47. Successful completion of theTimesheet Submission Process
  48. 48. A failure condition caused by an authorization rejection
  49. 49. The incoming and outgoing request messages expected to be processed by the Timesheet Submission Process Service ->
  50. 50. 2. Merancang antarmuka process service• Menentukan definisi service untuk process service• Dalam bentuk WSDL• Tinjau ulang WSDL yang sedang digunakan dan perbaiki jika memang diperlukan• Beberapa pertimbangan: – Dokumen input dan output diperlukan untuk setiap proses operasi – Buat definisi WSDL portType atau interface area – Tambahankan informasi meta melalui element document – Terapkan standar disain tambahan dalam batas-batas alat permodelan
  51. 51. Case Study• Timesheet submission process hanya memiliki satu operasi yang dijalankan oleh client yaitu submit
  52. 52. Timesheet Submission Process Service design
  53. 53. The abstract service definition for the Timesheet Submission Process Service<definitions name="TimesheetSubmission"targetNamespace="http://www.xmltc.com/tls/process/wsdl/"xmlns="http://schemas.xmlsoap.org/wsdl/"xmlns:ts="http://www.xmltc.com/tls/timesheet/schema/" xmlns:tsd="http://www.xmltc.com/tls/timesheetservice/schema/"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://www.xmltc.com/tls/timesheet/wsdl/" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"> <types> <xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.xmltc.com/tls/ timesheetsubmissionservice/schema/"> <xsd:importnamespace= "http://www.xmltc.com/tls/timesheet/schema/"schemaLocation="Timesheet.xsd"/> <xsd:element name="Submit"> <xsd:complexType><xsd:sequence> <xsd:element name="ContextID" type="xsd:integer"/> <xsd:elementname="TimesheetDocument" type="ts:TimesheetType"/> </xsd:sequence></xsd:complexType> </xsd:element> </xsd:schema> </types> <messagename="receiveSubmitMessage"> <part name="Payload" element="tsd:TimesheetType"/></message> <portType name="TimesheetSubmissionInterface"> <documentation>Initiates the Timesheet Submission Process. </documentation> <operationname="Submit"> <input message="tns:receiveSubmitMessage"/> </operation></portType> <plnk:partnerLinkType name="TimesheetSubmissionType"> <plnk:rolename="TimesheetSubmissionService"> <plnk:portTypename="tns:TimesheetSubmissionInterface"/> </plnk:role> </plnk:partnerLinkType></definitions>
  54. 54. 3. Membentuk percakapan process service• Tentukan partner services yang berpartisipasi dalam proses dan tetapkan perannya• Tambahkan konstruk partnerLinkType pada WSDL• Buat elemen partnerLink untuk setiap partner service• Tentukan elemen variable untuk mewakili pertukaran pesan masuk dan keluar
  55. 55. The revised Employee service definitions construct<definitions name="Employee"targetNamespace="http://www.xmltc.com/tls/employee/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:act="http://www.xmltc.com/tls/employee/schema/accounting/"xmlns:hr="http://www.xmltc.com/tls/employee/schema/hr/"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://www.xmltc.com/tls/employee/wsdl/"xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">... <plnk:partnerLinkType name="EmployeeType"><plnk:role name="EmployeeService"> <plnk:portTypename="tns:EmployeeInterface"/> </plnk:role></plnk:partnerLinkType> </definitions>
  56. 56. The partnerLinks construct containing partnerLink elements for each of the process partner services<partnerLinks> <partnerLink name="client"partnerLinkType="bpl:TimesheetSubmissionProcessType"myRole="TimesheetSubmissionProcessServiceProvider"/><partnerLink name="Invoice"partnerLinkType="inv:InvoiceType"partnerRole="InvoiceServiceProvider"/> <partnerLinkname="Timesheet" partnerLinkType="tst:TimesheetType"partnerRole="TimesheetServiceProvider"/><partnerLink name="Employee"partnerLinkType="emp:EmployeeType"partnerRole="EmployeeServiceProvider"/> <partnerLinkname="Notification"partnerLinkType="not:NotificationType"partnerRole="NotificationServiceProvider"/></partnerLinks>
  57. 57. The variables construct containing individual variable elements representing input and output messages from all partner services and for the process service itself<variables> <variable name="ClientSubmission"messageType="bpl:receiveSubmitMessage"/> <variablename="EmployeeHoursRequest"messageType="emp:getWeeklyHoursRequestMessage"/> <variablename="EmployeeHoursResponse"messageType="emp:getWeeklyHoursResponseMessage"/> <variablename="EmployeeHistoryRequest"messageType="emp:updateHistoryRequestMessage"/> <variablename="EmployeeHistoryResponse"messageType="emp:updateHistoryResponseMessage"/> <variablename="InvoiceHoursRequest"messageType="inv:getBilledHoursRequestMessage"/> <variablename="InvoiceHoursResponse"messageType="inv:getBilledHoursResponseMessage"/> <variablename="TimesheetAuthorizationRequest"messageType="tst:getAuthorizedHoursRequestMessage"/> <variablename="TimesheetAuthorizationResponse"messageType="tst:getAuthorizedHoursResponseMessage"/> <variablename="NotificationRequest" messageType="not:sendMessage"/></variables>
  58. 58. 4. Menentukan logika proses• Semua keterangan alur kerja yang ada diimplementasikan dengan WS-BPEL
  59. 59. Case Study: A descriptive, diagrammatic view of the process definition logic
  60. 60. Case study• Yang pertama dibuat adalah elemen receive<receive xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" name="receiveInput"partnerLink="client"portType="tns:TimesheetSubmissionInterface"operation="Submit" variable="ClientSubmission"createInstance="yes"/>• Ketika document diterima, format data akan disimpan pada variable clientSubmission
  61. 61. Case study• Sebelum meminta invoice service, konstruk assign digunakan untuk mengekstrak value dari timesheet document yang sekarang tersimpan di clientSubmission <assign name="GetInvoiceID"> <copy> <from variable="ClientSubmission" part="payload" query="/TimesheetType/BillingInfo"/> <to variable="InvoiceHoursRequest" part="RequestParameter"/> </copy> </assign>
  62. 62. Case study• Tambahkan elemen invoke setelah variable InvoiceHoursRequest berisi value yang dibutuhkan untuk operasi GetBilledHours pada service invoice <invoke name="ValidateInvoiceHours" partnerLink="Invoice" operation="GetBilledHours" inputVariable="InvoiceHoursRequest" outputVariable="InvoiceHoursResponse" portType="inv:InvoiceInterface"/>
  63. 63. Case study• Setelah meminta invoice service, pesan balasan diterima dari operasi GetBilledHours. Pesan ini disimpan pada variabel InvoiceHoursResponse.• Jika nilainya sesuai dengan yang ada pada timesheet document, maka jam kerja telah divalidasi.• Untuk memutuskan hal ini maka digunakan element switch, case dan condition
  64. 64. Case study<switch name="BilledHoursMatch"><case condition="getVariableData(InvoiceHoursResponse,ResponseParameter) !=getVariableData(input,payload,/tns:TimesheetType/Hours/...)"><throw name="ValidationFailed"faultName="ValidateInvoiceHoursFailed"/></case> </switch>Jika kondisi tidak terpenuhi maka lama jam telah divalidasi, jikaterpenuhi maka terjadi fault yang direpresentasikan melalui elementhrow kemudian mengirimkan ke faultHandlers
  65. 65. Case study<faultHandlers><catchAll><sequence> ...</sequence></catchAll></faultHandlers>Fault handler menjalankan task:– Update employee profile history– Send notification to managaer– Send notfication to employee
  66. 66. A visual representation of the processlogic within the faultHandlers construct
  67. 67. Update employee profile history• Menggunakan konstruk assign dengan dua copy, satu untuk mendapatkan EmployeeID dari variabel ClientSubmission , sedang yang lainnya untuk menambahkan employee profile history
  68. 68. Update employee profile history Two copy elements used to populate the EmployeeHistoryRequest message<assign name="SetEmployeeMessage"> <copy> <from variable="ClientSubmission" .../> <to variable="EmployeeHistoryRequest" .../> </copy> <copy> <from expression="..."/> <to variable="EmployeeHistoryRequest" .../> </copy></assign><invoke name="UpdateHistory" partnerLink="Employee" portType="emp:EmployeeInterface" operation="UpdateHistory" inputVariable="EmployeeHistoryRequest" outputVariable="EmployeeHistoryResponse"/>
  69. 69. Send notification• Aktifitas terakhir pada proses adalah mengirimkan notifikasi kepada managaer dan employee
  70. 70. 5. Menyelaraskan skenario interaksi dan memperbaiki proses (opsional)• Tinjau ulang skenario interaksi yang telah dibuat pada step 1• Periksa definisi proses WS-BPEL untuk optimasi
  71. 71. Keuntungan dari menyelaraskan process logic dengan WS-BPEL• Peta interaksi servis adalah bagian yang sangat penting sebagai dokumentasi untuk perbaikan ke depan atau sebagai knowledge transfer requirement• Sebagai uji kasis sehingga memungkinkan penguji menghindari analisis yang bersifat spekulasi• Memungkinkan ditemukannya penambahan process logic yang baru dan juga fault handling baru.
  72. 72. Keuntungan memperbaiki process definition• Menggabungkan atau menataulang aktifitas untuk meraih peningkatan performa• Mempersingkat markup code untuk memudahkan maintenance• Menemukan fitur yang sebelumnya tidak dipertimbangkan.
  73. 73. Sequential, synchronous execution of process activities.
  74. 74. Concurrent execution of process activities using the flow construct
  75. 75. Tool untuk Permodelan Bisnis Proses• Modeliosoft• TestMaker• Eclipse• eBPMN• Dan lain-lain
  76. 76. SelesaiSekian dan terimakasih

×