ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
KHÓA LUẬN TỐT NGHIỆP
NGHIÊN CỨU WORKFLOW SYSTEM VÀ XÂY
DỰNG HỆ THỐNG QUẢN LÝ TÀI LIỆU QUA MẠNG
(STUDY WORKFLOW SYSTEM AND BUILDING AN
ONLINE DOCUMENT MANAGEMENT SYSTEM)
Giáo viên hướng dẫn: TS. NGÔ THANH HÙNG
Sinh viên thực hiện:
1.LÊ CAO THÙY
2.PHẠM CÔNG THƢỞNG
Lớp: CNPM01
Khóa: 01
Tp.Hồ Chí Minh, Tháng 03 năm 2011
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
LỜI MỞ ĐẦU
Trong hơn 10 năm trở lại đây. Chưa khi nào quá trình tin học hóa lại diễn ra mạnh mẽ và
bùng nổ đến như vậy. Nó len lỏi ăn sâu và anh hưởng đến hầu hết các lĩnh vực, ngành
nghề trong xã hội, cuộc sống. Và cũng từ đó, chưa bao giờ các kĩ sư lập trình viên lại có
vai trò quan trọng đến cuộc sống như vậy. Họ đưa đến cuộc sống những sản phẩm ứng
dụng vô cùng hữu ích phục vụ công việc, cuộc sống, con người.
Đi đôi với việc xây dựng ứng dụng thì công việc bảo trì phát triển sản phẩm và vô cùng
cần thiết. Thế nhưng với lối lập trình truyền thống chúng ta thường giải quyết các logic,
trình tự công việc bằng một mớ mã (code) phức tạp, hỗn độn và thiếu chuyên nghiệp.
Thông thường chỉ những người trực tiếp phát triển mới có thể hiểu rõ, và điều này gây rất
nhiều khó khăn cho việc phát triển và bảo trì sau này.
Vậy làm sao để giải quyết vấn đề trên? Workflow System chính là giải pháp. Với giải
pháp Workflow mọi logic công việc đều sẽ được giải quyết dưới dạng mô hình hóa. Thay
vì biểu diễn bằng mớ mã phức tạp thì giờ đây được thay bằng những mô hình trực quan
hơn, dễ hình dung hơn, dễ nắm bắt hơn…Rất hữu ích cho việc nắm bắt và bảo trì sau này.
Với yêu cầu cấp thiết đó, Nhóm chúng tôi quyết định nghiên cứu đề tài này từ cơ bản
nhất chính là:Windows Workflow Foundation. Một căn nhà tốt là một căn nhà có nèn
móng vững vàng, chắc chắn. Việc nắm rõ kiến thức nền tốt sẽ giúp bạn dễ dàng phát triển
về sau hơn.
Mặt dù đã dành rất nhiều thời gian và công sức để nghiên cứu nhưng chắc chắn chúng tôi
sẽ không tránh mắc phải những thiếu sót. Rất mong được nhận ý kiến đống góp từ các
Thầy (Cô) và các bạn.
Tp HCM, Ngày 29 tháng 03 năm 2011
Lê Cao Thùy
Phạm Công Thƣởng
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn Khoa Công Nghệ Phần Mềm, Trường Đại học Công
Nghệ Thông Tin ĐHQG Tp.HCM đã cho phép và tạo điều kiện cho chúng em thực hiện
đề tài tốt nghiệp này.
Chúng em xin chân thành cảm ơn thầy Ngô Thanh Hùng đã tận tình hướng dẫn, chỉ bảo
chúng em trong suốt quá trình thực hiện đề tài này. Qua sự hướng dẫn của Thầy, chúng
em không chỉ học được nhiều kiến thức bổ ích mà còn học được ở thầy phương pháp
nghiên cứu khoa học, thái độ và tinh thần làm việc nghiêm túc, có trách nhiệm.
Chúng em cũng xin chân thành cảm ơn các Thầy (Cô) trong Khoa Công nghệ phần mềm
đã trang bị cho chúng em những kiến thức bổ ích trong suốt quá trình học tập tại trường.
Những kiến thức ấy đã giúp chúng em rất nhiều trong quá trình làm đề tài và cũng là
hành trang cho chúng em tự tin, vững bước vào đời.
Chúng con xin ghi nhớ công ơn của Ba, Mẹ. Ba Mẹ đã luôn là chỗ dựa vững chắc, luôn là
niềm động viên giúp chúng con vượt qua những khó khan trong cuộc sống.
Và cuối cùng, Chúng tôi cũng xin chân thành cảm ơn các bạn sinh viên CNPM01 đã
đồng hành và giúp đỡ với chúng tôi trong thời gian qua.
Mặc dù đã cố gắng hoàn thành luận văn với tất cả nổ lực của bản thân, nhưng chắc chắn
chúng em không tránh khỏi những sai sót, chúng em rất mong được quí Thầy (Cô) tận
tình chỉ bảo. Một lần nữa chúng em xin gửi đén tất cả mọi người lời cảm ơn chân thành
nhất.
Tp HCM, Ngày 29 Tháng 03 Năm 2011
Lê Cao Thùy
Phạm Công Thƣởng
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
ABSTRACT
Document management system is very necessary for most enterprises and organizations.
It supports all activities with documents such as creating, deleting, modifying and sharing
or “flowing” them between the members of organization.
In this thesis we will mention some features of workflow system. Then we will propose
an architecture of a system for managing most of activities with document in a faculty as
mentioned above. The system was built on Workflow Foundation in Visual Studio 2010.
The users work with files stored on a distributed file server through a web interface.
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
NHẬN XÉT
(Của giảng viên hƣớng dẫn)
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
Tp HCM, Ngày
Tháng
Năm 2011
Giảng viên hƣớng dẫn
TS.Ngô Thanh Hùng
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
NHẬN XÉT
(Của giảng viên phản biện)
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
……………………………………………………………………………………………..
Tp.HCM, Ngày
tháng
năm 2011
Giảng viên phản biện
Ths.Phan Nguyệt Minh
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
MỤC LỤC
CHƢƠNG 1: MỞ ĐẦU .............................................................................................................................. 1
1.1.Lý do chọn đề tài ...................................................................................................... 1
1.2.Tính cấp thiết của đề tài .......................................................................................... 1
1.3.Khái quát mục tiêu và ứng dụng đƣợc xây dựng .................................................. 2
CHƢƠNG 2-CƠ SỞ LÝ THUYẾT WORKFLOW FOUNDATION ..................................................... 5
2.1.Vài nét khái quát ...................................................................................................... 5
2.1.1.WorkFlow là gì? .................................................................................................. 5
2.1.2.Giới thiệu Window Workflow Foundation .......................................................... 8
2.2.Xây dựng Workflow ............................................................................................... 15
2.2.1.Mô hình lập trình WF ........................................................................................ 15
2.2.2.Các cách viết WF ............................................................................................... 18
2.3. Khám phá Workflow Activity .............................................................................. 29
2.3.1.Giới thiệu tổng quan về Activity ....................................................................... 29
2.3.2.Các Activity thông dụng .................................................................................... 30
2.4.Activity tùy biến ..................................................................................................... 34
2.4.1.Tại sao nên xây dựng activity tùy biến? ............................................................ 34
2.4.2.Xây dựng Activity tùy biến ............................................................................... 35
2.4.3. Các thành phần Activity ................................................................................... 42
2.5.Tháo và nạp các thể hiện của Workflow .............................................................. 46
2.5.1.Đảm bảo tính lâu dài của các Workflow ........................................................... 47
2.5.2.Giới thiêu về dịch vụ SqlWorkflowPersistenceService..................................... 48
2.5.3.Cài đặt khả năng tháo và nạp thể hiện workflow (xem thêm WF_Lesion 5) .... 48
2.6.Workflow máy trạng thái ...................................................................................... 48
2.6.1.Giới thiệu Workflow máy trạng thái.................................................................. 48
2.6.2.Ví dụ workflow máy trạng thái (tham khảo thêm trong WF_Lession 7) .......... 52
2.7.Luật trong Workflow ............................................................................................. 52
2.7.1.Khái quát luật trong WF .................................................................................... 52
2.7.2.Các luật trong WF .............................................................................................. 52
2.8.Workflow và WebService ...................................................................................... 54
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
2.8.1.Gọi Web service từ workflow............................................................................ 55
2.8.2. Xuất workflow dưới dạng Web service ............................................................ 56
2.9. Workflow trong SharePoint ................................................................................. 67
2.9.1.Tìm hiểu Human Workflow............................................................................... 68
2.9.2.Tìm hiểu System workflow ............................................................................... 69
2.9.3.Các giai đoạn và các Workflow mặc định trong SharePoint ............................. 70
2.9.4.Các công cụ hỗ trợ Workflow trong SharePoint ............................................... 72
CHƢƠNG 3- THIẾT KẾ VÀ CÀI ĐẶT ................................................................................................. 74
3.1.Thiết kế cơ sở dữ liệu ............................................................................................. 74
3.1.1.Sơ đồ luồng dữ liệu (Flow Data Diagram- FDD) .............................................. 74
3.1.2.Các bảng thực thể và thuộc tính......................................................................... 75
3.1.3. Sơ đồ quan hệ dữ liệu và logic.......................................................................... 78
3.1.4. Sơ đồ UseCase .................................................................................................. 81
3.2.Thiết kế ứng dụng .................................................................................................. 83
3.2.1.Biểu đồ lớp ......................................................................................................... 83
3.2.2.Sơ đồ tuần tự (Sequence Diagram) .................................................................... 85
3.3.Workflow đƣợc thiết kế cho ứng dụng ................................................................. 89
3.3.1. Workflow Add_Folder ...................................................................................... 89
3.3.2. Workflow Syn ................................................................................................... 90
3.4.Thiết kế giao diện ................................................................................................... 91
3.4.Cài đặt ..................................................................................................................... 93
3.4.1.Cài đặt cơ sở dữ liệu .......................................................................................... 93
CHƢƠNG 4- KẾT LUẬN ...................................................................................................................... 104
4.1.Kết quả đạt đƣợc .................................................................................................. 104
4.1.1 Những mặt đạt được: ....................................................................................... 104
4.1.2.Những hạn chế: ................................................................................................ 104
4.2 Hƣớng phát triển .................................................................................................. 104
DANH MỤC TÀI LIỆU THAM KHẢO ............................................................................................... 106
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
DANH MỤC CÁC HÌNH VẼ
Hình 1.1Các chức năng ứng dụng ....................................................................................... 3
Hình 2.1 Mô hình xây dựng workflow trong WF. .............................................................. 6
Hình 2.2 Ví dụ WorkFlow trinh tự ...................................................................................... 7
Hình 2.3 WorkFlow máy trạng thái ..................................................................................... 8
Hình 2.4 Vị trí WF trong .NET 3.0
Hình 2.5 Kiến trúc của WF............. 9
Hình 2.6 Kiến trúc WF ...................................................................................................... 16
Hình 2.7 Thiết kế workflow bằng Workflow Designer trong Víual Studio ...................... 17
Hình 2.8 Những lập trình viên liên quan đến WF ............................................................. 18
Hình 2.9 Quy trình xây dựng workflow trong WF ............................................................ 18
Hình 2.10 Tạo project FirstCodeWFApplication .............................................................. 19
Hình 2.11 Thiết kế workflow ............................................................................................ 20
Hình 2.12 Hộp thoại chọn luật cho activity While ............................................................ 21
Hình 2.13 Soạn luật ........................................................................................................... 21
Hình 2.14 Workflow hoàn thiện với các activity của nó ................................................... 22
Hình 2.15 Luật cho nhóm bên phải của activity IfElse ..................................................... 23
Hình 2.16 Tạo Project FirstXAMLWFApplication .......................................................... 25
Hình 2.17 Tạo Workflow với mã XAML.......................................................................... 26
Hình 2.18 Thiết kế workflow MyWorkflow ..................................................................... 26
Hình 2.19 Logic thực thi activity Replicator ..................................................................... 32
Hình 2.20 Tạo dự án CompositionWorkflowExample...................................................... 36
Hình 2.21 Tạo dự án HelloWorldActivityLibrary ............................................................. 37
Hình 2.22 Thiết kế HelloWorldActivity ............................................................................ 38
Hình 2.23 Activity HelloWorldActivity hiển thị bên cạnh các activity khác trong toolbox
........................................................................................................................................... 39
Hình 2.24 Dùng activity HelloWorldActivity trong workflow1 ....................................... 39
Hình 2.25 Kêt qủa chạy ứng dụng CustomActivity .......................................................... 40
Hình 2.26 Tạo dự án DerivationWorkflowExample ......................................................... 40
Hình 2.27 Tạo dự án WriteConsoleActivity...................................................................... 41
Hình 2.28 Cấu hình activity WriteConsoleActivity .......................................................... 42
Hình 2.29 Chạy ứng dụng DerivationWorkflowExample ................................................. 42
Hình 2.30 Tác dụng của các thành phần Validator và Designer ....................................... 46
Hình 2.31 Tháo và nạp thể hiện trong workflow............................................................... 47
Hình 2.32 Example state machine workflow .................................................................... 49
Hình 2.33 Quan hệ giữa các activity của workflow máy trạng thái .................................. 50
Hình 2.34 Nhiều trạng thái cùng xử lý một sự kiện .......................................................... 51
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
Hình 2.35 Trạng thái lồng nhau chung xử lý sự kiện ........................................................ 52
Hình 2.36 Các activity hỗ trợ webservice ......................................................................... 57
Hình 2.37 Tạo dự án SimpleWorkflowWebService.......................................................... 58
Hình 2.38 Màn hình thiết kế workflow SimpleWorkflowWebSevice .............................. 60
Hình 2.39 Workflow sau khi có thêm activity While ........................................................ 64
Hình 2.40 Màn hình thiết kế workflow StatefulWorkflowWebService ............................ 66
Hình 2.41 Human Workflow ............................................................................................. 69
Hình 2.42 Ví dụ System Workflow ................................................................................... 69
Hình 3.1 Sơ đồ quan hệ dữ liệu ......................................................................................... 79
Hình 3.2 Sơ đồ Logic......................................................................................................... 81
Hình 3.3 Sơ đồ UseCase .................................................................................................... 82
Hình 3.4 Sơ đồ lớp 1 .......................................................................................................... 83
Hình 3.5 Sơ đồ lớp 2 .......................................................................................................... 84
Hình 3.6 Sơ đồ tuần tự QL đăng nhập ............................................................................... 85
Hình 3.7 Sơ đồ tuần tự QL tài khoản ............................................................................... 86
Hình 3.8 Sơ đồ tuần tự QL Thư mục ................................................................................ 87
Hình 3.9 Sơ đồ tuần tự QL tập tin ..................................................................................... 88
Hình 3.10 Mô Hình Workflow Syn .................................................................................. 90
Hình 3.11 Giao diện chính của ứng dụng 1 ....................................................................... 91
Hình 3.12 Giao diện chính của ứng dụng 2 ....................................................................... 92
Hình 3.13Giao diện với menu ........................................................................................... 92
Hình 3.14 Giao diện phân quyền ....................................................................................... 93
Hình 3.15 Giao diện thêm mới một tài liệu ....................................................................... 93
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
DANH MỤC CÁC BẢNG
Bảng 1-1 Mô tả chi tiết các UseCase................................................................................... 4
Bảng 2-1 Bảng mô tả các dịch vụ trong WF ..................................................................... 12
Bảng 2-2 Các thuộc tính của Activity ............................................................................... 29
Bảng 2-3 Các phương thức của Activity ........................................................................... 30
Bảng 2-4 Các phương thức của WorkflowInstance .......................................................... 48
Bảng 2-5Các biểu thức luật thường dùng .......................................................................... 54
Bảng 2-6 Các thuộc tính quan trong của Activity InvokeWebService ............................. 55
Bảng 3-1 Bảng AllowDownload ....................................................................................... 75
Bảng 3-2Bảng DocumentType .......................................................................................... 75
Bảng 3-3 Bảng File_Log ................................................................................................... 75
Bảng 3-4 Bảng FileInfo_T ................................................................................................. 75
Bảng 3-5 Bảng Folder_View ............................................................................................. 76
Bảng 3-6 Bảng FileRoles ................................................................................................... 77
Bảng 3-7Bảng Folder_T .................................................................................................... 77
Bảng 3-8 Bảng RootFolder ................................................................................................ 77
Bảng 3-9 Bảng Group_T_Role .......................................................................................... 78
Bảng 3-10 Bảng User_T_role ............................................................................................ 78
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
1
CHƢƠNG 1: MỞ ĐẦU
1.1.Lý do chọn đề tài
Về phương diện của một sinh viên khoa công nghệ phần mềm nói riêng và của lập
trình viên nói chung, chúng ta dễ dàng nhận thấy rằng phương pháp lập trình truyền
thống chúng ta đang sử dụng là khá phức tạp và chưa được chuyên nghiệp hóa. Điều
này được thể hiện khi muốn biểu diễn một logic ứng dụng hay một qui trình tác vụ của
một công việc gì đó thường được biểu diễn bằng một mớ mã hỗn độn và phức tạp.
Chính điều này gây trở ngại lớn cho việc kiểm tra tính logic ứng dụng cũng như bảo
trì, phát triển ứng dụng sau này.
Vấn đề được đặt ra là làm sao để biểu diễn một cách trực quan những logic, qui trinh
ứng dụng này? Workflow System chính là một giải pháp. Nó cho phép bạn mô hình
hóa một cách trực quan và rõ ràng các luồng điều khiển của ứng dụng. Thay vì biểu
diễn logic ứng dụng của bản bằng một mớ code phức tạp, thì việc khai báo logic đó
bằng workflow là đơn giản hơn.Nhờ đó bạn có thể kiểm tra logic ứng dụng của bạn,
làm trực quan hóa nó, theo vết nó khi thực thi và cả thay đổi nó khi đang chạy. Điều
này thật tuyệt, và hơn hết nó giúp ta học được một phương pháp lập trình mới, đơn
giản hơn, logic hơn và đồng thời chuyên nghiệp hơn.
Hơn nữa, ứng dụng cho khoa (cũng tương tự như ứng dụng văn phòng) là một ứng
dụng có khá nhiều tác vụ và luồng công việc, nên có thể nói đây là một mảnh đất màu
mỡ để ta áp dụng những gì tìm hiểu và nghiên cứu được từ cơ sở lý thuyết đem vào
thực tiễn.
1.2.Tính cấp thiết của đề tài
Workflow là một dạng lập trình khai báo (khác với lập trình bằng mã lệnh truyền
thống) đơn giản hơn, logic hơn đồng thời cũng chuyên nghiệp hơn. Việc áp dụng
workflow vào lập trình sau này sẽ giúp cho lập trình viên nói chung và sinh viên Công
nghệ phần mềm của Trường chúng ta nói riêng sẽ ngày càng chuyên nghiệp hơn, đẳng
cấp hơn. Đây chính là cơ sở khác biệt khi đi xin việc và làm việc sau này.
Theo tìm hiểu và lấy yêu cầu thực tế của nhóm. Nhóm nhận thấy việc trao đổi thông
tin qua lại giữa văn phòng khoa với sinh viên, giữa sinh viên với sinh viên còn nhiều
bất cập. Trên hết việc chia sẻ tài liệu học tập của giữa sinh viên với sinh viên… Thời
khóa biểu, các loại đơn, thông báo …giữa văn phòng khoa với sinh viên vẫn còn quá
phức tạp..
Việc xây dựng một Explorer trên mạng giữa sinh viên với văn phòng khoa là hết sức
cần thiết và cấp bách. Nên cần được thực hiện. Đây chính là ứng dụng mà nhóm quyết
định xây dựng .
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
2
1.3.Khái quát mục tiêu và ứng dụng đƣợc xây dựng
Nghiên cứu tìm hiểu và nắm bắt Workflow System từ cơ bản nhất dựa trên Workflow
Foundation trên nền .NET 3.0 đến Workflow system ở mức cao hơn là Workflow
System trong SharePoint 2010. Qua đó hi vọng có thể truyền tải đến Thầy (Cô) và các
bạn những kiến thức về Workflow rõ ràng nhất, xúc tích nhất, từ đó có thể vận dụng
nó dễ dàng trong lập trình hiện tại và sau này.
Từ kiến thức tìm hiểu cũng như nhu cầu cấp thiết đặt ra Nhóm sẽ nỗ lực xây dựng hệ
thống quản lý tài liệu (Explorer) trực tuyến phục vụ cho nhu cầu của Khoa. Các tính
năng dự kiến gồm:
Thêm mới một tài liệu
Cắt/dan một tài liệu
Thay đổi tên một tài liệu
Xóa một hay nhiều tài liệu
Làm tươi (Refresh) dữ liệu
Di chuyển đến thư mục cha
Di chuyển tài liệu
Tìm kiếm tài liệu
Đồng bộ tài liệu: Đồng bộ dữ liệu giữa ổ cứng và database
Theo dõi lịch sử tài liệu: Các version bản của tài liệu
Phân quyền trên tài liệu
Quản lý [Check out]hoặc [Check in]tài liệu
Download tài liệu
Chỉ mục thông tin tài liệu
Quản lý version tài liệu
Các chức năng trên được mô tả trực quan trong usecase diagram sau:
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
3
Hình 1.1Các chức năng ứng dụng
Chi tiết của các Usecase được mô tả chi tiết trong bảng sau:
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
4
Bảng 1-1 Mô tả chi tiết các UseCase
Tên UseCase
QuanTri
ThanhVien
Khach
DangNhap
DangXuat
QLPhanQuyen
QLThuMuc
ThemThuMuc
SuaTenThuMuc
XoaThuMuc
DiChuyenThuMuc
DongboThuMuc
QLTapTin
ThemTapTin
XoaTapTin
DiChuyenTapTin
TaiTapTin
XemThuMuc
XemTapTin
TS.Ngô Thanh Hùng
Mô tả
Quản trị
Thành Viên
Khách
Đăng nhập vào hệ thống
Đăng xuất khỏi hệ thống
Quản lý việc cấp quyền cho User
Quản lý thư mục
Thêm Thư Mục
Sửa tên thư mục
Xóa thư mục
Di chuyển thư mục
Đồng bộ thư mục
Quản lý tập tin
Thêm Tập tin
Xóa Tập Tin
Di chuyển tập tin
Tải tập tin
Xem thư mục
Xem tập tin
Phạm Công Thưởng-Lê Cao Thùy
5
CHƢƠNG 2-CƠ SỞ LÝ THUYẾT WORKFLOW FOUNDATION
2.1.Vài nét khái quát
2.1.1.WorkFlow là gì?
Là người phát triển, công việc của chúng ta là để giải quyết vấn đề thật sự trong công
việc. Các loại và phức tạp của các vấn đề sẽ khác nhau rộng rãi tùy theo tính chất của
công việc. Nhưng bất kể sự phức tạp của bất kỳ vấn đề nào đó, chúng ta có xu
hướng để giải quyết vấn đề trong cùng một cách: chúng ta chia vấn đề thành các bộ
phận quản lý được. Những bộ phận được chia thành các nhiệm vụ nhỏ hơn, và cứ như
vậy.
Cuối cùng khi chúng ta đã đạt đến một điểm mà tại đó mỗi công việc có một độ lớn
thực sự để hiểu và quản lý, chúng ta xác định lại các bước cần thiết để hoàn
thành nhiệm vụ. Các bước luôn luôn có một thứ tự liên kết với chúng. Nó đại diện cho
một chuỗi những chỉ dẫn riêng biệt sẽ mang lại những hành vi mong đợi chỉ khi chúng
được thực hiện theo đúng thứ tự.
Workflow đơn giản chỉ là trật tự của một loạt các bước thực hiện hiện một số mục
đích được xác định theo mọt bộ quy tắc. Theo định nghĩa đó, những gì chúng
ta vừa mô tả là một Worflow.
Ví dụ, một luồng công việc thực hiện mua bán hàng hóa đơn giản nhất gồm một chuỗi
các bước như sau: Đầu tiên người mua xem tính năng sản phẩm và giá, nếu cảm thấy
thõa mãn thì chọn mua sản phẩm đó, tiếp theo điền thông tin cá nhân vào phí thanh
toán và cuối cùng là thanh toán đơn hàng.
Sự khác biệt của Workflow (Tham khảo thêm thêm chapter 1 Pro WF )
Mô hình xây dựng WorkFlow
Để xây dựng workflow trong WF, người ta có thể tạo “khai báo” workflow bằng một
ngôn ngữ dựa trên XML gọi là XAML, hoặc có thể dùng mã lập trình C# hoặc VB,
hoặc kết hợp cả 2 cách đó. Sau khi đã xây dựng được workflow cần biên dịch chúng
thành .Net assembly để có thể thực thi được trong mỗi trường .NET runtime. Quá
trình biên dịch gồm hai công đoạn:
Dịch từ mã khai báo hoặc mã lập trình thành các đoạn mã C#/VB thuần túy
bằng công cụ Workflow Complier (file wfc.exe)
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
6
Dịch từ mã C# /VB sang .NET assembly giống như các ứng dụng .NET truyền
thống.
Hình 2.1 Mô hình xây dựng workflow trong WF.
Các loại workflow trong WF:
Có 2 loại
Workflow trình tự (Sequential Workflow) là loại thông dụng hơn và là ví dụ
mà người ta hay nghĩ khi nói đến workflow. Loại workflow mô tả một tiến
trình có điểm khởi đầu, sau đó thực thi một số các activity theo thứ tự được
định sẵn rồi cuối cùng đi đến điểm kết thúc. Trong workflow trình tự bạn có
thể dùng các logic điều khiển tương tự các ứng dụng truyền thống: if-then,
vòng lặp while, điểm khác biệt ở đây là các logic điều khiển này có thể được
thể hiện trực quan và được khai báo chứ không cần lập trình.
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
7
Hình 2.2 Ví dụ WorkFlow trinh tự
Workflow máy trạng (State machine Workfow)thái khác với workflow trình
tự ở chỗ nó là sự chuyển đổi linh hoạt giữa các trạng thái chứ không phải là sự
thi hành theo thứ tự định trước. Việc chuyển đổi gây ra bởi các sự kiện.
Workflow loại này bao giờ cũng bắt đầu ở trạng thái khởi đầu, sau đó hoạt
động di chuyển trạng thái và có thể đạt đến trạng thái kết thúc.
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
8
Hình 2.3 WorkFlow máy trạng thái
2.1.2.Giới thiệu Window Workflow Foundation
Nếu Workflow quan trọng thì tại sao ta lại sử dụng Windows Workflow Foundation
(WF)? Microsoft đã cung cấp cho nền tảng này để đơn giản hóa và nâng cao việc phát
triển .NET của bạn. Nó không phải là một ứng dụng độc lập. Nó là nền tảng phần
mềm được thiết kế để cho phép các ứng Workflow trong các ứng dụng của bạn. Bất kể
loại ứng dụng bạn đang phát triển , có nhiều vấn đề ứng dụng trong WF mà bạn có thể
tận dụng.
Lý do sử dụng WF: (Tham khảo thêm Pro_WF chapter1)
2.1.2.1.Kiến trúc của Windows Workflow Foundation
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
9
Như đã giới thiệu ở trên, WF là một thành phần nằm trong nền tảng .NET 3.0. Bên
cạnh WF, .NET còn có một số mô hình lập trình mới như là WCF, WPF, CardSpace.
Hình 2.4 Vị trí WF trong .NET 3.0
Hình 2.5 Kiến trúc của WF
WF là một mô hình, trang bị một cơ chế và các công cụ để xây dựng các ứng dụng
thiên về luồng công việc. Như trong hình 2.5 một workflow trong WF được cấu từ các
activity, các activity này thường là được tạo ra từ BAL-thư viện activity cơ bản của
WF hoặc cũng có thể là các activity tùy biến của người dung.Một workflow sẽ chạy
trong Runtime Engine, trong Runtime Engine có thể bao gồm cả các dịch vụ chạy
(Runtime Service). Đến lượt Runtime Engine lại được lưa trú ở một tiến trình của ứng
dụng chủ (host process), ứng dụng chủ có thể là bất cứ loại ứng dụng nào của .NET
chạy phía client hay server : winform, winservice, webform, webservice.
2.1.2.2.Môi trƣờng phát triển WF
Windows Workflow Foundation là một phần của NET 3.0.Các môi trường phát
triển đã
được cung
cấp như một Addin cho Visual Studio 2005.Visual Studio 2008 hiện
nay bao
gồm tích
hợp hỗ
trợ cho WF (không có add-in), và.NET 3.5 bao gồm một số tính năng mới WF như hỗ
trợ cho các dịch vụ công việc.
Để phát triển các ứng dụng bằng cách sử dụng Windows Workflow Foundation, bạn
sẽ cần phải cài đặt một thiết lập tối thiểu của các phần mềm. Các yêu cầu tối thiểu như
sau:
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
10
Visual Studio 2008 Professional, Standard, or Team System
The .NET 3.5 runtime (được cài đặt cùng với Visual Studio 2008)
Sự kết hợp giữa VS 2008 với .NET 3.5 sẽ cho phép bạn sử dụng tất cả các tính năng
mới nhất WF. Ngoài ra, bạn vẫn có thể sử dụng Visual Studio 2005 và .NET 3.0 cho
WF phát triển. Tuy nhiên, nếu làm vậy , bạn sẽ bị giới hạn khi sử dụng các tính năng
gốc của WF.Các yêu cầu tối thiểu đối với WF khi sử dụng Visula Stdio và .NET 3.0
là:
Visual Studio 2005 Enterprice, Professional, or Standard.
The .NET 3.0 runtime.
Một phiên bản được chỉ định của Windows SDK hỗ trợ WF
The WF add-in đến Visual Studio
2.1.2.3.Thƣ viện lớp và Framework
Các thư viện lớp bao gồm các lớp cơ sở và các interface mà bạn tận dụng khi xây
dựng các ứng dụng workflow. Chúng là những khối xây dựng mà bạn sử dụng và mở
rộng khi xây sựng ứng dụng.
Với một vài ngoại lệ, tất cả các lớp liên quan đến WorkFlow đều được tổ chức tại một
trong những namespace System.Workflow. Bản sau cung cấp tổng quan những không
gian tên có trong WF.
Namespace
System.Workflow.Activities
Mô tả
Bao gồm các activities chuẩn và
những lớp liên quan để hình thành
các khối xây dựng một Workflow
System.Workflow.Activities.Rules
Bao gồm những điều kiện và
hành động được dùng để định
nghĩa các qui tắc
System.Workflow.ComponentModel
Bao gồm những lớp cơ sở chính
và interface được sử dụng bởi
những lớp trong namespace khác
System.Workflow.ComponentModel.Compiler
Bao gồm các lớp được sử dụng để
biên dịch WorkFlow
System.Workflow.ComponentModel.Designer
Cho phép bạn mở rộng hành vi
thiết kế của activities và
WorkFlow
System.Workflow.ComponentModel.Serialization Bao gồm các lớp được sử dụng
trong suốt Workflow tuần tự và
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
11
System.Workflow.Runtime
System.Workflow.Runtime.Configuration
System.Workflow.RuntimeDebugEngine
System.Workflow.Runtime.Hosting
System.Workflow.Runtime.Tracking
System.ServiceModel
không tuần tự
Bao gồm các lớp quản lý môi
trường runtime trong Workflow
Bao gồm các lớp dùng để cấu
hình Workflow Runtime
Bao gồm các lớp liên quan dến
chạy debug Workflow
Bao gồm các lớp liên quan đến
việc lưu trữ Workflow runtime
như core service.
Bao gồm các lớp được sử dụng
bởi tracking service
Bắt đầu với .NET 3.5. tên miền
không gian này có một vài lớp
được sử dụng bởi WF. không gian
này
thuộc
về
Windows
Communication
Foundation
(WCF), nhưng nó bao gồm các
lớp
học
(ví
dụ:
WorkflowServiceHost) được sử
dụng để khám phá Workflow như
WCF service.
2.1.2.4. Các dịch vụ chạy (runtime service) trong WF
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
12
Các dịch vụ chạy trong WF chứa các lớp chuẩn và lớp người dùng tùy biến cần thiết
cho engine của workflow runtime trong quá trình thi hành (hình). Các dịch vụ này
thực hiện các tác vụ liên quan đến thực thi và bảo trì workflow. Sau đây là một số dịch
vụ:
Bảng 2-1 Bảng mô tả các dịch vụ trong WF
Tên dịch vụ
Transaction
tác)
Mô tả
(giao Là dịch vụ giúp bạn bảo
đảm tính toàn vẹn của
ứng dụng workflow.
Transaction được định
nghĩa là một nhóm các
activity trong chuỗi mà
bị lỗi, các hành động đã
thực hiện phải được
quay lui. Tuy nhiên các
transaction mà thực thi
trong thời gian dài
không phải lúc nào cũng
có thể quay lui, thay vào
TS.Ngô Thanh Hùng
Các lớp liên quan
DefaultWorkflowTransactionService
(mặc định)
SharedConnectionWorkflowTransactionService
Phạm Công Thưởng-Lê Cao Thùy
13
đó nó một số logic được
triển khai để đảm bảo
trạng thái ổn định của
workflow. Kiến trúc
dịch vụ transaction
trong WF hỗ trợ hai loại
transaction
là
transaction
ACID
(Atomic-nguyên
tử,
Consistency-nhất quán,
Isolate-phân tách và
Dủable-lâu
bền)và
transaction chạy lâu dài
(longrunning).Transaction
chạy lâu dài khác với
ACID ở chỗ nó không
có tính Isolate, bởi vì có
các activity nhất định
không thể quay lui.
Tracking (theo dõi) Lịch vụ này cho phép SqlTrackingService
bạn theo dõi và ghi lại
sự
thực
thi
của
workflow. Dịch vụ
tracking dung khái niệm
tracking profiles và
tracking channels để xác
định activity nào cần
theo dõi và loại phương
tiện lưu trữ là gì. Lớp
trừu
tượng
TrackingService dung
để quản lý các profile và
channel cho workflow
runtime. Thông thường,
người ta hay lưu thông
tin đó vào SQL Server
Một
trong
những SqlWorkflowPersistenceService
Persistence
nguyên
tắc
của
workflow là nó cần phải
lưu được trạng thái và
có thể chạy trong thời
gian dài. Nguyên tắc
này quan trọng vì
worlflow phải tương tác
với các tác nhân ngoài
như người dung và ứng
TS.Ngô Thanh Hùng
Phạm Công Thưởng-Lê Cao Thùy
14
Scheduling
TS.Ngô Thanh Hùng
dụng khác, các nghiệp
vụ này có thể thực hiện
lại quay ra làm việc
khác rồi mới tiếp tục
quay trở
lại
với
workflow. Những lúc
workflow không làm gì
cả trong khoảng thời
gian dài mà nó vẫn tồn
tai trong bộ nhiứ sẽ làm
tốn tài nguyên máy tính,
do vậy WF hỗ trợ cơ
chế cho phép tháo
workflow ra khỏi bộ
nhớ và lưu ra phương
tiện lưu trữ lâu dài
chẳng hạn như cơ sở dữ
liệu. Cơ chế chư vậy
được gọi là persistence.
Cho phép bạn định DefaultWorkflowSheduler Service,
nghĩa cách workflow thi ManualWorkflow ShedulerService
hành trong mỗi quan hệ
với các thread thế nào.
Mặc định WF chạy các
workflow theo cơ chế
không đồng bộ, thực là
khi workflow khởi động
từ ứng dụng chủ, nó
chạy trong một thread
riêng biệt và trả về điều
khiển cho ứng dụng chủ
ngay lập tức. Điều này
rất tốt cho ứng dụng như
winform vì nó làm cho
giao diện không bị “đơ”.
Tuy nhiên với các ứng
dụng web form hay
webservice chạy trên
server, thì tốt hơn là khá
thread của ứng dụng chủ
lại đợi cho workflow trả
về điều khiển vì nếu
không ứng dụng chủ mà
hồi đáp cho client ngay
thì không có giá trì gì
hết. Tất cả việc điều
khiển cơ chế thread như
Phạm Công Thưởng-Lê Cao Thùy