business process design in soa

Post on 24-Jun-2015

462 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

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: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 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 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

<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"/>

Two copy elements used to populate the EmployeeHistoryRequest message

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

top related