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

NGHIÊN cứu WORKFLOW SYSTEM và xây DỰNG hệ THỐNG QUẢN lý tài LIỆU QUA MẠNG

117 97 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

Định dạng
Số trang 117
Dung lượng 9,81 MB

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

Nội dung

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 t

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

(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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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

Trang 10

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

Trang 11

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

Trang 12

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

Trang 13

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:

Trang 14

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:

Trang 15

Bảng 1-1 Mô tả chi tiết các UseCase

QLPhanQuyen Quản lý việc cấp quyền cho User

DiChuyenTapTin Di chuyển tập tin

Trang 16

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)

Trang 17

 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

Trang 18

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

Trang 19

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

Trang 20

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

Add-in 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ư

Trang 21

 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

System.Workflow.Activities 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à

Trang 22

không tuần tự

System.Workflow.Runtime Bao gồm các lớp quản lý môi

trường runtime trong Workflow

System.Workflow.Runtime.Configuration Bao gồm các lớp dùng để cấu

hình Workflow Runtime

System.Workflow.RuntimeDebugEngine Bao gồm các lớp liên quan dến

chạy debug Workflow

System.Workflow.Runtime.Hosting Bao gồm các lớp liên quan đến

việc lưu trữ Workflow runtime như core service

System.Workflow.Runtime.Tracking Bao gồm các lớp được sử dụng

bởi tracking service

System.ServiceModel 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

Trang 23

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

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

DefaultWorkflowTransactionService (mặc định)

TransactionService

Trang 24

SharedConnectionWorkflow-đó 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 (long-

running).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

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

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

SqlTrackingService

Persistence Một trong những

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

SqlWorkflowPersistenceService

Trang 25

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

Scheduling Cho phép bạn định

nghĩa cách workflow thi 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ư

DefaultWorkflowSheduler Service, ManualWorkflow ShedulerService

Trang 26

vậy được thực hiện bằng dich vụ scheduling

Workflow Loader Cho phép tạo thể hiện

của workflow khi gọi phương thức Create Workflow

Default Workflow LoaderService

Data Exchange Quản lý các dịch vụ

truyền thông tùy biến

Dịch vụ tùy biến

(của người dùng)

Tuy các dịch vụ được cung cấp sẵn có chứa rất nhiều dịch vụ nhưng luôn nảy sinh nhu cầu dùng các dịch vụ đặc trưng, chẳng hạn lập trình viên nào đó có thể yêu cầu workflow theo dõi dữ liệu gửi qua webservice có bị lỗi hay không.WF cho phép người dung định nghĩa các dịch vụ của riêng họ

và được sử dụng như các dịch vụ chuẩn được cung cấp sẵn trong framework

2.2.1.1.Các Activity

Activity là đơn vị thực thi cơ bản của chương trình WF Có thể nói nó giống vai trò của các control trong Winform

Các activity đều thừa kế từ lớp System.Workflow.ComponentModel.Activity Phương

thức Excecute của nó được override để định nghĩa logic thực thi, phương thức này

Trang 27

Các activity phân làm hai loại: activity được cung cấp sẵn (out-of-the-box) nằm trong thư viện chuẩn BAL (Base Activity Library) và activity tùy biến của người dùng (custom) Do người dùng có thể tự định nghĩa các activity của mình nên workflow rất mềm dẻo, hầu như có thể làm bất cứ chuyện gì tương tự như phong cách lập trình truyền thống (viết mã lệnh)

Khi người định nghĩa một activity, WF cho phép hai lựa chọn:

 Activity cơ bản: chỉ thừa kế từ lớp Activity và override phương thức Execute

 Activity phức hợp: chứa các activity khác Visual Studio trợ giúp cho chúng ta

định nghĩa activity dễ dàng Có thể thiết kế Activity rất trực quan

2.2.1.2.Tổ chức chạy WF

Như đã giới thiệu , kiến trúc của WF quy định mọi WF đều phải chạy trên môi trường

WF runtime (hình), đó là thư viện tạo môi trường thực thi cho WF Thực chất các WF không thể tự nó chạy độc lập giống như các ứng dụng *.exe cổ điển được mà nó phải được tổ chức chạy trên một phạm vi ứng dụng nền CLR nào đó như là winform, web form WF runtime thực thi các workflow và quản lý trạng thái của WF trong suốt thời gian sống của WF

Hình 2.6 Kiến trúc WF 2.2.1.3.Công việc của nhà lập trình phát triển WF

