SlideShare a Scribd company logo
1 of 76
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 ->
  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
Prasyarat
• Pengetahuan dasar tentang orchestration,
  coordination, atomic transactions dan
  business process
• Dibahas di bab 6
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/proce
ss/" 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/notificatio
n/"> <partnerLinks> ... </partnerLinks>
<variables> ... </variables> <sequence> ...
</sequence> ... </process>
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
The partnerLinkType element (2)
<definitions name="Employee"
targetNamespace="http://www.xmltc.com/tls/employee/w
sdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:plnk=
"http://schemas.xmlsoap.org/ws/2003/05/partner-
link/" ... > ... <plnk:partnerLinkType
name="EmployeeServiceType" xmlns=
"http://schemas.xmlsoap.org/ws/2003/05/partner-
link/"> <plnk:role name="EmployeeServiceProvider">
<portType name="emp:EmployeeInterface"/>
</plnk:role> </plnk:partnerLinkType> ...
</definitions>
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>
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
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
The variables element (2)
<variables>
<variable name="ClientSubmission“
messageType="bpl:receiveSubmitMessage"/> <variable
name="EmployeeHoursRequest“
messageType="emp:getWeeklyHoursRequestMessage"/>
<variable name="EmployeeHoursResponse"
messageType="emp:getWeeklyHoursResponseMessage"/>
<variable name="EmployeeHistoryRequest"
messageType="emp:updateHistoryRequestMessage"/>
<variable name="EmployeeHistoryResponse"
messageType="emp:updateHistoryResponseMessage"/> ...
</variables>
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
The getVariableProperty and
 getVariableData functions (2)
getVariableData ('InvoiceHoursResponse',
'ResponseParameter')
getVariableData ('input','payload',
'/tns:TimesheetType/Hours/...')
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
The sequence element (2)
<sequence>
 <receive> ... </receive>
 <assign> ... </assign>
 <invoke> ... </invoke>
 <reply> ... </reply>
</sequence>
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
The invoke element (2)
<invoke name="ValidateWeeklyHours"
partnerLink="Employee"
portType="emp:EmployeeInterface"
operation="GetWeeklyHoursLimit"
inputVariable="EmployeeHoursRequest"
outputVariable="EmployeeHoursResponse"/>
The receive element
• Membuat informasi process service yang
  diinginkan pada saat melakukan request
• Process service sebagai process provider yang
  diminta (invoke)
The receive element (2)
<receive name="receiveInput“
partnerLink="client"
portType="tns:TimesheetSubmissionInterface"
operation="Submit“
variable="ClientSubmission“
createInstance="yes"/>
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
The reply element (2)
<reply partnerLink="client"
portType="tns:TimesheetSubmissionInterface"
operation="Submit"
variable="TimesheetSubmissionResponse"/>
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)
The switch, case, and
      otherwise elements (2)
<switch>
<case condition=
"getVariableData('EmployeeResponseMessage',
'ResponseParameter')=0"> ... </case>
<otherwise> ... </otherwise>
</switch>
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
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>
faultHandlers, catch, and
       catchAll elements
• Digunakan untuk penanganan kondisi error
• Dapat terdiri dari banyak elemen catch
• Penanganan default error menggunakan
  elemen catchAll
faultHandlers, catch, and
       catchAll elements
<faultHandlers>
<catch faultName="SomethingBadHappened"
faultVariable="TimesheetFault"> ...
</catch>
<catchAll> ... </catchAll>
</faultHandlers>
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 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
WS-Coordination Overview
•   The CoordinationContext element
•   The Identifier and Expires elements
•   The CoordinationType element
•   The RegistrationService element
Service-oriented Business
     Process Design
Disain Service-oriented
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
Process Service Design
Process Description
Case Study: TLS
TimeSheet Submission
   Process (Bab 12)
Service Design


• Untuk menentukan
   partner link pada
   WS-BPEL
>>
Service Composition
Service Candidate
Designing Business Process
Step by step
1. Menyusun skenario interaksi antara process
   service dengan partner service
