1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu mở rộng khả năng xử lý ngoại lệ trong quy trình nghiệp vụ với SOA và windows workflow foundation

136 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu mở rộng khả năng xử lý ngoại lệ trong quy trình nghiệp vụ với SOA và Windows Workflow Foundation
Tác giả Nguyễn Thanh Vũ
Người hướng dẫn PGS.TS. Đặng Trần Khánh
Trường học Đại Học Quốc Gia Tp. Hồ Chí Minh
Chuyên ngành Khoa học máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2011
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 136
Dung lượng 2,87 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong luận văn này, chúng tôiđề xuất và hiện thực một framework mở rộng công nghệ workflow củaMicrosoft để xử lý ngoại lệ quy trình nghiệp vụ hướng dịch vụ ở mức cơ sở dữ liệu.. Sự phát

Trang 1

NGUYỄN THANH VŨ

NGHIÊN CỨU MỞ RỘNG KHẢ NĂNG XỬ LÝ NGOẠI LỆ TRONG QUY TRÌNH NGHIỆP VỤ VỚI SOA VÀ WINDOWS WORKFLOW FOUNDATION

Chuyên ngành: Khoa học máy tính

LUẬN VĂN THẠC SĨ

TP HỒ CHÍ MINH, tháng 01 năm 2011

Trang 3

Tp HCM, ngày 15 tháng 01 năm 2011

NHIỆM VỤ LUẬN VĂN THẠC SĨ

Họ và tên học viên: NGUYỄN THANH VŨ Phái: Nam

Ngày, tháng, năm sinh: 06/04/1980 Nơi sinh: TP HCM

Chuyên ngành: Khoa học Máy tính

MSHV: 00707197 .

1- TÊN ĐỀ TÀI: Nghiên cứu mở rộng khả năng xử lý ngoại lệ trong quy trình nghiệp vụ với SOA và Windows Workflow Foundation

2- NHIỆM VỤ LUẬN VĂN:

.- Nghiên cứu ngoại lệ trong quy trình nghiệp vụ với SOA - Đưa ra giải pháp và hiện thực việc mở rộng khả năng xử lý ngoại lệ trong quy trình nghiệp vụ với SOA và Windows Workflow Foundation .

.

.

.

.

3- NGÀY GIAO NHIỆM VỤ : 25/01/2010 .

4- NGÀY HOÀN THÀNH NHIỆM VỤ : 06/12/2010

5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : PGS.TS.ĐẶNG TRẦN KHÁNH

Nội dung và đề cương Luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua.

(Họ tên và chữ ký)

Trang 4

Trần Khánh đã tận tình hướng dẫn và tạo mọi điều kiện để tôi có thể hoànthành luận văn này.

Tôi cũng xin cảm ơn gia đình đã động viên và tạo mọi điều kiện tốtnhất để tôi có thể tiếp tục theo đuổi việc học tập nghiên cứu Tôi trân trọngdành tặng thành quả của luận văn này cho Cha Mẹ Nhờ công lao dưỡngdục của Người mà con mới có được thành quả như ngày hôm nay Con xinhứa sẽ tiếp tục cố gắng phấn đấu để vươn cao hơn nữa

Trang 5

hướng dịch vụ là nền tảng để xây dựng và ứng dụng những hệ thống xử lýquy trình vào các hoạt động của doanh nghiệp Tuy nhiên, các công nghệhiện tại chưa quan tâm đúng mức đến việc xử lý ngoại lệ quy trình Vì thế,việc sử dụng chúng trong thực tế chưa thật sự hiệu quả Mặc dù có một sốcông trình nghiên cứu liên quan đến vấn đề này, nhưng đa số đều tập trunggiải quyết ngoại lệ quy trình ở mức ứng dụng Trong luận văn này, chúng tôi

đề xuất và hiện thực một framework mở rộng công nghệ workflow củaMicrosoft để xử lý ngoại lệ quy trình nghiệp vụ hướng dịch vụ ở mức cơ sở

dữ liệu Cách tiếp cận mới này cho phép chúng ta xử lý ngoại lệ quy trình

mà không cần phải thay đổi mã nguồn của ứng dụng Hai loại ngoại lệ quytrình mà chúng tôi tập trung xử lý là ngoại lệ đa phiên bản (multi-versionexception) và ngoại lệ bỏ qua (bypassing exception) Bên cạnh đó, chúng tôicũng cung cấp một tập các công cụ để định nghĩa, thống kê và theo dõingoại lệ quy trình một cách trực quan Chúng tôi cũng khảo sát và hiện thựcmột quy trình nghiệp vụ thực tế để minh họa khả năng xử lý ngoại lệ củaframework này

Trang 6

service-oriented architecture (SOA) has helped more and more companies tobuild and apply the SOA-based workflow-processing systems to theiractivities However, current technologies are not mature enough to supportworkflow exception handling in SOA-based systems and the result is thattheir applications in practice are not effective Recent research works havetried to delve inside this subject matter, but most of them have concentrated

on handling business exception at application level In this thesis, wepropose and implement a framework that extends the Microsoft’s workflowtechnology to support business exception handling in SOA-based workflows

at database level This new approach gives us a solution to handle workflowexceptions without modifying the application’s source code We focus onmulti-version exceptions and bypassing exceptions In addition, we alsoprovide a set of visual tools for definition, statistics and monitor workflowexception We also study and implement a practical workflow to illustratethe exception processing capability of this framework

Trang 7

MỤC LỤC

CHƯƠNG 1 GIỚI THIỆU 1

1.1 Giới thiệu sơ lược về kiến trúc hướng dịch vụ (SOA) 2

1.1.1 Dịch vụ (service) là gì? 2

1.1.2 Kiến trúc hướng dịch vụ (SOA) 3

1.2 Giới thiệu về quy trình nghiệp vụ 7

1.2.1 Quy trình nghiệp vụ 7

1.2.2 Quy trình nghiệp vụ hướng dịch vụ 9

1.3 Tổng quan về ngoại lệ và xử lý ngoại lệ 10

CHƯƠNG 2 WINDOWS WORKFLOW FOUNDATION 13

2.1 Giới thiệu 13

2.2 Các thành phần của WWF 13

2.2.1 Workflow 13

2.2.2 Activity 14

2.2.3 Ứng dụng chủ (hosting application) 18

2.2.4 Máy thực thi workflow (Workflow runtime engine) 18

2.2.5 Các dịch vụ thực thi (Runtime Services) 19

2.3 Workflow và WebService 21

2.4 Thay đổi động workflow instance 22

CHƯƠNG 3 TỔNG THUẬT CÁC NGHIÊN CỨU CÓ LIÊN QUAN ĐẾN LUẬN VĂN 24

3.1 Ngoại lệ trong quy trình nghiệp vụ 24

3.2 Các phương pháp xử lý ngoại lệ 27

CHƯƠNG 4 THIẾT KẾ VÀ HIỆN THỰC 31

4.1 Tóm tắt vấn đề 31

4.2 Tổng quan về giải pháp 31

4.3 Các khái niệm sử dụng trong BESuite 33

Trang 8

4.4 Tổng quan quá trình xử lý ngoại lệ ở mức cơ sở dữ liệu sử dụng trong

BESuite 36

4.5 Sơ đồ kiến trúc của BESuite 38

4.6 Chi tiết hiện thực các thành phần của BESuite 40

4.6.1 Các cơ sở dữ liệu 40

4.6.2 Các APIs 44

4.6.3 Các công cụ quản lý 57

CHƯƠNG 5 QUY TRÌNH SỬ DỤNG BESUITE KẾT HỢP VỚI VISUAL STUDIO NET 64

5.1 Thiết kế workflow sử dụng VS NET 66

5.2 Định nghĩa các message dùng trong workflow sử dụng VS NET và BESuite APIs 68

5.2.1 Định nghĩa primary input message 68

5.2.2 Định nghĩa các substitutive input message 69

5.3 Thiết kế các substitutive activity sử dụng VS NET và BESuite APIs 71