Cách đơn giản nhất để tạo và sửa các workflow WF là bằng trình thiết kế Workflow (Workflow Designer) Mặc định trình thiết kế này nằm trong Visual Studio – chứa các mẫu project để tạo các workflow dạng tuần tự hoặc máy trạng thái… Bằng cách kéo thả các activity vào vùng thiết kế và thiết lập các thuộc tính của chúng, các nhà phát triển có thể tạo và sửa workflow một cách dễ dàng Cách tiếp cận này tương tự như khi chúng ta làm các ứng dụng Windows Forms hay Windows Presentation Foundation

Trang 28

Hình 2.7 Thiết kế workflow bằng Workflow Designer trong Víual Studio

Trong môi trường lập trình chuyên nghiệp, có những nhóm lập trình viên được phân công chỉ tập trung làm những lĩnh vực nhỏ, rồi mới ghép các sản phẩm từ các nhóm đó với nhau thành hệ thống lớn Với WF, chúng ta có thể phân ra ba loại nhóm lập trình viên:

 Lập trình viên chuyên phát triển các ứng dụng chủ, đây là các ứng dụng truyền thống trên nền NET, vì thế lập trình viên không cần có hiểu biết sâu sắc và không cần thao tác trực tiếp với WF

 Lập trình viên chuyên tạo ra các Activity: nhiệm vụ tạo ra các “viên gạch” cho workflow

 Workflow Deviloper: Gắn kết các activity với nhau, cấu hình chúng để tạo nên workflow hoàn thiện Nhóm lập trình viên này không phải dùng nhiều đến mã lập trình mà chủ yếu tương tác với trình Workflow Designer

Trang 29

Hình 2.8 Những lập trình viên liên quan đến WF

2.2.2.Các cách viết WF

Để tạo ra các workflow trong WF chúng ta có thể sử dụng mã lệnh của ngôn ngữ C#, VB.NET hoặc dùng ngôn ngữ khai báo XAML Thông thường chúng ta hay kết hợp

cả hai cách trên

Hình 2.9 Quy trình xây dựng workflow trong WF

Trong ví dụ này chúng ta đưa ra hai ví dụ xây dựng workflow bằng hai phương pháp

đó với cùng một bài toán hết sực đơn giản: đếm từ 0 đến 10 và hiển thị số đó là chẵn hay lẻ Logic của bài toán trên thể hiện bằng mã chương trình bình thường như sau:

Trang 30

Khởi động Visual Studio, tạo một dự án mới chọn ngôn ngữ Visual C# với workflow

và chọn template là Sequential Workflow Console Application Đặt tên dự án là FirstCodeWFApplication

Hình 2.10 Tạo project FirstCodeWFApplication

Trang 31

Mặc định Visual Studio tạo cho chúng ta một workflow tên là workflow1 và ngôn ngữ của nó là lệnh C# (Workflow1.cs – xem trong Solution Explorer) Visual Studio cũng tạo sẵn file program.cs là WF runtime của workflow1 Mở Toolbox (Ctrl+W, X), kéo activity while vào vùng thiết kế của workflow, đặt giữa điểm khởi đầu (mầu xanh) và điểm kết thúc (mầu đỏ), chúng ta thấy workflow có hình như sau:

Hình 2.11 Thiết kế workflow

Bạn có thể thấy hình dấu chấm than đỏ, đó là Visual Studio báo cho chúng ta rằng activity while của chúng ta chưa hợp lệ vì chưa được thiết lập điều kiện lặp Bây giờ hãy thêm một thuộc tính private cho lớp workflow trước đã:

Trang 32

Hình 2.12 Hộp thoại chọn luật cho activity While

Click vào nét “New” để vào hộp thoại “Rule Condition Editor” và soạn điều kiện kết thúc cho vòng while giống như hình dưới

Hình 2.13 Soạn luật

Chọn OK hai lần, chúng ta đã thiết lập xong vòng while

Trang 33

Tiếp tục trở lại với màn hình thiết kế workflow, hãy thêm một activity dạng IfElse vào trong whileActivity1, sau đó thêm hai Code activity vào hai nhánh của IfElse Giờ đây workflow của chúng ta thể hiện như sau hình sau:

Hình 2.14 Workflow hoàn thiện với các activity của nó

Tương tự như activity while, activity IfElse cũng cần thiết lập các điều kiện Chúng ta lại thêm luật và gán cho nhánh bên trái của IfElse (từ cửa sổ Properties ->chọn Condition -> Rule Condition Editor) (hình dưới)

Trang 34

Hình 2.15 Luật cho nhóm bên phải của activity IfElse

Việc tiếp theo của chúng ta là viết mã cho các code Activity1 và codeActivity2 Hãy click đúp chuột vào các code Activity đó và thêm các đoạn mã như sau:

private void codeActivity1_ExecuteCode(object sender, EventArgs e)

Trang 35

Và cuối cùng, sửa một chút file Program.cs để chúng ta có thẻ xem được kết quả hoạt động của workflow Thêm dòng System.Console.Read(); vào cuối hàm Main

Sau khi hoàn tất bấm F5 để xem kết quả:

Hình-Kết quả chạy ứng dựng workflow chỉ sử dụng mã lập trình

2.2.2.2.Xây dựng workflow sử dụng mã XAML

Trong Visual Studio, hãy tạo một dự án mới, ở phần thiết lập, tương tự như ứng dụng bằng mã ở phần 2.1, chọn template là Sequential Workflow Console Application, đặt tên dự án là FirstXAMLWFApplication

Trang 36

Hình 2.16 Tạo Project FirstXAMLWFApplication

Mặc định, dự án Workflow bao gồm file mã nguồn định nghĩa workflow, vì chúng ta muốn làm việv với XAML, hãy xóa file workflow1 đi Sau đó thay thế bằng file định nhĩa workflow bằng XAML: chuột phải vào Solution Explorer, chọn 'Add New Item' sau đó chọn 'Sequential Workflow with Code Separation' file 'Code Separation'

Trang 37

Hình 2.17 Tạo Workflow với mã XAML

Hãy sửa tên file vừa tạo ra thành MyWorkflow.xoml Cần phải chú ý là file *.oml chính là file định nghĩa workflow bằng XAML

Thiết kế workflow tương tự như trên:

Hình 2.18 Thiết kế workflow MyWorkflow

Trang 38

Hãy mở file MyWorkflow.xoml, chúng ta thấy bản chất nó là 1 file XAML, mọi thành phần của workflow đều có thể được viết bằng ngôn ngữ xml, khá đơn giản kể cả cho những người không chuyên về kỹ thuật lập trình

<SequentialWorkflowActivity x:Class="FirstXAMLWFApplication.MyWorkflow" x:Name="MyWorkflow" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow">

Trang 39

Sau đó, tương tự như phần 2.2.2.1, hãy tiết lập các luật và cho các activity While và IfElse xong Thiết lập mã cho các activity Code1 và Code2

Sửa lại file chủ Program.cs như sau để gọi workflow chạy:

waitHandle.WaitOne();

System.Console.Read();

}

Trang 40

}

}

Kết quả chạy tương tự như phần 2.2.2.1

2.3 Khám phá Workflow Activity

2.3.1.Giới thiệu tổng quan về Activity

Activity (hành động) đối với các workflow trong Windows Workflow Foundation

(WF) cũng giống như các khối logic trong một khối xếp hình, tức là nó là đơn vị cơ bản của workflow Một tiến trình nghiệp vụ có thể được chia thành nhiều phần được gọi là các tác vụ nhỏ Mỗi tác vụ nhỏ đó thường tập trung vào một công việc cụ thể,

và người ta dùng thuật ngữ Activity để chỉ các tác vụ nhỏ đó trong workflow

Các đối tượng activity trong các workflow là các đối tượng của các lớp thừa kế từ lớp

System.Workflow.ComponentModel.Activity Thư viện các activity cơ bản (BAL)

cung cấp khá nhiều activity rất hữu ích và có nhiều tính năng rất hay được sử dụng Tất nhiên khi cần có các activity thực thi những chức năng đặc biệt, người dùng cũng

có thể tạo các activity của riêng họ gọi là Activity tùy biến (Custom Acitivity)

Để hiểu rõ hơn về Activity, phần sau đây là bảng thống kê các thuộc tính và phương thức của lớp Activity:

Bảng 2-2 Các thuộc tính của Activity

Description Các miêu tả của người dùng về Activity

Enabled Giá trị thể hiện rằng liệu thể hiện của nó

được cho phép thực thi và phê chuẩn (valudation)hay không

ActivityExecutionResult của lần gần nhất chạy thể hiện của nó (Giá trị có thể là: Canceled, Compensated, Faulted,None hoặc Succeeded)

ExecutionStatus Cho phép đọc trạng thái của Workflow

dưới dạng một trong các giá trị của ActivityExecutionStatus (Canceling, Closed, Compensating, Executing, Faulting, and Initialized)

Name Cho phép thiết lập hoặc đọc tên thể hiện

của activity này

Parent Lấy (tham chiếu) đến activity mà chứa

activity này

WorkflowInstanceld Tham chiếu đến định danh workflow liên

Ngày đăng: 23/12/2018, 06:14

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