2. Merancang antarmuka process service
3. Membentuk percakapan process service
4. Menentukan logika proses
5. Meluruskan skenario interaksi dan perbaiki
   proses (opsional)
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
Successful completion of the
Timesheet 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
• 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
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"
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:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace=
"http://www.xmltc.com/tls/ timesheetsubmissionservice/schema/"> <xsd:import
namespace= "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:element
name="TimesheetDocument" type="ts:TimesheetType"/> </xsd:sequence>
</xsd:complexType> </xsd:element> </xsd:schema> </types> <message
name="receiveSubmitMessage"> <part name="Payload" element="tsd:TimesheetType"/>
</message> <portType name="TimesheetSubmissionInterface"> <documentation>
Initiates the Timesheet Submission Process. </documentation> <operation
name="Submit"> <input message="tns:receiveSubmitMessage"/> </operation>
</portType> <plnk:partnerLinkType name="TimesheetSubmissionType"> <plnk:role
name="TimesheetSubmissionService"> <plnk:portType
name="tns:TimesheetSubmissionInterface"/> </plnk:role> </plnk:partnerLinkType>
</definitions>
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
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:portType
name="tns:EmployeeInterface"/> </plnk:role>
</plnk:partnerLinkType> </definitions>
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"/> <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>
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"/> <variable
name="EmployeeHoursRequest"
messageType="emp:getWeeklyHoursRequestMessage"/> <variable
name="EmployeeHoursResponse"
messageType="emp:getWeeklyHoursResponseMessage"/> <variable
name="EmployeeHistoryRequest"
messageType="emp:updateHistoryRequestMessage"/> <variable
name="EmployeeHistoryResponse"
messageType="emp:updateHistoryResponseMessage"/> <variable
name="InvoiceHoursRequest"
messageType="inv:getBilledHoursRequestMessage"/> <variable
name="InvoiceHoursResponse"
messageType="inv:getBilledHoursResponseMessage"/> <variable
name="TimesheetAuthorizationRequest"
messageType="tst:getAuthorizedHoursRequestMessage"/> <variable
name="TimesheetAuthorizationResponse"
messageType="tst:getAuthorizedHoursResponseMessage"/> <variable
name="NotificationRequest" messageType="not:sendMessage"/>
</variables>
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
-process/" name="receiveInput"
partnerLink="client"
portType="tns:TimesheetSubmissionInterface"
operation="Submit" variable="ClientSubmission"
createInstance="yes"/>
• Ketika document diterima, format data akan
  disimpan pada variable clientSubmission
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>
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"/>
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
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, jika
terpenuhi maka terjadi fault yang direpresentasikan melalui elemen
throw kemudian mengirimkan ke faultHandlers
Case study
<faultHandlers>
<catchAll>
<sequence>
 ...
</sequence>
</catchAll>
</faultHandlers>
Fault handler menjalankan task:
– Update employee profile history
– Send notification to managaer
– Send notfication to employee
A visual representation of the process
logic within the faultHandlers construct
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
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"/>
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 pada step 1
• Periksa definisi proses WS-BPEL untuk
  optimasi
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.
Keuntungan memperbaiki process
            definition
• Menggabungkan atau menataulang aktifitas
  untuk meraih peningkatan performa
• Mempersingkat markup code untuk
  memudahkan maintenance
• Menemukan fitur yang sebelumnya tidak
  dipertimbangkan.
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
Selesai
Sekian dan terimakasih

More Related Content

Similar to Service-Oriented Design untuk Proses Pengajuan Laporan Waktu

Project charter trackit
Project charter trackitProject charter trackit
Project charter trackitCahya Adhi
 
Business Process Modelling Notation - overview
Business Process Modelling Notation - overviewBusiness Process Modelling Notation - overview
Business Process Modelling Notation - overviewFaqih Zulfikar
 
Project charter pt karyaindo konstruksi
Project charter pt karyaindo konstruksiProject charter pt karyaindo konstruksi
Project charter pt karyaindo konstruksiMiftakhul Akhyar
 
