Tại sao lại dùng luồng công việc workflow: Lý do lớn nhất là vì luồng công việc cho phép ta 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 một ứng dụng.. Ngoài ra wor
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Giảng viên hướng dẫn: TS.NGÔ THANH HÙNG
Sinh viên thực hiện: VÕ NHƯ THÔNG – NGUYỄN TRIỆU QUỐC Lớp: CNPM02
Khóa: 2
TP Hồ Chí Minh, tháng 1 năm 2012
Trang 2Trong thời gian qua, chúng em đã nghiên cứu tìm hiểu để làm cách nào tin học hóa mô hình “Một cửa”, đây là mô hình giúp xử lí một công việc có các phòng ban liên quan và qua nhiều khâu, mà công việc sẽ được hoàn thành qua từng khâu
Tại sao lại dùng luồng công việc (workflow): Lý do lớn nhất là vì luồng công việc cho phép ta 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 một ứng dụng Thay vì biểu diễn logic ứng dụng của ta bằng một mớ mã phức tạp, thì khai báo logic đó bằng luồng công việc rõ ràng là làm đơn giản hơn Nhờ đó, ta có thể kiểm tra logic ứng dụng của ta, làm trực quan hóa nó, theo vết nó khi thực thi và kể cả thay đổi nó khi đang chạy Điều này rõ ràng là tuyệt vời
Ngoài ra workflow cho phép phối hợp làm việc giữa con người và phần mềm bằng các loại giao diện tương tác khác nhau: email, web-form, winform, instant message
Tại sao nên dùng WF: WF là nền tảng cho phép các nhà phát triển xây dựng các ứng dụng có các luồng công việc trở nên đơn giản hơn Thực tế, có rất nhiều nhà phát triển đã phát triển framework của riêng họ, điều này cho thấy sự cần thiết phải có một framework đủ tốt hỗ trợ cho các ứng dụng về luồng công việc Sự ra đời của WF đã giải quyết được nhu cầu này Một workflow trong WF được cấu thành từ các activity Theo quan điểm của người lập trình thì workflow hay activity đều là các đối tượng được hình thành từ các lớp, do vậy có thể định nghĩa được các workflow hay activity tùy ý Cũng giống winform hoặc webform có điều khiển chuẩn thì Microsoft cũng cung cấp các activity cơ bản gọi là BAL (Base Activity Library), hầu hết các workflow đều được xây dựng chỉ từ các activity này Nhà phát triển có thể thiết kế workflow rất trực quan qua công cụ thiết kế workflow đồ họa trên (Workflow Designer) Visual Studio Rất nhiều người thích tính trực quan và dễ dàng nắm bắt của giao diện đồ họa này nhưng cũng có người thích những dòng mã hơn, vì thế WF cho phép họ làm như thế hoặc phối hợp cả hai cách Như vậy WF cho hiệu quả phát triển workflow luôn ở mức cao nhất, thuận tiện nhất với tất cả mọi người Workflow được WF hỗ trợ phát triển nhanh chóng và dễ dàng như vậy nên chi phí phát triển sẽ giảm đáng kể mà chất lượng vẫn được đảm bảo
Vì các tiện ích của WF mà chúng em đã chọn đề tài “Nghiên cứu và xây dựng ứng dụng hỗ trợ quản lý luồng công việc (workflow foundation net)
Trang 3”, cụ thể là phát triển một phần mềm giúp hỗ trợ phòng công tác chính trị sinh viên xử
lí các công việc mà trước giờ sinh viên hay cán bộ phòng công tác chính trị sinh viên phải tự làm bằng tay
Nội dung chính của tài liệu này bao gồm
Chương 1: Khảo sát
Chương 2: Cơ sở lí thuyết
Chương 4: Phân tích thiết kế
Chương 3: Cài đặt
Chương 5: Kiểm tra và đánh giá
Chương 6: Kết luận
Trang 41
MỤC LỤC
MỤC LỤC 1
BẢNG VIẾT TẮT 4
1 MỤC TIÊU VÀ PHẠM VI CỦA ĐỀ TÀI 4
1.1 Đặt vấn đề 4
1.1.1 Hiện trạng thực tại 4
1.1.1.1 Duyệt đơn cho sinh viên 4
1.1.1.2 Tổ chức cuộc thi viết 4
1.1.2 Giải pháp đưa ra 4
1.2 Mục tiêu 5
1.3 Phạm vi 5
2 KHẢO SÁT HIỆN TRẠNG 6
2.1 Quy trình thủ công hiện tại đang sử dụng 6
2.1.1 Quy trình duyệt đơn 6
2.1.2 Về quy trình tổ chức cuộc thi 6
2.2 Hệ thống tin học hóa dùng để thay thế 6
2.2.1 Duyệt đơn 6
2.2.2 Tổ chức cuộc thi 6
2.3 Đánh giá hệ thống hiện hữu 7
2.4 Định hướng nghiên cứu và giải pháp 7
2.4.1 Dữ liệu 7
2.4.1.1 Dữ liệu vào: 7
2.4.1.2 Các xử lí cần thiết: 7
2.4.1.3 Dữ liệu ra: 8
2.4.2 Công nghệ sử dụng 8
2.4.3 Yêu cầu chức năng 8
2.4.4 Yêu cầu phi chức năng 8
Trang 52
2.4.4.1 Một số biểu mẫu được sử dụng trong hệ thống 8
3 CƠ SỞ LÍ THUYẾT 12
3.1 Workflow là gì 12
3.2 Khảo sát các ứng dụng quản lí workflow trên thị trường 12
3.3 Kiến trúc của Windows Workflow Foundation 15
3.3.1 Hai loại activity 16
3.3.1.1 Giới thiệu tổng quan về Activity 17
3.3.2 Lưu trú 20
3.3.3 Các dịch vụ chạy (runtime service) trong WF 20
3.3.4 Mô hình xây dựng workflow 25
3.3.5 Các loại workflow trong WF 25
3.3.6 So sánh WF với WCF 26
4 PHÂN TÍCH THIẾT KẾ 27
4.1 Phân tích hệ thống 27
4.1.1 Mô hình use case 27
4.1.2 Mô hình DFD 28
4.1.2.1 Mô hình ngữ cảnh 28
4.1.2.2 Mô hình cấp 1 của process quản lí tài khoản 29
4.1.2.3 Mô hình cấp 1 của process tác vụ quản lí cuộc thi 29
4.1.2.4 Mô hình cấp 1 của process tham dự cuộc thi 29
4.1.2.5 Mô hình cấp 1 của process duyệt đơn 29
4.1.2.6 Mô hình cấp 1 quy trình quản lý động cuộc thi 30
4.1.3 Mô hình thực thể 30
4.1.3.1 Mô tả thực thể 31
4.1.3.2 Mô tả quan hệ 33
4.2 Thiết kế chương trình 35
4.2.1 Thiết kế dữ liệu 35
Trang 63
4.2.1.1 Chuyển sang mô hình quan hệ tư mô hình thực thể kết hợp 35
4.2.1.2 Sơ đồ CSDL 37
4.2.1.3 Diễn giải CSDL 38
4.2.2 Diễn giải luồng công việc 45
4.2.2.1 Mô tả luồng công việc của quy trình duyệt đơn 45
4.2.2.2 Mô tả luồng làm việc của quy trình chấm bài thi 48
4.2.3 Thiết kế màn hình 53
4.2.3.1 Sơ đồ màn hình 53
4.2.3.2 Danh sách màn hình 58
5 CÀI ĐẶT 77
5.1 Về phía server 77
5.2 Về phía client 80
6 KIỂM TRA VÀ ĐÁNH GIÁ 81
7 KẾT LUẬN 81
7.1 Kết quả đạt được 81
7.2 Những điều chưa đạt được 81
7.3 Hướng phát triển 81
TÀI LIỆU THAM KHẢO 83
Trang 71.1 Đặt vấn đề
1.1.1 Hiện trạng thực tại
1.1.1.1 Duyệt đơn cho sinh viên
Hiện nay, khi sinh viên có nhu cầu chứng các loại đơn như Xác nhận sinh viên, miễn giảm học phí thì đều phải lên tận trường để nộp đơn và ghi các thông tin cần thiết Đều này rất bất tiện khi trường nằm xa nhà của các sinh viên, càng bất tiện hơn khi nếu sinh viên thuộc diện đào tạo từ xa Đi 1 quãng đường dài để xin nộp đơn trong thời buổi công nghệ thông tin phát triển thì thật vô lý và lãng phí thời gian, công sức Chưa hết, sinh viên có thể gặp phải 1 vài trường hợp như lên đến nơi thì cơ quan không làm việc, hoặc đã nộp đơn, hẹn ngày đến lấy, đến khi lên đến nơi thì vẫn chưa có đơn trả về Rất lãng phí cho sinh viên Chưa hết, đối với nhà trường, là phòng công tác chính trị sinh viên, việc mang đơn bằng giấy di chuyển qua các phòng ban tiềm ẩn nguy cơ thất lạc hoặc hư hại các đơn từ Do đó
hệ thống hiện tại bất tiện vô cùng
1.1.1.2 Tổ chức cuộc thi viết
Với phong trào đoàn hội ngày càng phát triển, Việc tổ chức các cuộc thi viết
sẽ diễn ra thường xuyên để phục vụ công tác báo chí phong trào như tạp chí UIT, hoặc các cuộc thi học thuật cần có 1 cơ chế tổ chức các cuộc thi này Hiện vẫn chưa có quy trình tin học nào cho công tác này
Trang 85
Bằng việc xây dựng 1 website phục vụ điều này, giúp cho hệ thống dễ dàng tiếp cận từ mọi nơi, đáp ứng nhu cầu đưa ra
1.2 Mục tiêu
Tin học hóa công tác giải quyết yêu cầu từ sinh viên của phòng công tác chính trị sinh viên trường Đại học Công Nghệ Thông Tin – Đại học Quốc Gia TP HCM
Đơn giản hóa và giúp tiết kiệm thời gian cho sinh viên cũng như cán bộ nhân viên phòng công tác chính trị sinh viên trong việc giải quyết các yêu cầu của sinh viên
Tin học hóa công tác tổ chức một số phong trào trong trường
1.3 Phạm vi
Phạm vi của đề tài xoay quanh việc tin học hóa một số các công việc nhất định của phòng công tác chính trị sinh viên
Ví dụ:
Giải quyết yêu cầu xin cấp giấy xác nhận sinh viên
Giải quyết yêu cầu xin miễn giảm học phí
Giải quyết yêu cầu xin cấp thẻ sinh viên
Cho phép tạo các loại đơn mới đưa vào quy trình duyệt, Đồng thời định nghĩa quy trình duyệt cho riêng loại đơn đó
Tổ chức các cuộc thi viết phong trào qua mạng
Tất cả đều được thực hiện thông qua máy tính
Trang 96
2.1 Quy trình thủ công hiện tại đang sử dụng
2.1.1 Quy trình duyệt đơn
Để thực hiện nhu cầu làm đơn xác nhận sinh viên, miễn giảm học phí, cấp thẻ sinh viên thì sinh viên cần phải làm các bước sau:
Về phía sinh viên
o Làm đơn xin xác nhận sinh viên tại phòng CTCTSV
o Đợi khoảng 1 tuần để nhận được giấy xác nhận sinh viên ở trường
Về phía phòng CTCTSV
o Nhân viên phòng CTCTSV sẽ duyệt qua các đơn một lần
o Chuyển đến các cấp tiếp theo có thẩm quyền duyệt
o Sau khi các cấp tiếp theo có thẩm quyền quyết định duyệt xong thì sẽ gửi giấy xác nhận về nơi sinh viên nhận đơn
Việc này khá đơn giản nhưng đối với các ta sinh viên ở xa nhà, gặp nhừng ngày nghỉ, thì các ta đó phải đi xa đến trường vài lần để hoàn thành các thủ tục trên, như vậy rất mất thời gian, và cũng không phải lúc nào phòng CTCTSV cũng
mở cửa
2.1.2 Về quy trình tổ chức cuộc thi
Hiện chưa có quy trình tổ chức cuộc thi nào đang hoạt động cả
2.2 Hệ thống tin học hóa dùng để thay thế
2.2.1 Duyệt đơn
Về phía sinh viên
-Vào website chọn mục xin làm giấy xác nhận sinh viên -Đợi đến ngày lên lấy giấy
Về phía phòng CTCTSV
-Nhân viên phòng CTCTSV đăng nhập vào website và duyệt các đơn trong thẩm quyền của mình
- Sau khi duyệt xong thì đơn sẽ tự động chuyển đến các cấp tiếp theo
có thẩm quyền duyệt mà nhân viên phòng CTCTSV không cần phải
di chuyển, hay đi tìm các cấp có thẩm quyền
- Các cấp tiếp theo cũng sẽ duyệt bằng cách đăng nhập vào website
- Đến khi cấp cuối cùng duyệt xong thì giấy xác nhận sẽ được in ra
và gửi đến cho sinh viên
Ngoài ra cho phép định nghĩa các loại đơn mới, định nghĩa quy trình duyệt
để phục vụ nhu cầu càng mở rộng
2.2.2 Tổ chức cuộc thi
Trang 107
Website đưa ra 1 tính năng mới đó là cho phép mở các cuộc thi viết , rồi chấm điểm kiểu nhiều người chấm 1 bài thi rồi quy ra điểm trung bình Tính năng nếu xét về mặt kỹ thuật thì nó bộc lộ rõ được sự tiện dụng của việc phát triển ứng dụng theo mô hình workflow mà WF4 hỗ trợ , thích hợp cho việc minh họa ứng dụng
Về phía phòng CTCTSV
o Khi có đề tài sẽ đăng nhập vào hệ thống và mở ra 1 cuộc thi , nêu
rõ nội dung cuộc thi để sinh viên biết
o Sau khi cuộc thi được mở trên web sẽ có thông báo lên trang chủ , sinh viên lên web có thể gửi bài viết của mình tham gia dự thi
o Đến khi hết hạn nhận bài thi , Sinh viên không thể đăng bài dự thi lên được nữa
o Bài dự thi của sinh viên sẽ được chuyển cho các vị giám khảo chấm song song , sau khi chấm thì mỗi bài thi sẽ được quy ra điểm trung bình mà các vị giám khảo chấm bài thi đó Sau khi bài thi được chấm hết sẽ công bố lên trang chủ Cuộc thi kết thúc
2.3 Đánh giá hệ thống hiện hữu
Công tác tại phong CTCTSV hiện nay được thực hiên chủ yếu thủ công ghi chép trên giấy tờ là chính, chuyển đơn qua lại giữa các phòng ban cũng khá vất vả
Và nhân viên cũng có thể có nhầm lẫn làm lạc mất đơn hay duyệt thiếu đơn của sinh viên, các vấn đề đó hoàn toàn có thể xảy ra khi số lượng sinh viên vào trường ngày một đông
Với việc cài đặt hệ thống giúp quản lí các việc trên, chúng em hi vọng sẽ giúp ích được nhiều cho công tác hỗ trợ sinh viên của phòng CTCTSV
2.4 Định hướng nghiên cứu và giải pháp
2.4.1 Dữ liệu
2.4.1.1 Dữ liệu vào:
- Các dữ liệu của sinh viên được thu thập trong quá trình sinh viên học tập và làm việc tại trường
- Các mẫu đơn, bảng biểu phục vụ cho công tác hỗ trợ cho sinh viên
- Các bài thi tham gia các cuộc thi từ sinh viên
2.4.1.2 Các xử lí cần thiết:
- Thực hiện duyệt đơn qua các đơn vị
- Quản lí việc theo dõi trạng thái duyệt của các yêu cầu của sinh viên
Trang 118
- Quản lí việc chấm điểm các bài thi của sinh viên
- Xuất ra các biểu mẫu liên quan đến các tác vụ
- Lưu trữ tất cả các hành vi trong luồng đi của dữ liệu
2.4.1.3 Dữ liệu ra:
- Nhật kí các tác vụ đã thực hiện
- Các mẫu đơn liên quan đến các tác vụ mà sinh viên yêu cầu
- Kết quả các cuộc thi đã tổ chức
2.4.3 Yêu cầu chức năng
Hệ thống được xây dựng cho phép
Thực hiện yêu cầu một cách dễ dàng
Duyệt đơn nhanh chóng, dễ thao tác
Hỗ trợ xuất ra các biểu mẫu cũng như các sản phẩm đầu ra tương ứng với từng tác vụ
Hỗ trợ việc chấm điểm các bài thi mà sinh viên gửi về
Hỗ trợ tổng kết các kết quả sau khi chấm điểm
Hỗ trợ quản lý động đối với quy trình luồng công việc
2.4.4 Yêu cầu phi chức năng
Hệ thống hoạt động tin cậy, dữ liệu được cất giữ an toàn
Giao diện thân thiện, dễ sử dụng
Truy cập thông tin nhanh
2.4.4.1 Một số biểu mẫu được sử dụng trong hệ thống
Trang 129
Hình 2-1 Giấy xác nhận sinh viên
Trang 1310
Hình 2-2 Đơn xin miễn giảm học phí
Trang 1411
Hình 2-3 Đơn xin cấp thẻ sinh viên
Trang 151 Workflow được cấu thành bởi 1 chuỗi các bước xử lý ghép lại với nhau
Được biểu diễn trên mô hình dòng chảy (flow paradigm), nơi mà mỗi bước xử lý phải được hoàn tất trước khi chuyển sang bước xử lý kế tiếp
Nó được miêu tả như là một chuỗi các hoạt động, được xem là công việc của 1
cá nhân, 1 tổ chức, trên 1 hay nhiều hệ thống khác nhau Workflow được xem như
1 cách trừu tượng hóa công việc ngoài đời thật
3.2 Khảo sát các ứng dụng quản lí workflow trên thị trường
dùng nghiệp vụ và chuyên gia tiến trình nếu không có kinh nghiệm lập trình thì
cũng có thể thiết kế và chạy 1 workflow
Nó đem lại các lợi ích như :
o Giảm tải hiệu quả các công việc giấy tờ
o Sử dụng tài nguyên hiệu quả hơn
o Cải thiện kết quả kinh doanh
Giới thiệu Windows Workflow Foundation (WF)
WF là 1 nền tảng công nghệ của Microsoft dùng để xây dựng các ứng dụng luồng công việc Nền tảng bao gồm các bộ công cụ cho phép thiết kế và quản lý
workflow, một mô hình lập trình cho việc cài đặt workflow logic, engine luật lệ, và engine thực thi luồng công việc
Trang 1613
Công nghệ này được ra đời vào tháng 11 năm 2006 như là một phần của nền tảng NET framework 3.0 (còn gọi là WinFX) WF, không chỉ cho phép ta phối hợp các công việc như các chương trình truyền thống, nó có có một vài điểm khác biệt
quan trọng sau:
WF có thể điều khiển các công việc chạy trong thời gian dài bằng cách lưu trữ(persisting) workflow vào chỗ lâu bền (trái với bộ nhớ chỉ tồn tại khi hệ điều hành chạy) như là đĩa cứng,cơ sở dữ liệu khi workflow không làm gì
và nạp trở lại khi workflow tiếp tục làm việc
Thể hiện của workflow có thể được chỉnh sửa động khi đang chạy (thêm
điều kiện mới,cách xử lý khác với khi nó được tạo ra)
WF là mộ phương pháp lập trình khai báo (trái với lập trình viết mã lệnh) bằng cách kết nối các thành phần được định nghĩa sẵn (gọi là “hành động” - activity)
WF cho phép ta khai báo các luật nghiệp vụ, chúng tách rời mã vì vậy ta dễ dàng sửa đổi chúng về sau
WF hỗ trợ các kiểu hệ thống khác nhau với hai loại workflow: workflow
trình tự(sequential) và workflow máy trạng thái
Lợi ích của mô hình lập trình WF
Lập trình viên ai cũng muốn xây dựng 1 phần mềm tốt Nếu phần mềm đó là ứng dụng máy chủ, thì muốn được tốt nó phải dễ dàng mở rộng, đảm trách nạp tải lớn
mà ko tiêu tốn quá nhiều tài nguyên Ngoài ra nó còn phải dễ dàng hiểu được, cho người viết ra chúng và cả người bảo trì chúng
Để đạt được các mục tiêu đó ko phải dễ, Tiếp cận giúp cho ứng dụng dễ dàng mở rộng thường tách ứng dụng thành nhiều phần, chia mã logic thành nhiều khúc
riêng biệt và rất khó để hiểu được, do đó việc viết ra 1 chương trình thống nhất là bất khả thi Cái cần thiết là cách giữ logic ứng dụng thống nhất, dễ hiểu, đồng thời làm cho ứng dụng dễ dàng mở rộng
WF là giải pháp cho vấn đề trên, Bằng cách hỗ trợ tạo mã logic bằng luồng công việc, WF đem đến 1 nền tảng cho việc tạo ra ứng dụng thống nhất, đồng thời dễ
dàng mở rộng Ngoài ra, WF còn đơn giản hóa các thách thức của việc phát triển phần mềm như chỉ ra các công việc tiến hành song song, theo dấu thực thi chương trình
Lý do nên sử dụng WF
Trang 1714
WF ko chỉ đơn thuần là ứng dụng để quản lý luồng công việc như ProcessMaker, Joget chỉ giới hạn đối với logic nghiệp vụ WF đưa ra 1 mô hình lập trình mới,
mô hình lập trình workflow, cho phép phát triển các ứng dụng có tuổi đời dài Xét
về độ tùy biến và mở rộng, cũng như độ chuyên nghiệp thì WF lại hơn hẳn Cho
nên chúng tôi chọn WF để phát triển chương trình
Lý do lớn nhất là vì luồng công việc 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 một ứng dụng Thay vì biểu diễn logic ứng
dụng của bạn bằng một mớ mã phức tạp, thì khai báo logic đó bằng luồng công
việc rõ ràng là làm đơ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à kể cả thay đổi nó khi đang chạy Điều này rõ ràng là tuyệt vời
Ngoài ra workflow cho phép phối hợp làm việc giữa con người và phần mềm bằng các loại giao diện tương tác khác nhau: email, web-form, winform, instant messageTại sao nên dùng WF: WF là nền tảng cho phép các nhà phát triển xây dựng các
ứng dụng có các luồng công việc trở nên đơn giản hơn Thực tế, có rất nhiều nhà phát triển đã phát triển framework của riêng họ, điều này cho thấy sự cần thiết phải
có một framework đủ tốt hỗ trợ cho các ứng dụng về luồng công việc Sự ra đời
của WF đã giải quyết được nhu cầu này Một workflow trong WF được cấu thành
từ các activity
Theo quan điểm của người lập trình thì workflow hay activity đều là các đối tượng được hình thành từ các lớp, do vậy có thể định nghĩa được các workflow hay
activity tùy ý Cũng giống winform hoặc webform có điều khiển chuẩn thì
Microsoft cũng cung cấp các activity cơ bản gọi là BAL (Base Activity Library), hầu hết các workflow đều được xây dựng chỉ từ các activity này Nhà phát triển có thể thiết kế workflow rất trực quan qua công cụ thiết kế workflow đồ họa trên
(Workflow Designer) Visual Studio Rất nhiều người thích tính trực quan và dễ
dàng nắm bắt của giao diện đồ họa này nhưng cũng có người thích những dòng mã hơn, vì thế WF cho phép họ làm như thế hoặc phối hợp cả hai cách Như vậy WF cho hiệu quả phát triển workflow luôn ở mức cao nhất, thuận tiện nhất với tất cả mọi người Workflow được WF hỗ trợ phát triển nhanh chóng và dễ dàng như vậy nên chi phí phát triển sẽ giảm đáng kể mà chất lượng vẫn được đảm bảo
Các sản phẩm trên thị trường được viết bằng WF
Microsoft Sharepoint : là 1 nền tảng ứng dụng web được phát triển bởi
Microsoft, được phát hành lần đầu tiên năm 2001, Sharepoint thường được dùng
để quản lý nội dung web và hệ thống quản lý văn bản Nhưng thật ra nó là 1 nền
tảng rộng lớn hơn của công nghệ web, có khả năng được tùy chỉnh để đáp ứng
nhiều giải pháp ở nhiều lĩnh vực rộng rãi
Trang 1815
Microsoft Speech Server là sản phẩm được thiết kế cho phép chứng thực và triển khai ứng dụng IVR trong các hệ thống nhận dạng bài nói (Speech
Recognition), chuyển bài văn thành bài nói (Speech Synthesis)
Microsoft Biztalk Server : Cho phép các ứng dụng khác nhau trong doanh nghiệp giao tiếp được với nhau, tự động hóa được các quy trình doanh nghiệp
Microsoft Identity Integration Server: sản phẩm quản lý nhận dạng, là dịch
vụ cho phép tích hợp các thông tin nhận dạng từ nhiều nguồn khác nhau Mục đích
là đem lại cho tổ chức sự thống nhất nhân dạng của người dùng/tài nguyên giữa
các doanh nghiệp
Microsoft Dynamics : là 1 nhánh của ERP(enterprise resource planning) và
CRM (customer relationship management)
3.3 Kiến trúc của Windows Workflow Foundation
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 3.0 còn có một số mô hình lập trình mới như là WCF, WPF, CardSpace
WF là một thành phần nằm trong nền tảng NET 3.0 Bên cạnh WF, NET 3.0 còn có một số mô hình lập trình mới như là WCF, WPF, CardSpace
Hình 3-1 Vị trí WF trong NET 3.0
Trang 19ra 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 dùng 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ưu 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, web service
3.3.1 Hai loại activity
Trang 20 Activity tùy biến: Ta có thể dễ dàng tạo activity mới đáp ứng nghiệp vụ của ta Activity tùy biến có thể thực hiện chức năng nào
đó, từ đơn giản chẳng hạn như câu lệnh SQL Insert dữ liệu đến phức tạp như là tạo một đơn đặt hàng
3.3.1.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 logo 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ỏ Có thể lấy ví dụ về các tác vụ nhỏ như: đọc dữ liệu từ cơ sở dữ liệu, sinh ra file dùng dữ liệu đó, truyền file đến server dùng FTP hoặc một dịch vụ Web Mỗi tác vụ nhỏ đó thường tập trung vào
Trang 2118
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
Khi xây dựng một workflow, bạn thường gắn kết các Activity đơn lẻ lại với nhau rồi xây dựng trình tự di chuyển từ activity này sang activity khác Một vài activity đóng vai trò như là bao gói của các activity khác Activity mà được lựa chọ để quản lý tất cả các activity khác được gọi là activity gốc
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 Lớp Activity
là một lớp rất đơn giản, nó không làm một tác vụ nào cả nhưng nó đóng vai trò làm lớp cha cho tất cả các activity khác vì frame work WF quy định trong các workflow chỉ có các thành phần thuộc lớp (chính xác hơn là thuộc lớp con của) Activity này Tuy định nghĩa Activity khá đơn giản nhưng các lớp thừa kế từ Activity thường rất phức tạp bởi nó phải cài đặt các logic và tính chất để hoạt động trong workflow 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:
Các thuộc tính của Activity
Description Các miêu tả của người dùng về actvity
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 (validation) hay không
ExecutionResult Cho phép đọc giá trị 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ộ
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
WorkflowInstanceId Tham chiếu đến tên định danh workflow liên quan đến
activity này
Các phương thức của Activity
Trang 2219
Cancel Hủy bỏ việc thực thi của activity
Clone Trả về một bản copy hoàn toàn (deep copy – tức là bảng
copy chứa toàn bộ giá trị
dữ liệu giống như bản gốc) Execute Đồng bộ các tiến trình của activity
GetActivityByName Nếu được thực thi trên một activity phức, phương thức
này trả về activity được gọi tên nếu nó nằm trong activity phức đó Load Load một thể hiện của một activty từ một stream (dòng:
file, mạng…) RaiseEvent Gây ra một sự kiện gắn với DependencyProperty được
chỉ ra RaiseGenericEvent<T> Gây ra một sự kiện gắn với DependencyProperty được
tham chiếu Tác dụng của RaiseEvent và RaiseGenericEvent là giống nhau – sinh ra sự kiện tuy nhiên RaiseGenericEvent là phiên bản tổng quát hơn (dùng các đối số templated)
Save Lưu bản copy của một activity vào một stream
Các phương thức của Activity thông thường đều là các phương thức virtual hoặc protected Mục đích của điều này là để người dùng override chúng
và cung cấp các cài đặt của thể cho các nhu cầu cụ thể Phương thức quan trong nhất là Execute, là phương thức bạn cần gọi để bắt đầu chạy một workflow
Về quan hệ bao chứa thì các activity có thể chia làm hai nhóm: phức hợp và đơn giản Các activity phức hợp có thể chia ra làm các activity khác Một ví
dụ rất điển hình của activity phức hợp là các activity trình tự (nó chứa một loạt các activity bên trong, ví dụ như if-else, delay, và code) Các activity cơ bản chẳng hạn như activity delay hoặc code như vừa kể đến ở trên là cá activity thực hiện các tác vụ đơn
Windows Workflow cung cấp cho người dùng hai loại workflow, đó
là workflow trình tự (Sequence) và workflow máy trạng thái (State machine)
Một workflow trình tự sau khi thực thi thành công một activity sẽ chuyển sang activity kế tiếp, tức là thực thi một chuỗi các activity nối tiếp nhau Ví dụ đơn giản: một worflow trình tự mô hình hóa một tiến trình di chuyển các bản ghi từ một file log được nén đặt ở một website vào một bảng của cơ sở dữ liệu Bước 1 có thể là download file log được nén đó, bước 2 có thể là giải nén file, bước 3 là chèn
Trang 2320
các bản ghi vào bảng, và bước 4 là tạo các số liệu tổng hợp từ các bản ghi mới
Các workflow máy trạng thái lại phụ thuộc vào các sự kiện để đưa workflow đến điểm kết thúc, một máy trạng thái chứa một tập các trạng thái và tập các sự kiện Máy trạng thái luôn ở trong một và chỉ một các trạng thái được định nghĩa trước và không thể chuyển sang trạng thái khác chừng nào chưa có một sự kiện diễn ra
3.3.2 Lưu trú
Vì WF không phải là một ứng dụng độc lập, nên nó cần phải được cho lưu trú lên một ứng dụng NET khác Ứng dụng chủ có thể là bất cứ loại ứng dụng .NET nào chẳng hạn như winform, ASP.NET, console, Windows Service hoặc web service
Mặc dù workflow là nơi hầu hết các nghiệp vụ quan trọng thực thi, nhưng ứng dụng chủ cũng rất quan trọng vì nó là nơi diễn ra vòng đời thi hành của workflow Ứng dụng chủ là nơi workflow khởi hành và thường là nơi người dùng tương tác
Mô hình có ứng dụng chủ này rất phù hợp vì cho phép WF tập trung vào xử
lý nghiệp vụ, còn các tương tác có thể được giao phó cho bất cứ loại ứng dụng nào khác trong NET
Việc tương tác giữa WF với ứng dụng chủ ra sao?
Tất nhiên WF không thể thực thi một mình, nó cần có tương tác với môi trường bên ngoài chính là ứng dụng chủ WF cung cấp cơ chế cho phép ta dễ dàng
và nhanh chóng truyền dữ liệu vào ra workflow, ngoài ra các phương thức có thể điều khiển sự kiện để tương tác với bên ngoài Để dùng tham số giao tiếp giữa workflow và ứng dụng chủ, trong đoạn mã tạo workflow bằng phương thức CreateWorkflow của lớp WorkflowRuntime, ta có thể truyền đối tượng Dictionary<string, object> chứa các thành phần tham số cần thiết cho workflow
Dạng giao tiếp khác của workflow là dịch vụ giao tiếp nội tại (local communication services), dạng giao tiếp này được thực hiện giữa các lớp thông qua các sự kiện và phương thức Ứng dụng chủ có thể “nói chuyện” với workflow bằng cách kích hoạt các sự kiện mà được xử lý ở bên trong workflow Workflow cũng có thể giao tiếp với ứng dụng chủ bằng cách gọi các phương thức Đây là dạng thông dụng của giao tiếp vì nó dùng khái các niệm đã quen thuộc đối với các nhà phát triển
3.3.3 Các dịch vụ chạy (runtime service) trong WF
Trang 2421
Hình 3-4 Dịch vụ chạy trong WF 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 5) 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
(giao tác)
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 phải được thực thi thành công toàn bộ Nếu một 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 đó 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
DefaultWorkflowTransactionService
(mặc định) SharedConnectionWorkflow -TransactionService
Trang 2522
ACID (Atomic – nguyên tử, Consistency – nhất quán, Isolate – phân tách và Durable – 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 Ví dụ trong transaction nào đó có giao tiếp với khách hàn, khi hành động gửi email tới khách hàng đã thực thi, nếu sau đó có activity nào đó bị lỗi thì cũng không thể lấy lại được email đã gửi, lúc này cách tốt nhất để đảm bảo transaction vẫn thực thi tốt là đợi khách hàng gửi lại email báo là họ đã lỗi
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 dùng 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 dùng để 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
Trang 2623
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ì workflow phải tương tác với các tác nhân ngoài như người dùng và ứng dụng khác, các nghiệp vụ này có thể thực hiện trong khoảng thời gian dài và có những lúc không làm gì cả do các tác nhân này có thể đang 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 tại trong
bộ nhớ 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ế như vậy được gọi là persistence
SqlWorkflowPersistenceService
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ơ schế không đồng bộn, 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
DefaultWorkflowScheduler Service, ManualWorkflow SchedulerService
Trang 27Tuy nhiên với các ứng dụng web form hay web service chạy trên server, thì tốt hơn
là khóa 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ư vậy được thực hiện bằng dịch vụ scheduling
Workflow
Loader
Cho phép tạo thể hiện của workflow khi gọi phương thức CreateWorkflow
DefaultWorkflow LoaderService
Data
Exchange
Quản lý các dịch vụ truyền thông tùy biến
bị lỗi hay không WF cho phép người dùng đị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 frame work
Thừa kế từ lớp WorkflowRuntimeService
Trang 2825
3.3.4 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ả hai 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 Compiler (file wfc.exe)
Dịch từ mã C#/VB sang NET assembly giống như các ứng dụng NET truyền thống
Hình 3-5 Mô hình xây dựng workflow trong WF
3.3.5 Các loại workflow trong WF
Windows Workflow Foundation cung cấp hai loại workflow: trình tự (sequential) và máy trạng thái (state-machine) Mỗi loại có đặc điểm và tập các activity riêng
Workflow trình tự 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 này 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
Trang 2926
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
Workflow máy trạng 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
3.3.6 So sánh WF với WCF
Về phương diện truyền thông, WF cung cấp cho chúng ta một vài công cụ
cơ bản để làm việc qua web service với XML Dùng WF chúng ta có thể xuất một workflow như là một web service, và mọi người có thể dùng web service này dễ dàng Phải chăng tính năng này giống với WCF
WCF là công nghệ nền tảng nhằm thống nhất nhiều mô hình lập trình giao tiếp được hỗ trợ trong NET 3.0 thành một mô hình duy nhất Đúng là WCF cung cấp cho chúng ta các công cụ để có thể cài đặt và sử dụng web service, nhưng WCF mạnh mẽ hơn so với WF rất nhiều Mục đích chính của WCF là thống nhất tất cả các mô hình lập trình cho tất cả các tiến trình giao truyền thông, nó cho phép chúng ta xây dựng các kết nối dựa trên kiến trúc hướng dịch vụ (SOAs) Với SOAs, các phần mềm chuyển từ gọi phương thức sang việc dùng các dịch vụ Trong các hệ thống phần mềm lớn thì các tiến trình gọi dịch vụ này rất phức tạp và tốn kém
Tóm lại, WF mạnh về mặt hỗ trợ thiết lập các luồng công việc nhưng không mạnh về mặt truyền thông giao tiếp hướng dịch vụ như WCF
Trang 3027
4.1 Phân tích hệ thống
4.1.1 Mô hình use case
Hình 4-1 Mô hình use case
Admin Người dùng với vai trò quản trị hệ thống
Student Người dùng với vai trò sinh viên
Checker Người dùng tham gia vào quy trình duyệt đơn, chịu trách nhiệm
kiểm tra sơ bộ các loại đơn và đem đi duyệt nếu đạt yêu cầu Approver Tham gia vào quy trình duyệt đơn với tư cách là người ra quyết định
cuối cùng với đơn đó Đồng thời chịu trách nhiệm in đơn ra để chuyển cho sinh viên
Judge Người dùng với vai trò là giám khảo cuộc thi, tham gia vào quy
trình chấm điểm cho cuộc thi
Trang 31Cho phép tạo loại đơn mới, định nghĩa quy trình duyệt đơn đó
Chỉnh sửa quy trình duyệt đơn
Sinh viên khi có nhu cầu tạo đơn để duyệt thì sẽ dùng tính năng này
để tạo đơn xin duyệt
Được phép xem bài thi của các thí sinh và tiến hành chấm điểm
Duyệt đơn Người có thẩm quyền duyệt đơn sẽ được phép tiến hành duyệt
Trang 3229
Hình 4-2 Mô hình ngữ cảnh
4.1.2.2 Mô hình cấp 1 của process quản lí tài khoản
Hình 4-3 Mô hình cấp 1 của process quản lí tài khoản
4.1.2.3 Mô hình cấp 1 của process tác vụ quản lí cuộc thi
Hình 4-4 Mô hình cấp 1 của process tác vụ quản lí cuộc thi
4.1.2.4 Mô hình cấp 1 của process tham dự cuộc thi
Hình 4-5 Mô hình cấp 1 của process tham dự cuộc thi
4.1.2.5 Mô hình cấp 1 của process duyệt đơn
Trang 3330
Hình 4-6 Mô hình cấp 1 của process duyệt đơn
4.1.2.6 Mô hình cấp 1 quy trình quản lý động cuộc thi
Hình 4-7 Mô hình cấp 1 của process duyệt đơn
4.1.3 Mô hình thực thể
Trang 34Student
DoB Address EduMode StartYear TimeLast Role
Contest
GradeSub mission
0,n
Date
Content Title Id
Đại diện cho 1 tác vụ, đơn cần được duyệt
Trang 3532
4.1.3.1.3 Excemptuition Task
Đại diện cho đơn xin miễn giảm học phí
4.1.3.1.4 User
Đại diện cho người dùng hệ thống
4.1.3.1.5 Student
Trang 3633
Đại diện cho sinh viên
4.1.3.1.6 Contest
Đại diện cho cuộc thi
Judges Các giám khảo đưuọc mời chấm điểm cuộc
thi
Chuỗi
ExpDate Ngày sinh viên hết hạn nộp bài thi Ngày
4.1.3.2 Mô tả quan hệ
4.1.3.2.1 Submiss
Đại diện cho bài thi được sinh viên gửi tham dự cuộc thi
Trang 3734
4.1.3.2.2 GradeSubmission
Đại diện cho quan hệ chấm điểm bài thi
4.1.3.2.3 Create
Đại diện cho việc Tạo đơn
Log Nhật ký ghi lại hoạt động của quy trình duyệt
đơn
Đa trị
4.1.3.2.4 Validate
Đại diện cho việc duyệt đơn
Trang 3835
Ba thực thể Task, SimpleTask, ExcemptuitionTask có quan hệ kế thừa
Task(Id, Kind, Status, Reason, Hometown, ParentName, Street,
Ward,District,Province,Type,Tuition, Fault)
Thực thể User
STAFF(RealName, Username)
Thực thể Student kế thừa User
STUDENT(NumCode (do UserName chuyển tên),Name (do RealName chuyển tên),DoB, Address, Class, StartYear, TimeLast, EduMode)
Task(Id, Kind, Status, Reason, Hometown, ParentName, Street,
Ward,District,Province,Type,Tuition, Fault, Username)
Validate
Validate(Username,Id(của Task),Id (của Validate),Kind,Note,Date)
LOG(Id,Kind,Task(id của Task),Note,Date,Writer(Username chuyển tên thành))
Submiss
Submiss(Username, Date, Content, Title, Id(của Contest), Id(của
Submiss) )
Trang 3936
SUBMISSION(Id(của Submission), Username, Date, TestContent,
TASKKIND(Id,Description)
Mỗi chương trình học đối với sinh viên đều quy định thời gian học kéo dài trong mấy năm, hiện có 2 giá trị là 4/4.5 năm Cần 1 bảng để lưu các giá trị này lại
TIMELAST(Id,Description)
Mỗi sinh viên đều thuộc 1 trong 2 hệ đào tạo sau: đài tạo chính quy, đào tạo
từ xa Cần bảng để lưu lại
Trang 4037
Nhằm cung cấp tính năng thông báo cho người dùng các thông tin quan trọng như báo đơn đã được duyệt, hết hạn nộp bài thi Cần tạo 1 bảng để lưu lại
NOTIFICATION(Id,Username , Cont, IsNew, Date)
Khi có thông báo quan trọng như kết quả cuộc thi, cần được công bố lên trang chủ cho mọi người biết, thì phải có 1 bảng để thực hiện chuyện đó
NEWS(Title,NewsContent, Id, Date)
Mỗi cuộc thi đều có trạng thái nằm trong khoảng giá trị như: Khởi tại, chờ chấm điểm, kết thúc Do đó cần 1 bảng để lưu lại
Ngoài việc thiết kế cơ sỡ dữ liệu cho phù hợp với yêu cầu đề tài phần mềm, phần mềm còn sử dụng cơ sở dữ liệu thiết kế sẵn của ASP.NET để quản lý tài khoản người dùng (các bảng có tiếp đầu ngữ là aspnet)
Sau đây là sơ đồ cơ sở dữ liệu quan hệ :
4.2.1.2 Sơ đồ CSDL