5.4 Định nghĩa exception metadata sử dụng BESuite 73

5.4.1 Khởi động Exception Definition Tool và thiết lập kết nối đến cơ sở dữ liệu Exception Metadata 73

5.4.2 Nạp workflow vào Exception Definition Tool 74

5.4.3 “Gán” các message vào activity 76

5.4.4 “Gán” các substitutive activity vào activity 82

5.5 “Hook” BEH vào định nghĩa của workflow 84

5.6 Xây dựng ứng dụng host workflow 87

5.7 Giám sát quá trình thực thi của workflow sử dụng BESuite .88

5.8 Thống kê việc xảy ra ngoại lệ sử dụng BESuite .93

CHƯƠNG 6 ỨNG DỤNG BESUITE ĐỂ XỬ LÝ NGOẠI LỆ TRONG QUY TRÌNH CHO VAY TÍN CHẤP 95

Trang 9

6.3 Xử lý ngoại lệ 99

6.3.1 Thiết kế quy trình theo hướng chấp nhận xử lý ngoại lệ 99

6.3.2 Xử lý ngoại lệ duyệt hạn mức cho vay 99

CHƯƠNG 7 TỔNG KẾT VÀ ĐÁNH GIÁ 107

7.1 Những kết quả đạt được 107

7.2 Những điều còn hạn chế 107

7.3 Hướng phát triển 108

PHỤ LỤC 109

A Hướng dẫn cài đặt 109

1 Cài đặt NET Framework 109

2 Cài đặt hệ quản trị cơ sở dữ liệu 111

3 Tạo các cơ sở dữ liệu 113

4 Cài đặt BESuite 114

B Hướng dẫn sử dụng 115

TÀI LIỆU THAM KHẢO 121

Trang 10

DANH MỤC HÌNH

Hình 1.1 Service endpoints 3

Hình 1.2 Khai báo một dịch vụ trong NET 3

Hình 1.3 Ứng dụng được phát triển theo kiến trúc hướng dịch vụ 4

Hình 1.4 Các actor trong mô hình SOA 5

Hình 1.5 Quy trình cho vay tín dụng 7

Hình 1.6 Quy trình cho vay tín dụng theo kiến trúc SOA .9

Hình 2.1 WWF trong NET framework 13

Hình 2.2 Các thành phần của WWF 14

Hình 2.3 Nhóm activity điều khiển 15

Hình 2.4 Nhóm activity truyền nhận thông điệp 16

Hình 2.5 Nhóm activity runtime 16

Hình 2.6 Nhóm activity cơ bản 16

Hình 2.7 Nhóm activity transaction 17

Hình 2.8 Nhóm activity xử lý lỗi 17

Hình 2.9 Sơ đồ class của các activity cơ sở 18

Hình 2.10 Minh họa một đoạn mã nguồn của ứng dụng chủ 21

Hình 2.11 Workflow gọi WebService 21

Hình 2.12 Workflow hiện thực một WebService 22

Hình 3.1 Các loại ngoại lệ thông dụng trong quy trình nghiệp vụ 25

Hình 3.2 Hai phiên bản của quy trình xét duyệt tốt nghiệp 26

Hình 3.3 Hai phiên bản của dữ liệu đầu vào trong quá trình xét tuyển giảng viên 26 Hình 4.1 Workflow và activities 33

Hình 4.2 Input message và output message của activity 33

Hình 4.3 Các khái niệm sử dụng trong BESuite 34

Hình 4.4 Substitutive activity là một activity 35

Hình 4.5 Substitutive activity là một sub-flow 36

Trang 11

Hình 4.8 Lược đồ cơ sở dữ liệu Exception Metadata 42

Hình 4.9 Lược đồ cơ sở dữ liệu Exception Statistics 44

Hình 4.10 Các API truy xuất cơ sở dữ liệu 45

Hình 4.11 Sơ đồ class của Interface IMessage 51

Hình 4.12 Sơ đồ class của Interface ISubstitutiveActivity 51

Hình 4.13 Sơ đồ class ExceptionDetails 52

Hình 4.14 Sơ đồ class của BEH 55

Hình 4.15 Sơ đồ class của AssemblyAnalyser 56

Hình 4.16 Giao diện của Exception Definition Tool 57

Hình 4.17 Giao diện của workflow monitor 58

Hình 4.18 Giao diện của Exception Statistic Tool 59

Hình 4.19 Giao diện của DatabaseSettingsControl 60

Hình 4.20 Sơ đồ class của DatabaseSettingsControl 61

Hình 4.21 Sơ đồ class của WorkflowViewControl 63

Hình 5.1 Tổng quan các bước sử dụng BESuite và VS.NET 64

Hình 5.2 Giao diện của ứng dụng demo đơn giản 65

Hình 5.3 Workflow sẽ xây dựng để minh họa quy trình sử dụng BESuite và VS.NET 67

Hình 5.4 Mã nguồn của SimpleWorkflow 68

Hình 5.5 Định nghĩa primary input message 69

Hình 5.6 Substitutive input message tương thích với dữ liệu “777777” .70

Hình 5.7 Substitutive input message tương thích với dữ liệu “888888” 71

Hình 5.8 Substitutive activity để xử lý substitutive input message 1 72

Hình 5.9 Substitutive activity để xử lý substitutive input message 2 72

Hình 5.10 Khởi động Exception Definition Tool 73

Hình 5.11 Thiết lập các thông số kết nối đến 74

Hình 5.12 Nạp workflow SimpleWorkflow 75

Hình 5.13 Load assembly chứa SimpleWorkflow vào cơ sở dữ liệu 75

Hình 5.14 Kết quả thêm mới assembly vào cơ sở dữ liệu 76

Trang 12

Hình 5.15 SimpleWorkflow đã được nạp vào Exception Definition Tool 76

Hình 5.16 Chọn activity cần gán các message và substitutive activity 77

Hình 5.17 Gán primary input message cho activity ValidateData – bước 1 78

Hình 5.18 Gán primary input message cho activity ValidateData – bước 2 78

Hình 5.19 Gán primary input message cho activity ValidateData – bước 3 79

Hình 5.20 Kết quả gán primary input message cho activity ValidateData 79

Hình 5.21 Gán substitutive input message cho activity ValidateData – bước 1 80

Hình 5.22 Gán substitutive input message cho activity ValidateData – bước 2 81

Hình 5.23 Kết quả gán các substitutive input message cho activity ValidateData 81

Hình 5.24 Gán substitutive activity cho activity ValidateData- bước 1 82

Hình 5.25 Gán substitutive activity cho activity ValidateData- bước 2 83

Hình 5.26 Gán substitutive activity cho activity ValidateData- bước 3 83

Hình 5.27 Kết quả gán các substitutive activity cho activity ValidateData 84

Hình 5.28 Hook BEH vào định nghĩa của workflow – bước 1 85

Hình 5.29 Hook BEH vào định nghĩa của workflow – bước 2 86

Hình 5.30 Hook BEH vào định nghĩa của workflow – bước 3 86

Hình 5.31 Giao diện của ứng dụng host workflow 87

Hình 5.32 Mã nguồn của ứng dụng host workflow 88

Hình 5.33 Khởi động Workflow Monitor Tool 88

Hình 5.34 Đăng ký workflow cần giám sát với Workflow Monitor Tool – bước 1 89 Hình 5.35 Đăng ký workflow cần giám sát với Workflow Monitor Tool – bước 2 89 Hình 5.36 Khởi động quá trình theo dõi workflow instance 90

Hình 5.37 SimpleWorkflow instance trong trường hợp bình thường 90

Hình 5.38 SimpleWorkflow instance trong trường hợp ngoại lệ 91

Hình 5.39 Màn hình xem chi tiết về ngoại lệ 92

Hình 5.40 Hai tùy chọn mà người sử dụng có thể can thiệp khi xử lý ngoại lệ 92

Hình 5.41 Khởi động công cụ Exception Statistics 93

Trang 13

Hình 6.1 Quy trình cho vay tín chấp 95