Review Teori Studi Kasus
Review Teori Studi KasusReview Teori Studi Kasus
Review Teori Studi KasusRACHMAANNISA2
 
web_server-side-scripting2.pdf
web_server-side-scripting2.pdfweb_server-side-scripting2.pdf
web_server-side-scripting2.pdfAhmadKhanifFikri
 
Overview_Penyusunan Peta Proses Bisnis
Overview_Penyusunan Peta Proses BisnisOverview_Penyusunan Peta Proses Bisnis
Overview_Penyusunan Peta Proses BisnisKanaidi ken
 
Project Charter Human Resource Information System
Project Charter Human Resource Information SystemProject Charter Human Resource Information System
Project Charter Human Resource Information SystemIvanda Zevi Amalia
 
Laporan pemrograman visual3
Laporan pemrograman visual3Laporan pemrograman visual3
Laporan pemrograman visual3Fenty Hidayati
 
Rpl 4-proses perangkat lunak & metrik proyek
Rpl 4-proses perangkat lunak & metrik proyekRpl 4-proses perangkat lunak & metrik proyek
Rpl 4-proses perangkat lunak & metrik proyekf' yagami
 
Pertemuan-7-Proses_Desain interaksi manusia dan komputer.ppt
Pertemuan-7-Proses_Desain interaksi manusia dan komputer.pptPertemuan-7-Proses_Desain interaksi manusia dan komputer.ppt
Pertemuan-7-Proses_Desain interaksi manusia dan komputer.pptBernad Bear
 

Similar to Service-Oriented Design untuk Proses Pengajuan Laporan Waktu (20)

Project charter trackit
Project charter trackitProject charter trackit
Project charter trackit
 
Business Process Modelling Notation - overview
Business Process Modelling Notation - overviewBusiness Process Modelling Notation - overview
Business Process Modelling Notation - overview
 
Project charter pt karyaindo konstruksi
Project charter pt karyaindo konstruksiProject charter pt karyaindo konstruksi
Project charter pt karyaindo konstruksi
 
Review Teori Studi Kasus
Review Teori Studi KasusReview Teori Studi Kasus
Review Teori Studi Kasus
 
Meeting 3 metode pengembangan sistem
Meeting 3   metode pengembangan sistemMeeting 3   metode pengembangan sistem
Meeting 3 metode pengembangan sistem
 
web_server-side-scripting2.pdf
web_server-side-scripting2.pdfweb_server-side-scripting2.pdf
web_server-side-scripting2.pdf
 
Mppl tugas 3 - KAK
Mppl   tugas 3 - KAKMppl   tugas 3 - KAK
Mppl tugas 3 - KAK
 
Manajemen Waktu
Manajemen WaktuManajemen Waktu
Manajemen Waktu
 
Rekayasa Perangkat Lunak - Model Pengembangan Sistem
Rekayasa Perangkat Lunak - Model Pengembangan SistemRekayasa Perangkat Lunak - Model Pengembangan Sistem
Rekayasa Perangkat Lunak - Model Pengembangan Sistem
 
Overview_Penyusunan Peta Proses Bisnis
Overview_Penyusunan Peta Proses BisnisOverview_Penyusunan Peta Proses Bisnis
Overview_Penyusunan Peta Proses Bisnis
 
Project Charter Human Resource Information System
Project Charter Human Resource Information SystemProject Charter Human Resource Information System
Project Charter Human Resource Information System
 
Laporan pemrograman visual3
Laporan pemrograman visual3Laporan pemrograman visual3
Laporan pemrograman visual3
 
Tugas 3
Tugas 3Tugas 3
Tugas 3
 
Rpl 4-proses perangkat lunak & metrik proyek
Rpl 4-proses perangkat lunak & metrik proyekRpl 4-proses perangkat lunak & metrik proyek
Rpl 4-proses perangkat lunak & metrik proyek
 
UTS MPPL
UTS MPPLUTS MPPL
UTS MPPL
 
Pertemuan 7
Pertemuan 7Pertemuan 7
Pertemuan 7
 
