• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Business Process Design in SOA
 

Business Process Design in SOA

on

  • 417 views

 

Statistics

Views

Total Views
417
Views on SlideShare
417
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Business Process Design in SOA Business Process Design in SOA Presentation Transcript

    • 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/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>
    • 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/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>
    • 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"/> <variablename="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: 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 service3. Membentuk percakapan process service4. Menentukan logika proses5. 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 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• 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: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>
    • 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:portTypename="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"/> <partnerLinkname="Timesheet" partnerLinkType="tst:TimesheetType"partnerRole="TimesheetServiceProvider"/><partnerLink name="Employee"partnerLinkType="emp:EmployeeType"partnerRole="EmployeeServiceProvider"/> <partnerLinkname="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"/> <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>
    • 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, jikaterpenuhi maka terjadi fault yang direpresentasikan melalui elementhrow 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 processlogic 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
    • SelesaiSekian dan terimakasih