Hình 6.2 Ngoại lệ khi xét duyệt hạn mức cho vay 97

Hình 6.3 Ngoại lệ khi trả nợ vay – trường hợp 1 98

Hình 6.4 Ngoại lệ khi trả nợ vay – trường hợp 2 98

Hình 6.5 Định nghĩa primary input message cho activity Approval 100

Hình 6.6 Định nghĩa substitutive input message cho activity Approval 101

Hình 6.7 Substitutive activity của activity Approval 101

Hình 6.8 Primary input message cho activity DebtColl03 103

Hình 6.9 Substitutive input message của activity DebtColl03 104

Hình 6.10 Substitutive input message của activity DebtColl04 105

Hình 6.11 Substitutive activity của activity DebtColl04 106

Hình 8.1 Cài đặt NET Framework – bước 1 109

Hình 8.2 Cài đặt NET Framework – bước 2 110

Hình 8.3 Cài đặt NET Framework – bước 3 110

Hình 8.4 Cài đặt SQL Express – bước 1 111

Hình 8.5 Cài đặt SQL Express – bước 2 111

Hình 8.6 Cài đặt SQL Express – bước 3 112

Hình 8.7 Cài đặt SQL Express – bước 4 112

Hình 8.8 Tạo các cơ sở dữ liệu 113

Hình 8.9 Tạo các đối tượng dữ liệu 113

Hình 8.10 Cài đặt BESuite – bước 1 114

Hình 8.11 Cài đặt BESuite – bước 2 115

Hình 8.12 Program menu sau khi cài đặt BESuite 116

Hình 8.13 Vị trí cài đặt BESuite.Lib.dll 116

Hình 8.14 Khởi động các dịch vụ của ứng dụng Demo 117

Hình 8.15 Khởi động ứng dụng Demo 118

Hình 8.16 Kích hoạt quy trình cho vay tín chấp 119

Hình 8.17 Theo dõi việc thực thi của quy trình cho vay tín chấp 120

Trang 14

CHƯƠNG 1 GIỚI THIỆU

Hiện nay, việc thiết lập và chuẩn hóa các quy trình nghiệp vụ là một trongnhững tiêu chuẩn để đánh giá mức độ trưởng thành của các tổ chức và doanhnghiệp Nếu các quy trình được định nghĩa một cách tường minh, được liên tục cảitiến cho phù hợp với nhu cầu thực tế và được áp dụng một cách đồng bộ giữa các cánhân, đơn vị trong tổ chức thì sẽ giảm thiểu đáng kể khả năng sai sót và tăng tínhhiệu quả trong công việc

Sự phát triển của công nghệ workflow và kiến trúc hướng dịch vụ (SOA) chophép chúng ta xây dựng những hệ thống thông tin “hiểu” quy trình, hướng dịch vụ,nhằm giúp cho các doanh nghiệp có một công cụ để hỗ trợ việc quản lý, giám sát vàđiều phối các hoạt động trong quy trình nghiệp vụ một cách tự động/bán tự động.Việc kết hợp giữa công nghệ workflow và kiến trúc hướng dịch vụ cho phép chúng

ta thực thi những quy trình nghiệp vụ liên phòng ban và có thể sử dụng lại nhữngdịch vụ sẵn có mà không cần phải phát triển lại từ đầu

Một trong những yêu cầu của hệ thống “hiểu” quy trình, hay hệ thống quản

lý quy trình (WfMS) là tính uyển chuyển nhằm thích ứng với sự thay đổi thườngxuyên của các quy trình do những thay đổi về nghiệp vụ, thay đổi về luật, về chínhsách hoạt động,…Bên cạnh đó, các WfMS cũng cần phải có cơ chế để cho phép xử

lý các trường hợp ngoại lệ phát sinh trong quá trình vận dụng quy trình Một sốcông nghệ nổi tiếng hiện nay như Windows Workflow Foundation [17],[6],[24],Business Process Execution Language [19][13] cho phép chúng ta định nghĩa, thựcthi và quản lý hầu hết các loại quy trình nghiệp vụ Tuy nhiên, điểm hạn chế chungcủa chúng là chưa cung cấp (hoặc chỉ cung cấp một cách thô sơ) cơ chế để xử lý cácloại ngoại lệ thường gặp như multi-version và by-passing (sẽ trình bày ở các phầnsau) trong quy trình nghiệp vụ

Do đó, việc nghiên cứu mở rộng chúng để cho phép xử lý hai loại ngoại lệ

Trang 15

được khả thi hơn Mục tiêu của đề tài này là nghiên cứu mở rộng WindowsWorkflow Foundation để xử lý hai loại ngoại lệ thường gặp là multi-version và by-passing trong quy trình nghiệp vụ hướng dịch vụ Phần còn lại của chương 1 sẽ giớithiệu một số khái niệm liên quan.

1.1 Giới thiệu sơ lược về kiến trúc hướng dịch vụ (SOA)

1.1.1 Dịch vụ (service) là gì?

Service [27][20] là một hệ thống có khả năng nhận một hay nhiều yêu cầu xử

lý và sau đó đáp ứng lại bằng cách trả về kết quả Quá trình nhận yêu cầu và trả kếtquả về được thực hiện thông qua các giao diện (interface) đã được định nghĩa trước

đó Thông thường việc giao tiếp này được thực hiện trên các interface đã đượcchuẩn hóa và sử dụng rộng rãi Một ví dụ đơn giản của service chính là hoạt độngcủa một nhà hàng Khi khách hàng vào nhà hàng và gọi thức ăn, khách hàng đangtiến hành gởi yêu cầu cho service “phục vụ khách hàng” của nhà hàng Nhân viênnhà hàng nhận được yêu cầu của khách, nếu món ăn khách hàng yêu cầu nhà hàngkhông có hoặc đã hết, nhân viên nhà hàng sẽ từ chối hoặc đề nghị khách hàng gọimón khác Nếu nhà hàng có thể đáp ứng được yêu cầu của khách, món ăn sẽ đượcchế biến và mang ra cho khách hàng thưởng thức sau một khoảng thời gian chờ Ởđây, yêu cầu chính là món ăn mà khách hàng muốn thưởng thức, còn kết quả trả vềcủa service “phục vụ nhà hàng” chính là từ chối (nếu nhà hàng không đáp ứng đượcyêu cầu của khách) hay là món ăn mà khách hàng cần

Mỗi dịch vụ gồm có hai phần: phần xử lý bên trong và phần tương tác vớibên ngoài

Phần xử lý bên trong: thực hiện các giải thuật tính toán cần thiết để

cho ra kết quả cuối cùng

Phần giao tiếp bên ngoài: gồm các điểm đầu cuối (endpoint) tương

thích với các giao thức mạng khác nhau (HTTP, HTTPS, ) Có hai loạiendpoint với hai chức năng khác nhau: một loại dùng để nhận yêu cầu dịch

vụ từ khách hàng (business endpoints), loại còn lại dùng để mô tả cho khách

Trang 16

hàng biết cấu trúc của siêu dữ liệu (metadata) mà service dùng (MEX

endpoints) Một endpoint gồm có ba phần [23]: phần address cho biết địa chỉ mạng của dịch vụ, phần binding cho biết giao thức dùng để tương tác với service, và phần contract mô tả các thông số đầu vào đầu ra cũng như công

việc mà serivice thực hiện

Business endpoints

Hình 1.2 là ví dụ về khai báo một dịch vụ trong NET

Hình 1.2 Khai báo một dịch vụ trong NET

Một trong những hiện thực của Service là WebService WebService đangđược sử dụng rất phổ biến trong các hệ thống hướng dịch vụ ngày nay

1.1.2 Kiến trúc hướng dịch vụ (SOA)

Kiến trúc hướng dịch vụ (Service Oriented Architecture) [20][27] là một môhình kiến trúc mà theo đó các hệ thống được xây dựng dựa trên sự tương tác giữa

Trang 17

hay các vùng lãnh thổ khác nhau và được quản trị bởi những tổ chức khác nhau.Hình 1.3 minh họa một ứng dụng được phát triển theo kiến trúc hướng dịch vụ.