Pertemuan-7-Proses_Desain interaksi manusia dan komputer.ppt
Pertemuan-7-Proses_Desain interaksi manusia dan komputer.pptPertemuan-7-Proses_Desain interaksi manusia dan komputer.ppt
Pertemuan-7-Proses_Desain interaksi manusia dan komputer.ppt
 
10 Final Report
10  Final Report10  Final Report
10 Final Report
 
Tugas
TugasTugas
Tugas
 
Apsi (modul 2)
Apsi  (modul 2)Apsi  (modul 2)
Apsi (modul 2)
 

Service-Oriented Design untuk Proses Pengajuan Laporan Waktu

  • 1. Chapter 16. Service-Oriented Design Part IV Business Process Design Oleh: Farid Ridho
  • 2. Ada apa di bab ini? • WS-BPEL language basic • WS-Coordination overview • disain Business Process
  • 3. WS-BPEL Language Basic • Bahasa berbasis XML • Mendefinisikan bisnis proses • Merupakan bahasa untuk orkestrasi
  • 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. Prasyarat • Pengetahuan dasar tentang orchestration, coordination, atomic transactions dan business process • Dibahas di bab 6
  • 7. The process element (1) • Merupakan root elemen • Mempunyai atribut name • Untuk mendefinisikan proses
  • 8. The process element (2) <process name="TimesheetSubmissionProcess" targetNamespace="http://www.xmltc.com/tls/proce ss/" 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/notificatio n/"> <partnerLinks> ... </partnerLinks> <variables> ... </variables> <sequence> ... </sequence> ... </process>
  • 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. The partnerLinkType element (2) <definitions name="Employee" targetNamespace="http://www.xmltc.com/tls/employee/w sdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:plnk= "http://schemas.xmlsoap.org/ws/2003/05/partner- link/" ... > ... <plnk:partnerLinkType name="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. 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. 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. 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. The variables element (2) <variables> <variable name="ClientSubmission“ messageType="bpl:receiveSubmitMessage"/> <variable name="EmployeeHoursRequest“ messageType="emp:getWeeklyHoursRequestMessage"/> <variable name="EmployeeHoursResponse" messageType="emp:getWeeklyHoursResponseMessage"/> <variable name="EmployeeHistoryRequest" messageType="emp:updateHistoryRequestMessage"/> <variable name="EmployeeHistoryResponse" messageType="emp:updateHistoryResponseMessage"/> ... </variables>
  • 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. The getVariableProperty and getVariableData functions (2) getVariableData ('InvoiceHoursResponse', 'ResponseParameter') getVariableData ('input','payload', '/tns:TimesheetType/Hours/...')
  • 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. The sequence element (2) <sequence> <receive> ... </receive> <assign> ... </assign> <invoke> ... </invoke> <reply> ... </reply> </sequence>
  • 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. The invoke element (2) <invoke name="ValidateWeeklyHours" partnerLink="Employee" portType="emp:EmployeeInterface" operation="GetWeeklyHoursLimit" inputVariable="EmployeeHoursRequest" outputVariable="EmployeeHoursResponse"/>
  • 21. The receive element • Membuat informasi process service yang diinginkan pada saat melakukan request • Process service sebagai process provider yang diminta (invoke)
  • 22. The receive element (2) <receive name="receiveInput“ partnerLink="client" portType="tns:TimesheetSubmissionInterface" operation="Submit“ variable="ClientSubmission“ createInstance="yes"/>
  • 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. The reply element (2) <reply partnerLink="client" portType="tns:TimesheetSubmissionInterface" operation="Submit" variable="TimesheetSubmissionResponse"/>
  • 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. The switch, case, and otherwise elements (2) <switch> <case condition= "getVariableData('EmployeeResponseMessage', 'ResponseParameter')=0"> ... </case> <otherwise> ... </otherwise> </switch>
  • 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. 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. faultHandlers, catch, and catchAll elements • Digunakan untuk penanganan kondisi error • Dapat terdiri dari banyak elemen catch • Penanganan default error menggunakan elemen catchAll
  • 30. faultHandlers, catch, and catchAll elements <faultHandlers> <catch faultName="SomethingBadHappened" faultVariable="TimesheetFault"> ... </catch> <catchAll> ... </catchAll> </faultHandlers>
  • 31. Pembahasan WS-BPEL lebih lengkap • Silahkan kunjungi: http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.pdf
  • 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. WS-Coordination Overview • The CoordinationContext element • The Identifier and Expires elements • The CoordinationType element • The RegistrationService element
  • 35. Service-oriented Business Process Design
  • 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
  • 40. Case Study: TLS TimeSheet Submission Process (Bab 12)
  • 41. Service Design • Untuk menentukan partner link pada WS-BPEL >>
  • 45. Step by step 1. Menyusun skenario interaksi antara process service dengan partner service 2. Merancang antarmuka process service 3. Membentuk percakapan process service 4. Menentukan logika proses 5. Meluruskan skenario interaksi dan perbaiki proses (opsional)
  • 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. Successful completion of the Timesheet Submission Process
  • 48. A failure condition caused by an authorization rejection
  • 49. The incoming and outgoing request messages expected to be processed by the Timesheet Submission Process Service ->
  • 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. Case Study • Timesheet submission process hanya memiliki satu operasi yang dijalankan oleh client yaitu submit
  • 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:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace= "http://www.xmltc.com/tls/ timesheetsubmissionservice/schema/"> <xsd:import namespace= "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:element name="TimesheetDocument" type="ts:TimesheetType"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </types> <message name="receiveSubmitMessage"> <part name="Payload" element="tsd:TimesheetType"/> </message> <portType name="TimesheetSubmissionInterface"> <documentation> Initiates the Timesheet Submission Process. </documentation> <operation name="Submit"> <input message="tns:receiveSubmitMessage"/> </operation> </portType> <plnk:partnerLinkType name="TimesheetSubmissionType"> <plnk:role name="TimesheetSubmissionService"> <plnk:portType name="tns:TimesheetSubmissionInterface"/> </plnk:role> </plnk:partnerLinkType> </definitions>
  • 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. 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:portType name="tns:EmployeeInterface"/> </plnk:role> </plnk:partnerLinkType> </definitions>
  • 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"/> <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>
  • 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"/> <variable name="EmployeeHoursRequest" messageType="emp:getWeeklyHoursRequestMessage"/> <variable name="EmployeeHoursResponse" messageType="emp:getWeeklyHoursResponseMessage"/> <variable name="EmployeeHistoryRequest" messageType="emp:updateHistoryRequestMessage"/> <variable name="EmployeeHistoryResponse" messageType="emp:updateHistoryResponseMessage"/> <variable name="InvoiceHoursRequest" messageType="inv:getBilledHoursRequestMessage"/> <variable name="InvoiceHoursResponse" messageType="inv:getBilledHoursResponseMessage"/> <variable name="TimesheetAuthorizationRequest" messageType="tst:getAuthorizedHoursRequestMessage"/> <variable name="TimesheetAuthorizationResponse" messageType="tst:getAuthorizedHoursResponseMessage"/> <variable name="NotificationRequest" messageType="not:sendMessage"/> </variables>
  • 58. 4. Menentukan logika proses • Semua keterangan alur kerja yang ada diimplementasikan dengan WS-BPEL
  • 59. Case Study: A descriptive, diagrammatic view of the process definition logic
  • 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. 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. 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. 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. 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, jika terpenuhi maka terjadi fault yang direpresentasikan melalui elemen throw kemudian mengirimkan ke faultHandlers
  • 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. A visual representation of the process logic within the faultHandlers construct
  • 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. 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. Send notification • Aktifitas terakhir pada proses adalah mengirimkan notifikasi kepada managaer dan employee
  • 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. 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. 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. Sequential, synchronous execution of process activities.
  • 74. Concurrent execution of process activities using the flow construct
  • 75. Tool untuk Permodelan Bisnis Proses • Modeliosoft • TestMaker • Eclipse • eBPMN • Dan lain-lain