Hình 1.3 Ứng dụng được phát triển theo kiến trúc hướng dịch vụ

Mỗi service trong hệ thống có thể được xây dựng hay sửa đổi một cách độclập với các service khác nhằm mục đích đáp ứng một yêu cầu mới từ thực tế Việcphát triển hệ thống theo kiến trúc hướng dịch vụ phải tuân thủ bốn nguyên tắc[25][14] sau đây:

- Có ranh giới rõ ràng (Boundaries Are Explicit): dịch vụ và khách hàng

(service consumer) hoàn toàn độc lập nhau, chúng giao tiếp với nhauthông qua cơ chế truyền thông điệp (message passing)

- Tính tự trị (Autonomous): Mỗi dịch vụ có tính độc lập cao, có thể được

xây dựng và đưa vào sử dụng mà không phụ thuộc vào các service khác

- Tính bao đóng: Mỗi dịch vụ chỉ cho bên ngoài nhìn thấy cấu trúc của các

dữ liệu đầu vào, dữ liệu đầu ra và mô tả chức năng của nó mà không chỉ

ra các giải thuật được hiện thực bên trong như thế nào

- Khả năng tương thích của các dịch vụ:

o Tương thích về mặt cấu trúc được xác định dựa vào các contract

Trang 18

o Tương thích về mặt ngữ nghĩa được xác định dựa vào các phátbiểu một cách tường minh về khả năng và yêu cầu dưới dạng cácchính sách (policy).

Hình 1.4 mô tả các actor tham gia trong một hệ thống xây dựng theo kiếntrúc hướng dịch vụ Trong đó, Service Provider sẽ đăng kí thông tin về dịch vụ màmình có thể cung cấp (các chức năng có thể cung cấp, khả năng của hệ thống, giá cảdịch vụ, ) vào Service Registry Service Consumer khi có nhu cầu nghiệp vụ nào

đó, sẽ tìm kiếm thông tin trên Service Registry Ngoài chức năng hỗ trợ tìm kiếm,Service Registry còn có thể xếp hạng các Service Provider dựa trên các tiêu chí vềchất lượng dịch vụ, bầu chọn từ các khách hàng đã sử dụng dịch vụ, Những thôngtin này sẽ hỗ trợ thêm cho quá trình tìm kiếm của Service Consumer Khi đã xácđịnh được Service Provider mong muốn, Service Consumer thiết lập kênh giao tiếptrực tiếp với Service Provider nhằm để sử dụng service hoặc tiến hành thươnglượng thêm về mặt giá cả, tài nguyên sử dụng, chất lượng dịch vụ,…

ServiceRegistryFind

ServiceConsumer

ServiceProvider

Register

Bind ,Execute

Hình 1.4 Các actor trong mô hình SOA

Việc sử dụng mô hình SOA mang lại lợi ích về mặt kinh tế cũng như kỹ thuật

- Lợi ích kinh tế

o Doanh nghiệp có điều kiện tập trung thời gian để tìm kiếm các giải

Trang 19

o Thúc đẩy sự phát triển của hệ thống hiện có cũng như cung cấpkhả năng mở rộng hệ thống trong tương lai.

o Hoạt động của các service có tính động, hành vi của các servicetùy thời đểm, tùy yêu cầu cần xử lý mà có sự khác nhau (latebinding)

Trong kiến trúc SOA, các dịch vụ giao tiếp với nhau thông qua việc gửi nhậncác thông điệp (message) đã được chuẩn hóa Việc sử dụng các thông điệp khi giaotiếp với nhau có các lợi ích sau:

- Độc lập flatform: các service hoạt động trên các platform khác nhau vẫn

có thể giao tiếp với nhau nhờ vào các giao diện đã được chuẩn hóa đểcộng tác xử lý công việc nào đó

- Có thể giao tiếp bất đồng bộ: hoạt động gởi nhận thông điệp được thựchiện theo cơ chế Fire-and-Forget Bên gửi và bên nhận không cần phảichờ thông điệp trả lời sau khi đã gởi đi một thông điệp Điều này giúpcho bên gửi và bên nhận tiếp tục xử lý công việc sau khi gởi thông điệp

mà không cần dừng thực thi để chờ thông điệp trả lời

- Giao tiếp có độ tin cậy cao: các thông điệp từ bên gửi có thể được gửi đếnmột service trung gian có nhiệm vụ lưu trữ các thông điệp Service trunggian sẽ chuyển tiếp thông điệp cho bên nhận khi bên nhận có thể xử lýyêu cầu tiếp theo Cơ chế Store-and-Forward này đảm bảo các thông điệp

sẽ không bị thất lạc trong trường hợp bên nhận bị quá tải và không thểnhận thêm yêu cầu mới

Trang 20

- Các thông điệp lưu trữ thông tin về các đối tượng dữ liệu dưới dạng đặc

tả hình thức thay thế việc phải serialization and deserialization các đốitượng dữ liệu truyền qua mạng khi thực hiện gọi các thủ tục từ xa (RPC)

- Có thể áp dụng một số cơ chế bảo mật lên thông điệp truyền nhận bằngcách mã hóa các thông điệp gửi và giải mã các thông điệp nhận

1.2 Giới thiệu về quy trình nghiệp vụ

1.2.1 Quy trình nghiệp vụ

Quy trình nghiệp vụ bao gồm một chuỗi các hoạt động (activity) cần thựchiện theo một thứ tự nhất định để hoàn thành một công việc nào đó Nó hướng dẫncho các cá nhân tham gia vào quy trình biết công việc cần phải làm Khi thực hiện,mỗi bước trong quy trình sẽ được thực hiện bởi một/một vài cá nhân trong đơn vịvới một số tài nguyên nhất định Mỗi bước trong quy trình có thể là một hoạt động

cơ bản hay lại là một quy trình con Các bước trong quy trình có thể được làm tựđộng, bằng tay hoàn toàn hoặc có sự trợ giúp của các phần mềm máy tính Đời sốngcủa các quy trình nghiệp vụ cũng rất khác nhau, có những quy trình thực thi và kếtthúc rất nhanh, nhưng cũng có những quy trình kéo dài đến hàng giờ, hàng tuần,thậm chí là hàng năm, hàng thế kỷ

Lập hồ sơ vay vốn Phân tích tín dụng Ra quyết định tín

dụng

Giải ngân Giám sát tín dụng Thanh lý hợp đồng

tín dụng

Hình 1.5 Quy trình cho vay tín dụng

Hình 1.5 là một ví dụ về quy trình cho vay tín dụng ở một Ngân hàng Trong

Trang 21

- Bước 1: Lập hồ sơ vay vốn - bước này do phòng tín dụng thực hiện ngaysau khi tiếp xúc khách hàng Nhìn chung một bộ hồ sơ vay vốn bao gồm:

o Năng lực pháp lý, năng lực hành vi dân sự của khách hàng

o Kế hoạch sử dụng vốn vay

o Khả năng hoàn trả nợ vay

Ngay khi hoàn tất bộ hồ sơ này, phòng tín dụng sẽ gửi qua phòngthẩm định để phân tích tín dụng

- Bước 2: Phân tích tín dụng - được thực hiện bởi phòng thẩm định Mụctiêu của bước này là xác định khả năng hiện tại và tương lai của kháchhàng trong việc sử dụng vốn vay và hoàn trả nợ vay Phòng thẩm địnhcần phải thực hiện:

o Tìm kiếm những tình huống có thể xảy ra dẫn đến rủi ro cho Ngânhàng, dự đoán khả năng khắc phục những rủi ro đó, dự kiến nhữngbiện pháp giảm thiểu rủi ro và hạn chế tổn thất cho Ngân hàng

o Phân tích tính chân thật của những thông tin đã thu thập được từphía khách hàng trong bước 1, từ đó nhận xét thái độ, thiện chí củakhách hàng làm cơ sở cho việc ra quyết định cho vay

- Bước 3: Ra quyết định tín dụng - được thực hiện bởi phòng tín dụng Saukhi nhận kết quả thẩm định từ phòng thẩm định, phòng tín dụng sẽ quyếtđịnh đồng ý hoặc từ chối cho vay đối với hồ sơ vay vốn của khách hàng

- Bước 4: Giải ngân - được thực hiện bởi phòng ngân quỹ Sau khi nhậnđược quyết định cho vay từ phòng tín dụng, phòng ngân quỹ sẽ tiến hànhgiải ngân cho khách hàng theo hạn mức tín dụng đã ký trong hợp đồng

- Bước 5: Giám sát tín dụng - được thực hiện bởi phòng tín dụng Phòngtín dụng thường xuyên kiểm tra việc sử dụng vốn vay thực tế của kháchhàng, hiện trạng tài sản đảm bảo, tình hình tài chính của khách hàng, đểđảm bảo khả năng thu nợ

- Bước 6: Thanh lý hợp đồng tín dụng - được thực hiện bởi phòng tín dụng.Đây là bước cuối cùng để hoàn tất quy trình cho vay tín dụng

Trang 22

1.2.2 Quy trình nghiệp vụ hướng dịch vụ

Quy trình nghiệp vụ hướng dịch vụ là những quy trình nghiệp vụ mà tại mộtbước nào đó có thể xảy ra quá trình gọi một dịch vụ ở bên ngoài Các dịch vụ đượcgọi có thể thuộc các phòng ban khác nhau, thậm chí là thuộc các công ty khác nhau.Hình 1.6 là quy trình cho vay tín dụng được thiết kế theo kiến trúc hướng dịch vụ.Theo mô hình này, tại mỗi bước của quy trình sẽ gọi các dịch vụ tương ứng Khi đó,bản thân quy trình có thể được xem như là một “Enterprise Service Bus” [29], chịutrách nhiệm điều phối, tích hợp và triệu gọi các dịch vụ để thực thi

Quy trình nghiệp vụ cho vay tín dụng

Dịch vụ lập hồ

sơ vay tín dụng

Khách hàng

Dịch vụ phân tích tín dụng

Dịch vụ ra quyết định tín dụng

Dịch vụ giải ngân

Yêu cầu vay

Nhận tiền / Từ chối

Dịch vụ theo dõi và thanh lý hợp đồng tín dụng Gọi Trả lời

Trang 23

1.3 Tổng quan về ngoại lệ và xử lý ngoại lệ

Ngoại lệ trong quy trình nghiệp vụ được hiểu là những tình huống cá biệtphát sinh trong quá trình thực thi quy trình đòi hỏi phải được xử lý riêng Ví dụtrong quy trình cho vay tín dụng, tại bước lập hồ sơ tín dụng, đòi hỏi người vay phảicung cấp đầy đủ các loại giấy tờ theo quy định như chứng từ chứng minh năng lựcpháp lý, năng lực hành vi dân sự, bản thuyết trình kế hoạch sử dụng vốn vay, bảnthuyết trình kế hoạch trả nợ vay,…Nhưng trong thực tế, có thể phát sinh thêm một

số trường hợp cá biệt (người vay rất nổi tiếng, người có địa vị cao trong xã hội, có

sự chấp thuận của người có thẩm quyền,…) thì một số giấy tờ có thể được thay thếbằng một số giấy tờ khác hoặc có thể được miễn chấp Trong những trường hợp nhưthế, nếu hệ thống quản lý quy trình không có khả năng xử lý ngoại lệ thì quy trìnhgốc phải được chỉnh sửa lại để có thể xử lý những trường hợp cá biệt này

Theo [11][1], ngoại lệ có thể được chia thành hai loại theo tính biết trước củanó: ngoại lệ có thể biết trước và ngoại lệ không thể biết trước

- Ngoại lệ có thể biết trước: Đây là những ngoại lệ mà người thiết kế quytrình dựa vào kinh nghiệm của mình có thể nhận ra ngay từ khi thiết kế quytrình Chúng cũng có thể là những ngoại lệ chưa được biết trước ngay từ banđầu nhưng lại phát sinh trong những lần thực thi quy trình trước đây Trongtrường hợp thứ hai thì ở lần đầu phát sinh chúng là những ngoại lệ thuộc loạikhông biết trước và đòi hỏi có sự can thiệp của con người để giải quyết Sau

đó, ngoại lệ được ghi nhận lại và có thể xem như là một ngoại lệ biết trước.Đối với ngoại lệ biết trước, về nguyên tắc chúng ta có thể tích hợp vào trongquy trình bằng cách dùng các điều kiện rẽ nhánh, tuy nhiên nếu làm như vậythì quy trình trở nên rối rắm và khó hiểu [1][2][4][11][5] giải quyết vấn đềbằng cách tách định nghĩa ngoại lệ ra khỏi định nghĩa quy trình Theo đó,bên cạnh việc định nghĩa các quy trình, người thiết kế quy trình phải địnhnghĩa thêm các ngoại lệ Trong quá trình thực thi quy trình, WfMS sẽ dựatrên định nghĩa ngoại lệ để tự động phát hiện ngoại lệ và thực hiện các hành

Trang 24

trở nên đơn giản hơn Hơn nữa, một ngoại lệ có thể chỉ cần định nghĩa mộtlần và được áp dụng cho một nhóm các quy trình.

- Ngoại lệ không biết trước: Trong thực tế, người thiết kế quy trình khôngthể đoán trước được tất cả các ngoại lệ có thể phát sinh nên việc định nghĩatrước ngoại lệ trong lúc định nghĩa quy trình là không thể Do đó khi quytrình được thực thi, hệ thống phải cho phép người quản lý quy trình can thiệp

để giải quyết các trường hợp ngoại lệ [11][10] cũng đề xuất một giải pháp

xử lý ngoại lệ dựa vào phương pháp suy luận dựa trên tình huống Based Reasoning [16] exception handling) để quyết định xử lý một tìnhhuống mới dựa trên kinh nghiệm xử lý các tình huống tương tự trước đây

(Case-Ngoại lệ trong quy trình nghiệp vụ chủ yếu rơi vào hai trường hợp: ngoại lệ

ở luồng điều khiển (control flow) và ngoại lệ ở luồng dữ liệu (data flow) [2] Ngoại

lệ của luồng điều khiển làm cho một số bước trong quy trình bị bỏ qua hay đượcthay bằng một số bước khác hay chúng có thể làm cho hướng thực thi của quy trình

bị thay đổi Ngoại lệ của luồng dữ liệu làm thay đổi các dữ liệu nhập, dữ liệu xuấthay thay thế dữ liệu này bởi dữ liệu kia Liên quan đến ngoại lệ trong luồng điềukhiển và luồng dữ liệu, có hai vấn đề cần quan tâm, đó là vấn đề multi-version vàbypassing Chúng xảy ra trong cả luồng điều khiển và luồng dữ liệu [2] cho rằngvấn đề multi-version trong luồng điều khiển xảy ra khi tại một thời điểm có nhiềuphiên bản của workflow tồn tại đồng thời để giải quyết một công việc nào đó vàviệc chọn lựa phiên bản nào để thực thi có thể được làm tự động hay có sự can thiệpcủa người tham gia quy trình Ví dụ, có hai phiên bản của quy trình cho vay tíndụng: một phiên bản cho khách hàng thông thường và một phiên bản cho kháchhàng là cán bộ công nhân viên của Ngân hàng Theo [2], vấn đề multi-version cũngxảy ra trong luồng dữ liệu, đó là các phiên bản khác nhau của dữ liệu vào/ra tại mỗibước trong quy trình

Trang 25

quy trình có thể bị bỏ qua hay bị thay thế bởi một số bước khác Bypassing ở luồng

dữ liệu làm cho một phần dữ liệu đầu vào/đầu ra tại một bước nào đó có thể bị bỏqua hay bị thay thế bằng dữ liệu khác

Trong đề tài này, chúng tôi sẽ giới thiệu một cách tiếp cận mới cho phép xử

lý hai loại ngoại lệ multi-version và bypassing trong quy trình nghiệp vụ hướng dịch

vụ bằng cách mở rộng Windows Workflow Foundation [6][9] và kế thừa một phần

ý tưởng từ [2] Phần còn lại của bài báo cáo này được tổ chức như sau: Chương 2

sẽ giới thiệu một số kiến thức nền tảng về Windows Workflow Foundation và các

công nghệ liên quan Chương 3 sẽ tổng thuật các công trình nghiên cứu liên quan đến đề tài Chương 4 là phần thiết kế và hiện thực Chương 5 trình bày quy trình

sử dụng BESuite kết hợp với VS.NET Chương 6 trình bày việc ứng dụng BESuite

để xử lý ngoại lệ trong quy trình cho vay tín chấp(*) Cuối cùng là một số đánh giá

và kết luận ở Chương 7.

(*) Các quy trình cho vay được đề cập trong luận văn này được trích từ quyển “quy trình nghiệp

Trang 26

CHƯƠNG 2 WINDOWS WORKFLOW FOUNDATION

2.1 Giới thiệu

Windows Workflow Foundation (WWF) là một công nghệ của Microsoftcho phép định nghĩa, thực thi và quản lý quy trình nghiệp vụ Công nghệ này đượcgiới thiệu từ tháng 11/2006 như là một phần của NET Framework 3.0 Phiên bảnmới nhất là WWF 4.0 đi cùng với NET Framework 4.0 được công bố vào khoảngcuối năm 2009 với nhiều cải tiến đáng kể [21] Hình 2.1 cho thấy vị trí của WWFtrong NET Framework

Hình 2.1 WWF trong NET framework

2.2 Các thành phần của WWF

2.2.1 Workflow

Trong WWF, một workflow bao gồm các activity được sắp xếp theo một thứ

tự nhất định để mô hình hóa một quy trình thực hiện một công việc nào đó WWF

hỗ trợ hai loại workflow [22]:

- Workflow trình tự (sequence): thực thi các activity theo một thứ tự đãđịnh sẵn Loại workflow này có thể chứa các actitity như IfActivity,WhileActivity hay các activity điều khiển khác Tuy nhiên trong quá

Trang 27

trước đó mà chỉ có thể thực thi các activity tiếp theo trong trình tự đãđược định nghĩa trước.

- Workflow Flowchart (workflow máy trạng thái trong WWF 3.5 vềtrước): cũng thực thi các actitity theo trình tự, nhưng cho phép chúng tađiều khiểu để quay về các activity trước đó Loại workflow này uyểnchuyển hơn workflow trình tự, nó cho phép chúng ta mô tả nhiều loạiquy trình nghiệp vụ ngoài thực tế mà workflow trình tự không thể làmđược Loại workflow này thích hợp cho những tình huống sau:

o Khi những sự kiện bên ngoài workflow có thể chỉ định bước thựcthi tiếp theo

o Khi thứ tự các công việc không thể đoán trước

o Không thể mô hình hóa được tất cả các khả năng thực thi có thểnếu sử dụng workflow trình tự

Hình 2.2 Các thành phần của WWF

2.2.2 Activity

Activity là các phần tử cơ bản để tạo nên một workflow WWF 4.0 cung cấpmột số activity dựng sẵn (base activity library), chúng được phân nhóm như sau:

Trang 28

- Nhóm activity điều khiển (control flow activity): được dùng để điềukhiển trình tự thực thi của các activity khác trong workflow Cácactivity thuộc nhóm này như là: DoWhile, ForEach, Parallel, If,Pick,…(Hình 2.3).

- Nhóm activity truyền nhận thông điệp (messaging): được dùng đểgửi/nhận một thông điệp thông qua Windows CommunicationFoundation Các activity thuộc nhóm này như là: Send, Receive,SendAndReceiveReply,…(Hình 2.4)

- Nhóm activity thời gian thực thi (runtime): nhóm này bao gồm activityPersit thực hiện chức năng yêu cầu Workflow runtime lưu trạng thái củaworkflow instance vào một nơi lưu trữ bền vững như cơ sở dữ liệu, đĩacứng; activity TerminateWorkflow yêu cầu Workflow rumtime chấmdứt workflow đang thực thi (Hình 2.5)

Hình 2.3 Nhóm activity điều khiển

Trang 29

Hình 2.4 Nhóm activity truyền nhận thông điệp

Hình 2.5 Nhóm activity runtime

- Nhóm activity cơ bản: các activity thuộc nhóm này cho phép thực hiệncác thao tác cơ bản như phép gán, gọi một method hay ghi một dòngvăn bản ra màn hình.(Hình 2.6)

Hình 2.6 Nhóm activity cơ bản

- Nhóm activity phục vụ giao tác (transaction): nhóm này bao gồm một

số activity cho phép xử lý một số tình huống phát sinh trong quá trìnhlàm việc với các thao tác có thời gian thực thi kéo dài (Hình 2.7)

Trang 30

Hình 2.7 Nhóm activity transaction

- Nhóm activity xử lý lỗi (Error handing): nhóm này bao gồm các activitycho phép xử lý lỗi giống như các cấu trức try…catch trong các ngônngữ lập trình (Hình 2.8)

Hình 2.8 Nhóm activity xử lý lỗi

Bản thân hai loại workflow trình tự và workflow flowchart kể trên cũng là

System.Activities.Statements.Sequence và System.Activities Statements.Flowcharttương ứng Cả hai lớp này kế thừa từ lớp System.Activities.NativeActivity

Ngoài các activity dựng sẵn, WWF cũng cung cấp một số class cơ sở [21] đểchúng ta có thể tự phát triển thêm activity mới phù hợp với nhu cầu sử dụng bằngcách thừa kế từ một trong các lớp như trong Hình 2.9 Các activity tự tạo mới nàygọi là Custom Activity Lớp Activity thường được sử dụng để mô hình một hoạtđộng bằng cách kết hợp các hoạt động khác, thông thường được định nghĩa bởiXAML Lớp CodeActivity thường được sử dụng khi cần viết thêm một số code điềukhiển tương đối phức tạp Lớp AsyncCodeActivity tương tự như CodeActivity

Trang 31

thường được sử dụng khi chúng ta có nhu cầu truy xuất vào Workflow Runtime như

là định thời các activity khác, tạo bookmark, triệu gọi một số dịch vụ,…

Activity

NativeActivityCodeActivity

NativeActivity<T>CodeActivity<T>

2.2.4 Máy thực thi workflow (Workflow runtime engine)

Nhiệm vụ của Runtime engine là tạo, thực thi và quản lý các workflowinstance Nó không phải là một tiến trình chạy độc lập mà nó chạy cùng với tiếntrình của ứng dụng chủ Trong WWF, Runtime engine được hiện thực bởi lớpWorkflowRuntime Trong suốt quá trình hoạt động, nó sẽ sử dụng một số dịch vụkhác để hoàn tất các công việc của nó, các dịch vụ này gọi là Runtime service.Runtime engine cho phép workflow instance và ứng dụng chủ của nó giao tiếp vớinhau thông qua hai cơ chế:

Trang 32

- Truyền thông số: ứng dụng chủ có thể thực hiện truyền thông số vàoworkflow và nhận kết quả xuất ra từ workflow.

- Sự kiện: workflow có thể kích hoạt sự kiện cho ứng dụng chủ, ứng dụngchủ sẽ xử lý sự kiện này

Hình 2.10 là đoạn mã nguồn của một ứng dụng chủ cho chúng ta thấy một sốchức năng của Runtime engine Đầu tiên, Runtime engine được khởi tạo bằng cáchtạo mới một đối tượng thuộc lớp WorkflowRuntime (dòng 5) Sau khi được khởitạo, nó có thể đăng ký một vài dịch vụ như ExternalDataExchangeService vàSqlWorkflowPersistenceService (dòng 7,8,9,10) để sử dụng trong suốt quá trìnhhoạt động của nó Sau đó trình chủ sẽ khởi động Runtime engine (dòng 12) và khaibáo các hàm xử lý sự kiện (dòng 14-17) liên quan đến workflow như khi nàoworkflow idle, khi nào workflow kết thúc,…Cuối cùng workflow runtime sẽ tạo vàkhởi động một workflow instance (dòng 19-21) Từ đây trở đi, workflow instanceđược thực thi dưới sự quản lý của runtime engine

2.2.5 Các dịch vụ thực thi (Runtime Services)

Trong quá trình thực thi, Runtime engine có thể sử dụng các Runtime service

để hoàn tất một công việc nào đó WWF cung cấp một số loại Runtime service, điểnhình như:

- Dịch vụ định thời (Scheduling service): được sử dụng để định thời việcthực thi của các workflow instance, có 2 loại dịch vụ định thời được địnhnghĩa sẵn trong WWF, được hiện thực bởi hai lớp tương ứng, đó là:

Trang 33

 Phải được chỉ định tường minh trong ứng dụng chủ nếu ứngdụng chủ muốn sử dụng dịch vụ này để định thời choworkflow instance.

 Workflow instance và ứng dụng chủ chạy trong cùng mộtthread

- Dịch vụ Persistence: dịch vụ này cho phép đọc/ghi trạng thái củaworkflow instance từ/xuống các thiết bị lưu trữ bền vững như cơ sở dữliệu, hệ thống file,… Điều này giúp cho runtime engine có thể thực thicác workflow instance có đời sống rất dài bằng cách lưu lại trạng thái củaworkflow instance vào cơ cở dữ liệu và nạp chúng lên bộ nhớ khi có nhucầu WWF cung cấp một sự hiện thực mặc định cho loại dịch vụ nàythông qua lớp SqlWorkflowPersistenceService Sự hiện thực này chỉ chophép làm việc với cơ sở dữ liệu SQL Server Và đương nhiên, chúng ta

có thể mở rộng lớp WorkflowPersistenceService để hiện thực một dịch

vụ Persistence mới để có thể thao tác trên các hệ cơ sở dữ liệu khác nhưOracle, DB2, MySQL,…

- Dịch vụ Tracking: dịch vụ này cho phép ta theo dõi và lưu lại các sự kiện

và dữ liệu liên quan đến workflow instance và các activity instance để cóthể phân tích sau này SqlTrackingService là một hiện thực của WWFcho dịch vụ này Tuy nhiên SqlTrackingService chỉ có thể làm việc với

cơ sở dữ liệu SQL Server Để thao tác với các hệ cơ sở dữ liệu khác nhưOracle, DB2,…ta phải tự hiện thực dịch vụ này bằng cách mở rộng lớpTrackingService

- Dịch vụ DataExchange: dịch vụ này cho phép giao tiếp giữa ứng dụngchủ và workflow instance thông qua cơ chế truyền thông số hay sự kiệnnhư đã trình bày ở 2.2.4

Trang 34

Hình 2.10 Minh họa một đoạn mã nguồn của ứng dụng chủ

Windows Communication Foundation

Hình 2.11 Workflow gọi WebService

Trang 35

Windows Communication Foundation

Client

Hình 2.12 Workflow hiện thực một WebService

2.4 Thay đổi động workflow instance

WWF cung cấp khả năng thay đổi động workflow instance trong lúc nó đangthực thi [22] Những thay đổi này có thể là bỏ qua hay thêm vào một/một vàiactivity nào đó Việc này có thể được thực hiện từ bên trong hay bên ngoài luồngthực thi của workflow Những thay đổi từ bên trong được thực hiện bằng cách xử lýcác hàm xử lý sự kiện của activity hay bằng cách can thiệp trực tiếp vào bên tronglogic thực thi của activity thông qua custom activity Những thay đổi từ bên ngoàiđược thực hiện bằng cách sử dụng các hàm API của WWF từ ứng dụng chủ để thayđổi lên workflow instance Để đảm bảo rằng các sự thay đổi này là đúng đắn, nónên được áp dụng khi workflow instance đang trong trạng thái idle hay suspend.Những thay đổi này chỉ có ảnh hưởng lên workflow instance, nó không ảnh hưởngđến định nghĩa ban đầu của workflow (workflow schema)

WWF cung cấp lớp WorkflowChanges để hỗ trợ việc thay đổi từ bên trongworkflow Các activity được thêm vào hay bị xóa khỏi workflow instance bằng cácmethod Add và Remove của activity cha tương ứng Khi những thay đổi được thựchiện, method Validate của lớp WorkflowChanges có thể được gọi để kiểm tra tínhđúng đắn về mặt ngữ nghĩa của workflow instance sau khi thay đổi Cuối cùng,method ApplyWorkflowChanges của workflow instance sẽ được gọi để các thay đổinày có hiệu lực

Trang 36

Những thay đổi từ bên ngoài workflow được thực hiện từ ứng dụng chủ nơiworkflow instance đang chạy Mỗi workflow instance tương ứng với một đối tượngthuộc lớp WorkflowInstance, đối tượng này có thể lấy được từ lúc tạo workflowinstance Tạo đối tượng WorkflowChanges, sử dụng một số chức năng của đốitượng này để thực hiện thay đổi lên workflow instance Tuy nhiên việc thay đổi nàychỉ mới được áp dụng lên bản sao (copy) của workflow instance, nên sau đó phảigọi method ApplyWorkflowChanges để áp dụng vào workflow instance đang chạy.

Trang 37

CHƯƠNG 3 TỔNG THUẬT CÁC NGHIÊN CỨU CÓ LIÊN QUAN ĐẾN LUẬN VĂN

Ngoại lệ trong quy trình nghiệp vụ được hiểu là những tình huống cá biệtphát sinh trong quá trình thực thi quy trình đòi hỏi phải có sự xử lý riêng Trong quátrình thực thi quy trình nghiệp vụ, việc xảy ra ngoại lệ là khó tránh khỏi Do đó, mộttrong những yêu cầu đối với các WfMS là chúng phải đủ uyển chuyển để cho phép

xử lý các loại ngoại lệ phát sinh trong suốt đời sống của quy trình Đây là một trongnhững chủ đề lớn đang được các cộng đồng nghiên cứu quan tâm Ở chương này,chúng tôi sẽ tóm lược lại một số ý tưởng trong các công trình nghiên cứu liên quan

mà chúng tôi đã tìm hiểu được trong thời gian thực hiện đề tài

3.1 Ngoại lệ trong quy trình nghiệp vụ

Theo [11][1], ngoại lệ có thể được phân thành hai loại dựa vào tính biết trướccủa nó: ngoại lệ biết trước và ngoại lệ chưa thể biết trước Ngoại lệ biết trước làngoại lệ mà người thiết kế quy trình có thể tiên đoán được ngay từ lúc định nghĩaquy trình Về nguyên tắc, chúng ta có thể tích hợp loại ngoại lệ này vào quy trìnhbằng các activity điều kiện (IfActivity), nhưng làm như vậy thì quy trình sẽ trở nênphức tạp và rối rắm Hai ngôn ngữ hỗ trợ nhúng ngoại lệ loại này vào định nghĩaquy trình là BPMN (Business Process Modeling Notation) và BPEL (BusinessProcess Execution Language) [11][19] Trong thực tế, phần lớn các trường hợp màchúng ta gặp là những ngoại lệ thuộc loại không biết trước vì chúng ta không thểtiên đoán được điều gì sẽ xảy ra trong suốt quá trình thực thi của quy trình

Tác giả của [2][3] cho rằng ngoại lệ trong quy trình nghiệp vụ chủ yếu rơivào hai trường hợp: ngoại lệ ở luồng điều khiển (control flow) và ngoại lệ ở luồng

dữ liệu (data flow) (Hình 3.1)

Trang 38

Business Process

ControlFlow

Multi-version Exception

ByPassing Exception

Multi-version Exception

ByPassing Exception

Hình 3.1 Các loại ngoại lệ thông dụng trong quy trình nghiệp vụ

Ngoại lệ của luồng điều khiển làm cho một số bước trong quy trình bị bỏ quahoặc được thay bằng một số bước khác hoặc chúng có thể làm cho hướng thực thicủa quy trình bị thay đổi Ngoại lệ của luồng dữ liệu làm thay đổi các dữ liệu nhập,

dữ liệu xuất hay thay thế dữ liệu này bởi dữ liệu kia Trong bài báo đó, tác giả tậptrung vào hai loại ngoại lệ multi-version và bypassing Hai loại ngoại lệ này đều cóthể xảy ra trong cả luồng điều khiển và luồng dữ liệu

Vấn đề multi-version trong luồng điều khiển xảy ra khi tại một thời điểm cónhiều phiên bản của workflow tồn tại đồng thời để giải quyết một công việc Phiênbản nào được chọn để thực thi phụ thuộc vào những điều kiện nào đó [2] đưa ramột ví dụ về sự tồn tại đồng thời của hai quy trình xét duyệt tốt nghiệp cho sinhviên: một quy trình cho sinh viên tốt nghiệp đúng hạn và một quy trình cho sinhviên bị trể hạn (Hình 3.2) Trong ví dụ này, bởi vì điều kiện tốt nghiệp đã thay đổinên những sinh viên bị trể hạn sẽ không thể tốt nghiệp nếu không có sự tồn tại songsong của hai quy trình

Trang 39

Hình 3.2 Hai phiên bản của quy trình xét duyệt tốt nghiệp

cho sinh viên khóa 2008 và khóa 2009

Trong luồng dữ liệu, vấn đề multi-version xảy ra khi có nhiều phiên bảnkhác nhau của dữ liệu vào/ra tại mỗi bước của quy trình [2] minh họa cho loạingoại lệ này thông qua một ví dụ về xét duyệt hồ sơ trong quá trình tuyển giảngviên ở một trường đại học (Hình 3.3) Theo đó, bộ hồ sơ “chuẩn” được yêu cầu baogồm bằng tiến sĩ, lý lịch cá nhân, kinh nghiệm làm việc và chứng chỉ sư phạm Nếungười xin việc không có chứng chỉ sư phạm, anh ta cũng sẽ được chấp nhận nếunhư hồ sơ của anh ta đã có thư giới thiệu của thầy hiệu trưởng Đó chính là sự thaythế một trường dữ liệu này bằng một trường dữ liệu khác trong dữ liệu đầu vào tạibước kiểm tra hồ sơ trong quy trình tuyển dụng, sự thay thế này tạo ra ngoại lệmulti-version trong luồng dữ liệu

- Letter of the rector

Hình 3.3 Hai phiên bản của dữ liệu đầu vào trong quá trình xét tuyển giảng viên

Trang 40

Tương tự, vấn đề bypassing cũng có thể xảy ra ở luồng điều khiển và luồng

dữ liệu Bypassing ở luồng điều khiển làm cho một số bước của quy trình có thể bị

bỏ qua hay bị thay thế bởi một số bước khác Bypassing ở luồng dữ liệu làm chomột vài thành phần dữ liệu đầu vào/đầu ra tại một bước nào đó có thể bị bỏ qua hay

bị thay thế bằng dữ liệu khác

Những loại ngoại lệ này có thể được xử lý tự động hay cần phải có sự canthiệp của con người Phần tiếp theo sẽ tổng thuật các cách tiếp cận xử lý ngoại lệkhác nhau đã được công bố trong các công trình nghiên cứu có liên quan

sử dụng phải chọn/hiện thực lại cho phù hợp với tình hình thực tế Cáchtiếp cận này tỏ ra rất phù hợp trong một số lĩnh vực ứng dụng nơi mà cácngoại lệ không biết trước thường xuyên xảy ra, đặc biệt là trong lĩnh vực ykhoa, các quy trình luôn luôn phải được hiệu chỉnh lại cho phù hợp vớitừng hoàn cảnh cụ thể Ví dụ như quy trình điều trị bệnh ở một bệnh viện.Bệnh viện chỉ có thể đưa ra một phác đồ điều trị chung cho một loại bệnhnào đó Sau đó, khi điều trị cho bệnh nhân thì phác đồ này luôn phải đượcđiều chỉnh lại cho phù hợp với từng bệnh nhân cụ thể tùy vào nhiều yếu tố

Ngày đăng: 16/04/2021, 04:17

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[4] ĐẶNG Trần Khánh: Báo cáo tóm tắt kết quả đề tài khoa học công nghệ trọng điểm ĐHQG – HCM. Tên đề tài: “Nghiên cứu và xây dựng hệ thống thông tin quản lý cho trường đại học”. Mã đề tài: B2006-20-07TĐ, (2008), p.10-15 Sách, tạp chí
Tiêu đề: Nghiên cứu và xây dựng hệ thống thôngtin quản lý cho trường đại học
Tác giả: ĐẶNG Trần Khánh: Báo cáo tóm tắt kết quả đề tài khoa học công nghệ trọng điểm ĐHQG – HCM. Tên đề tài: “Nghiên cứu và xây dựng hệ thống thông tin quản lý cho trường đại học”. Mã đề tài: B2006-20-07TĐ
Năm: 2008
[1] Chiu, D. K. W.: A Meta Modeling Approach to Workflow Management Systems Supporting Exception Handling, (1999), p.159-184 Khác
[3] DANG Tran Khanh, THAN Quang Minh, LE TRONG An Sinh: A Novel Solution to Workflow Exception Handling for Adaptive Workflows in SOA Khác
[5] Hagen, C. and Alonso,G.: Flexible exception handling in the OPERA process support system. In Proceedings of Distributed Computing Systems 18th International Conference on, (1998), p.526-533 Khác
[6] Kitta, T.: Professional Windows Workflow Foundation, Wiley Publishing, Inc., Indianapolis, Indiana, (2007) Khác
[7] Kloppmann,M.H.F., Koenig,D., Leymann,F. : WS-BPEL Extension for People–BPEL4People, (2005) Khác
[8] Kradolfer, M., Geppert, A.: Dynamic Workflow Schema Evolution based on Workflow Type Versioning and Workflow Migration, In Proceedings of IFCIS International Conference on Cooperative Information Systems, UK, (1999), p. 104-114 Khác
[9] Liu,L., Bửttcher,T., Daiberl,J.: Building Workflow enabled End-to-End Khác
[10] Luo,Z., Sheth,A., Kochut,K. and Miller,J. : Exception Handling in Workflow Systems, (2000), p.10-20 Khác
[11] LÝ Hoàng Hải: Xử lý bó trong hệ thống quản lý quy trình. Luận văn Thạc sĩ, ĐHBK TPHCM, (2008), p.39-42 Khác
[12] Mathias,W.: Formal Foundation and Conceptual Design of Dynamic Adaptations in a Workflow Management System, In Proceedings of the 34 th Annual Hawaii International Conference on System Sciences, USA (2001) Khác
[13] Matjaz,B.J.: Business Process Execution Language for Web Service, Packt Publishing Ltd, (2006), p.23-49 Khác
[14] Osborn,J.: Master Windows Comminication Foundation and SOA Fundamentals, O’Reilly Media, (2007), p.7-9 Khác
[15] Reichert,M., Rinderle,S. and Dadam,P.: On the Common Support of Workflow Type and Instance Changes under Correctness Constraints, Lecture Notes in Computer Science, Springer Berlin Heidelberg, (2003), p.407-425 Khác
[16] Sankar, Pal,K. and Shiu,K.: Foundation of Soft Cased-Base Reasoning, A John Wiley &amp; Sons, Inc., Publication, (2004), p.26-59 Khác
[17] Scott,A.: Programming Windows Workflow Foundation, Packt Publishing Ltd, Birmingham, UK, (2006) Khác
[18] Vieira,P., Rito-Silva,J. : Adaptive Workflow Management in WorkSCo, In Proceedings of The 6th International Workshop on Database and Expert Systems Applications, Denmark, (2005), p.199-204 Khác

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w