ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Nguyễn Duy Hiệp

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công Nghệ Thông Tin

HÀ NỘI - 2009

KHUNG LÀM VIỆC VÀ ỨNG DỤNG CHO BÀI TOÁN LUỒNG CÔNG VIỆC

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Duy Hiệp KHUNG LÀM VIỆC VÀ ỨNG DỤNG CHO BÀI TOÁN LUỒNG CÔNG VIỆC KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin Cán bộ hướng dẫn: PGS. TS. Nguyễn Văn Vỵ

2

HÀ NỘI - 2009

LỜI CẢM ƠN

Lời đầu tiên em xin được gửi lời cảm ơn chân thành nhất tới thầy giáo PGS. TS. Nguyễn Văn Vỵ. Thầy đã giúp em trong việc định hướng đề tài, tìm hiểu tài

liệu, nghiên cứu về Khung làm việc(Framework) và Luồng công việc(Workflow).

Thầy cũng giúp đỡ em rất nhiều trong kỹ năng viết, trình bày khóa luận.

Em xin một lần nữa được gửi lời cảm ơn chân thành nhất đến thầy!

Em cũng được xin gửi lời cảm ơn chân thành nhất đến các thầy cô trong trường Đại học Công nghệ, đặc biệt các thầy cô trong khoa Công nghệ phần mềm.

Các thầy cô đã tận tình dạy dỗ và tạo điều kiện cho em học tập để đạt được kết quả

tốt như ngày hôm nay! Em xin chân thành cảm ơn các thầy cô!

Cuối cùng em xin cảm ơn tới Gia đình, bố mẹ, bạn bè em đã luôn cổ vũ động

viên, tạo điều kiện giúp đỡ em trong quá trình thực hiện khóa luận tốt nghiệp này!

Hà Nội, ngày 11 tháng 05 năm 2009

Sinh viên

Nguyễn Duy Hiệp

i

TÓM TẮT NỘI DUNG KHÓA LUẬN

Qua tìm hiểu thực tế cho thấy, với các tổ chức, cơ quan khác nhau có nghiệp vụ thực hiện công tác tổ chức xử lý và giao việc không giống nhau. Tuy nhiên về cơ bản các công ty, doanh nghiệp đều có mô hình quản lý và luồng quy trình nghiệp vụ thực hiện công tác tổ chức và giao việc giống nhau. Do đó, để phát triển và mở rộng một hệ thống có tính chất thương mại hoá, triển khai trên quy mô lớn, dễ bảo trì, cấu hình, phát triển mở rộng, khóa luận đã nghiên cứu đặc điểm, tính chất và cách xây dựng một Khung làm việc(Framework), các bài toán luồng công việc cụ thể, phân tích thiết kế bài toán luồng công việc tổng quát được rút ra từ các bài toán cụ thể, tích hợp và ghép nối các mẫu thiết kế lại thành các khung làm việc. Các khung làm việc hỗ trợ các điểm thế chỗ trước để khi ứng dụng triển khai có thể thay thế các điểm thế chỗ trước này. Khi triển khai ứng dụng cho một đơn vị có sự thay đổi về quy trình nghiệp vụ xử lý công việc ta chỉ cần xây dựng mới thêm một vài mô đun tương ứng với sự thay đổi đó và lắp ghép vào các điểm thế chỗ trước để tạo ra ứng dụng mới đáp ứng hoàn toàn về sự thay đổi mô hình quản lý và quy trình nghiệp vụ xử lý của đơn vị cần triển khai áp dụng hệ thống.

Đề tài của khóa luận này là “Khung làm việc-Framework và ứng dụng cho bài toán luồng công việc”. Nội dung của đề tài gồm các phần sau.

MỞ ĐẦU: Giới thiệu lý do chọn đề tài luận văn, nhu cầu thực tiễn và khả

năng ứng dụng của luận văn

Chương 1: Tổng quan về framework. Nhằm trả lời cho câu hỏi: “Framework là gì?”, phần này nêu ra khái niệm, các đặc điểm và phân loại framework.

Chương 2: Giới thiệu một số Framework cụ thể đã có. Phần này đưa ra một số Framework điển hình đã được xây dựng và ứng dụng giải quyết các bài toán cụ thể.

Chương 3: Xây dựng Framework giải quyết bài toán Luồng công việc- Workflow. Nêu ra bài toán Workflow tổng quát bằng lời và bằng các mô hình nghiệp vụ, các ca sử dụng và các sơ đồ lớp. Phân tích thiết kế tiến tới chi tiết hóa các ca sử dụng, gắn vào đó là các mẫu-patterns tạo nên một biểu đồ lớp có kèm theo các patterns sẵn có. Dựa trên phân tích thiết kế, xây dựng framework giải quyết bài toán luồng công việc trên nền tảng .NET framework 3.5 và ngôn ngữ lập trình C#.

ii

Chương 4: Ứng dụng Framework trên để demo một bài toán giao việc

nhỏ.

KẾT LUẬN: Phần này nêu kết quả đạt được của khóa luận và đề xuất

phương hướng nâng cấp và mở rộng ứng dụng đề tài vào thực tiễn trong tương lai.

iii

MỤC LỤC LỜI CẢM ƠN ..............................................................................................................i

TÓM TẮT NỘI DUNG KHÓA LUẬN .......................................................................ii

MỤC LỤC:.................................................................................................................iv

DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ ..............................................................viii

DANH MỤC CÁC BẢNG .........................................................................................ix

MỞ ĐẦU:............................................................................................................... - 1 -

Chương 1................................................................................................................ - 4 -

GIỚI THIỆU CHUNG VỀ FRAMEWORK............................................................ - 4 - 1.1. Khái niệm về framework ...................................................................... - 4 -

1.1.1. Định nghĩa về framework ................................................................... - 4 -

1.1.2. Cấu trúc của một framework .............................................................. - 5 -

1.1.3. Phân biệt framework với các khái niệm khác...................................... - 7 -

1.2. Các đặc điểm của framework................................................................. - 9 -

CHƯƠNG 2.......................................................................................................... - 10 -

GIỚI THIỆU MỘT SỐ FRAMEWORK CỤ THỂ ................................................ - 10 - 2.1. Higgin Trust Framework ..................................................................... - 10 -

2.1.1. Giới thiệu về Higgins ....................................................................... - 10 -

2.1.2. Các thành phần của Higgins ............................................................. - 11 -

2.1.2.1. Browser Extension......................................................................... - 12 -

2.1.2.2. RP Enablement.............................................................................. - 12 -

2.1.2.3. I-Card Manager ............................................................................ - 13 -

2.1.2.4. RP Protocol Support...................................................................... - 13 - 2.1.2.5. ISS Client UI ................................................................................. - 13 -

2.1.2.6. I-Card Selector Service.................................................................. - 14 - 2.1.2.7. I-Card Registry.............................................................................. - 14 - 2.1.2.8. I-Card Provider............................................................................. - 14 - 2.1.2.9. Token Service ................................................................................ - 14 - 2.1.2.10. Token Provider ............................................................................ - 15 - 2.1.2.11. Identity Attribute Service ............................................................. - 15 - 2.1.2.12. Context Provider ......................................................................... - 16 -

iv

2.1.3. Mô hình dữ liệu của Higgins ........................................................... - 16 - 2.1.3.1. Các khái niệm dữ liệu cơ bản ....................................................... - 16 -

2.1.3.2. Mục tiêu của mô hình .................................................................... - 18 -

2.2. JhotDraw............................................................................................. - 18 -

2.2.1. Giới thiệu khung làm việc JhotDraw ................................................ - 18 - 2.2.2. Kiến trúc tổng quan về thiết kế của JHotDraw.................................. - 19 -

CHƯƠNG 3:......................................................................................................... - 24 -

XÂY DỰNG FRAMEWORK GIẢI QUYẾT ....................................................... - 24 -

BÀI TOÁN LUỒNG CÔNG VIỆC-WORKFLOW. ............................................. - 24 -

3.1. Mô tả bài toán quản lý công việc tại một công ty thiết kế đồ nội thất gia đình:- 24 -

3.1.1. Bài toán đặt ra: .................................................................................. - 24 -

3.1.2. Sơ đồ hoạt động quản lý công việc tại công ty thiết kế đồ nội thất gia

đình: - 24 -

3.1.3. Mô hình miền lĩnh vực: ..................................................................... - 25 -

3.2. Mô tả bài toán quản lý thanh toán tiền lương:............................................. - 26 -

3.2.1. Bài toán đặt ra: .................................................................................. - 26 -

3.2.2. Sơ đồ tiến trình quản lý hoạt động thanh toán tiền lương: .................. - 27 -

3.2.3. Mô hình miền lĩnh vực: ..................................................................... - 30 -

3.3. Mô tả bài toán tổng quát:............................................................................ - 30 -

3.3.1. Các thông tin chung về bài toán luồng công việc: .............................. - 30 -

3.3.2. Công tác quản lý bài toán luồng công việc:........................................ - 32 -

3.3.3. Sơ đồ tiến trình quản lý hoạt động giao công việc.............................. - 32 -

3.3.4. Các yêu cầu xây dựng hệ thống quản lý hoạt động giao công việc ..... - 34 -

3.3.5. Các chức năng hệ thống..................................................................... - 34 -

3.3.6. Từ điển dữ liệu và mô hình lĩnh vực nghiệp vụ.................................. - 35 - 3.3.6.1. Các khái niệm dự tuyển cho nghiệp vụ quản lý giao việc ........... - 35 - 3.3.6.2. Mô hình lĩnh vực nghiệp vụ ....................................................... - 36 -

3.3.7. Đặc tả hệ thống bài toán luồng công việc........................................... - 36 -

3.3.7.1. Các tác nhân (Actor) trong hệ thống .............................................. - 36 -

3.3.7.2. Các ca sử dụng (Usecase) của hệ thống ......................................... - 38 -

v

3.3.7.2.1. Ca sử dụng Đăng nhập hệ thống............................................. - 38 - 3.3.7.2.2. Ca sử dụng Tạo công việc mới............................................... - 39 -

3.3.7.2.3. Ca sử dụng Sửa thông tin hồ sơ công việc.............................. - 39 -

3.3.7.2.4. Ca sử dụng Xoá hồ sơ công việc ............................................ - 39 -

3.3.7.2.5. Ca sử dụng Phân giải quyết công việc.................................... - 40 - 3.3.7.2.6. Ca sử dụng Chỉ đạo giải quyết công việc ............................... - 40 -

3.3.7.2.7. Ca sử dụng sửa Chỉ đạo giải quyết công việc ......................... - 40 -

3.3.7.2.8. Ca sử dụng Giải quyết công việc............................................ - 41 -

3.3.7.2.9. Ca sử dụng Báo cáo thống kê................................................. - 41 - 3.3.7.2.10. Ca sử dụng Xem và tra cứu công việc .................................... - 42 -

3.3.7.2.11. Ca sử dụng Cập nhật danh mục từ điển .................................. - 42 -

3.3.7.2.12. Ca sử dụng Cập nhật người dùng ........................................... - 42 -

3.3.7.2.13. Ca sử dụng Cập nhật nhóm quyền.......................................... - 43 -

3.3.7.2.14. Ca sử dụng Phân quyền truy nhập .......................................... - 43 -

3.3.8. Mô hình ca sử dụng tổng thể ............................................................. - 43 - 3.3.8.1. Gói ca sử dụng Đăng nhập hệ thống .......................................... - 43 -

3.3.8.2. Gói ca sử dụng Quản lý giải quyết công việc ............................. - 44 -

3.3.8.3. Gói ca sử dụng Quản trị tiện ích ................................................ - 45 -

3.3.8.4. Gói ca sử dụng Báo cáo thống kê............................................... - 46 -

3.3.8.5. Gói ca sử dụng Quản trị phân quyền người dùng ....................... - 46 -

3.3.9. Mô tả chi tiết các ca sử dụng ................................................................. - 47 -

3.3.9.1. Gói ca sử dụng Đăng nhập hệ thống .................................................. - 47 -

3.3.9.2. Gói ca sử dụng Quản lý giải quyết công việc ................................. - 49 - 3.3.9.3. Gói ca sử dụng Quản trị tiện ích ................................................... - 53 -

3.3.9.4. Gói ca sử dụng Báo cáo thống kê.................................................. - 57 -

3.3.9.5. Gói ca sử dụng Quản trị phân quyền người dùng .......................... - 61 -

3.4. Phân tích các lớp:....................................................................................... - 63 -

3.4.1. Các lớp giao diện hệ thống: ............................................................... - 63 -

3.4.2. Các lớp thao tác Cơ Sở dữ liệu: ......................................................... - 64 -

3.4.3. Các lớp dịch vụ(Services):................................................................. - 65 -

3.4.4. Các lớp thực thể: ............................................................................... - 66 -

3.5. Áp dụng các mẫu (patterns) trong việc thiết kế cho các ca sử dụng: ........... - 67 -

vi

3.5.1. Gói ca sử dụng Đăng nhập hệ thống .................................................. - 67 -

3.5.2. Gói ca sử dụng Quản lý giải quyết công việc......................................... - 68 -

a. Ca sử dụng Cập nhật công việc............................................................... - 69 - b. Ca sử dụng Phân công việc..................................................................... - 72 -

3.5.3. Gói ca sử dụng phục vụ tra cứu, báo cáo, thống kê ........................... - 74 -

3.6. Thiết kế một số lớp................................................................................ - 76 - 3.6.1. Lớp giao diện ................................................................................. - 76 - 3.6.2. Lớp điều khiển ............................................................................... - 78 -

3.6.3. Lớp thực thể .................................................................................... - 80 -

KẾT LUẬN .......................................................................................................... - 87 -

TÀI LIỆU THAM KHẢO..................................................................................... - 89 -

Tài liệu tiếng Việt ........................................................................................... - 89 -

Tài liệu tiếng Anh ........................................................................................... - 89 -

Các trang Web ................................................................................................ - 90 -

Bộ công cụ ...................................................................................................... - 90 -

vii

DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ

Hình 1.1. Mối quan hệ giữa các thành phần khác nhau trong một framework [4]

Hình 2.1. Higgins Trust Framework

Hình 2.2. Kiến trúc của Higgins

Hình 2.3. RP Enablement

Hình 2.4. Kiến trúc Token Service

Hình 2.5. Kiến trúc tổng quan về thiết kế của JhotDraw

Hình 2.6 : Các mẫu thiết kế

Hình 3.1: Sơ đồ hoạt động quản lý công việc tại công ty thiết kế đồ nội thất gia đình

Hình 3.2: Mô hình khái niệm hệ thống tổ chức và quản lý công việc tại công ty thiết kế đồ nội thất gia đình

Hình 3.3: Sơ đồ hoạt động quản lý công việc quản lý tiền lương

Hình 3.4: Mô hình miền lĩnh vực của bài toán quản lý tính tiền lương

Hình 3.5. Mô hình phân cấp quản lý trong doanh nghiệp

Hình 3.6: Sơ đồ tiến trình quản lý hoạt động giao công việc

Hình 3.7: Mô hình khái niệm hệ thống tổ chức và quản lý giao công việc

Hình 3.8: Gói ca sử dụng Đăng nhập hệ thống

Hình 3.9: Gói ca sử dụng Quản lý giải quyết công việc

Hình 3.10: Gói ca sử dụng Quản trị tiện ích

Hình 3.11: Gói ca sử dụng Báo cáo thống kê

Hình 3.12: Gói ca sử dụng Quản trị phân quyền người dùng

Hình 3.13: Biểu đồ lớp thiết kế thực thi ca sử dụng Đăng nhập

Hình 3.14: Biểu đồ lớp thiết kế ca sử dụng Đăng nhập áp dụng mẫu Singleton

Hình 3.15: Biểu đồ lớp thiết kế thực thi ca sử dụng Tạo công việc mới

Hình 3.16. Biểu đồ lớp thiết kế thực thi ca sử dụng Tạo công việc mới áp dụng mẫu thiết kế Observer

Hình 3.17: Biểu đồ lớp thiết kế thực thi ca sử dụng Sửa nội dung công việc

viii

Hình 3.18: Biểu đồ lớp thiết kế thực thi ca sử dụng Xoá công việc

Hình 3.19: Biểu đồ lớp thiết kế thực thi ca sử dụng Phân công việc

Hình 3.20. Biểu đồ lớp thiết kế thực thi ca sử dụng Phân công việc áp dụng mẫu thiết kế State

Hình 3.21: Biểu đồ lớp thiết kế thực thi ca sử dụng Chỉ đạo công việc

Hình 3.22: Biểu đồ lớp thiết kế thực thi ca sử dụng Giải quyết công việc

Hình 3.23: Biểu đồ lớp thiết kế thực thi ca sử dụng Báo cáo công việc

Hình 3.24: Áp dụng mẫu thiết kế Composite vào lớp CongViec

DANH MỤC CÁC BẢNG

Bảng 2.1: Các chức năng hệ thống

Bảng 2.2: Các khái niệm dự tuyển cho nghiệp vụ quản lý giao việc

Bảng 2.3: Mô tả các tác nhân trong hệ thống

ix

MỞ ĐẦU

Cơ sở khoa học và thực tiễn của đề tài:

a. Cơ sở khoa học và ý nghĩa thực tiễn của việc nghiên cứu và ứng dụng các mô hình sử dụng lại vào quá trình thiết kế phần mềm:

Ngày nay, một trong những vấn đề quan trọng của ngành công nghệ phần mềm là vấn đề sử dụng lại. Ngay từ thời kỳ đầu tiên, người ta đã cố gắng sử dụng lại phần mềm bằng cách xây dựng trước các thư viện lớp. Trong các thư viện lớp này có chứa các hàm và thủ tục thường hay được sử dụng trong các ứng dụng phần mềm. Tuy nhiên, cách sử dụng lại này tương đối thụ động, vì chỉ có thể sử dụng lại các đoạn mã có sẵn, mà không thể sử dụng các thiết kế. Ý tưởng sử dụng lại các thiết kế có sẵn đã được thể hiện qua việc sử dụng các mẫu thiết kế. Một mẫu thiết kế là một mô tả có tên về một cặp vấn đề và giải pháp, nó có thể được áp dụng trong những hoàn cảnh khác nhau. Tuy nhiên, các mẫu thiết kế thường khó sử dụng vì có mức độ trừu tượng hóa cao. Do vậy, để có thể sử dụng lại các thiết kế có sẵn hiệu quả hơn, người ta đã đưa ra khái niệm Khung làm việc-Framework. Giống với các mẫu thiết kế, các framework cũng được sử dụng lại dễ dàng bằng cách thu nhận lại các kịch bản phát triển phần mềm thành công. Tuy nhiên, khác với mẫu thiết kế, framework thường gắn với một miền ứng dụng cụ thể và bao gồm cả thiết kế và mã thực hiện.

b. Cơ sở khoa học và ý nghĩa thực tiễn của việc nghiên cứu, thiết kế và xây dựng úng dụng “ Khung làm việc giải quyết bài toán luồng công việc”:

Ngày nay, với sự phát triển nhanh chóng của khoa học kỹ thuật nói chung và công nghệ thông tin nói riêng đã mang lại nhiều thành tựu to lớn. Những thành tựu của khoa học được áp dụng trong tất cả các hoạt động của con người và đã đem lại những thành công hết sức lớn lao. Ở Việt Nam, hiện nay, các công ty, xí nghiệp và các doanh nghiệp vừa và nhỏ hầu hết đã trang bị cơ sở hạ tầng về máy tính và kết nối mạng đã tạo cơ sở cho việc áp dụng những công nghệ mới của mạng máy tính và internet vào lĩnh vực tìm kiếm, tổ chức và xử lý thông tin phục vụ công tác điều hành và quản lý sản xuất. Với cơ sở hạ tầng công nghệ thông tin ngày càng phát triển mở rộng, các tổ chức, doanh nghiệp ngày càng có nhu cầu tin học hoá mọi lĩnh vực công việc, sản xuất, quản lý,… và mong muốn mọi thông tin quản lý điều hành sản xuất đều được lưu trữ trên máy tính để có thể tra cứu tìm kiếm dễ dàng và nhanh chóng mỗi khi có nhu cầu.

- 1 -

Những hoạt động mang tính chất luồng công việc như hoạt động giao việc và điều hành xử lý việc thực hiện công việc là một hoạt động chủ đạo trong hầu hết các tổ chức, doanh nghiệp. Tuy nhiên, qua khảo sát thực tế cho thấy, hiện nay việc tổ chức và quản lý hoạt động giao công việc trong các tổ chức, xí nghiệp chủ yếu thực hiện trực tiếp bằng miệng và quản lý dựa trên trên giấy tờ. Do đó, để tổ chức và theo dõi điều hành một công việc thực hiện qua nhiều người, nhiều cấp, trên nhiều giai đoạn thời gian khác nhau gặp rất nhiều khó khăn. Việc tin học hoá hoạt động này để có thể tổ chức xử lý, theo dõi hoạt động giao công việc trên hệ thống máy tính là nhu cầu cấp thiết.

Việc ứng dụng công nghệ thông tin vào tổ chức, quản lý hoạt động giao công việc là một trong các biện pháp có ý nghĩa thiết thực trong việc áp dụng các thành tựu khoa học kỹ thuật vào công tác điều hành và quản lý sản xuất trong các doanh nghiệp.

Từ nhu cầu thực tiễn xã hội và đặc biệt là của đơn vị đang công tác, cùng với cơ sở khoa học của việc nghiên cứu ứng dụng các mô hình sử dụng lại vào quá trình phân tích thiết kế phần mềm, luận văn đã chọn đề tài với tên gọi “Khung làm việc và ứng dụng cho bài toán luồng công việc”.

Mục tiêu của bài toán “Luồng công việc” là xây dựng một hệ thống thông tin tổ chức và quản lý các hoạt động giao công việc đang thực hiện trong một tổ chức, doanh nghiệp phân theo các cấp quản lý theo từng đầu người cụ thể dựa trên mạng máy tính. Hệ thống giúp các cấp lãnh đạo nắm sát tình hình thực hiện công việc và đưa ra ý kiến chỉ đạo và hướng giải quyết đúng đắn, kịp thời nhằm nâng cao hiệu quả quản lý. Hệ thống cung cấp các đầu mục tra cứu và tổng hợp các công việc đã và đang thực hiện trên mạng máy tính để làm các thống kê, báo cáo định kỳ theo yêu cầu.

Hệ thống được xây dựng sử dụng các công nghệ kỹ thuật mới như: ứng dụng hướng tiếp cận áp dụng các mẫu thiết kế, sử dụng công cụ mô hình hoá UML để phân tích và thiết kế bài toán theo mô hình hướng đối tượng; ứng dụng công nghệ Windows Applications để cập nhật và xử lý thông tin.

Với hướng tiếp cận phân tích và thiết kế hệ thống áp dụng công nghệ hướng đối tượng sử dụng các mẫu thiết kế gắn với một miền ứng dụng cụ thể(bài toán luồng công việc) và sử dụng ngôn ngữ C# dựa trên nền tảng .NET Framework 3.5 để xây dựng và phát triển hệ thống, cho phép hệ thống dễ bảo trì và phát triển mở

- 2 -

rộng trong tương lai đáp ứng được các yêu cầu thay đổi và phát triển ngày càng cao của xã hội.

Mục tiêu và phạm vi nghiên cứu của luận văn

– Nghiên cứu khái niệm, đặc điểm và phân loại Framework.

– Nắm bắt được phương pháp phân tích thiết kế hướng đối tượng một hệ thống. Sử dụng phương pháp phân tích thiết kế hướng đối tượng, áp dụng các mẫu thiết kế về hành vi và trình diễn để phân tích, thiết kế một ứng dụng cụ thể trên máy tính.

– Nghiên cứu bài toán luồng công việc, áp dụng các kiến thức về Phân tích

– Từ kết quả phân tích và thiết kế tiến hành xây dựng hệ thống dựa trên các

hướng đối tượng để phân tích thiết kế bài toán.

– Ứng dụng một phần mềm nhỏ sử dụng Framework đã xây dựng.

công cụ và môi trường đã lựa chọn.

Nội dung nghiên cứu và thực hiện của luận văn

– Nghiên cứu khái niệm, đặc điểm và phân loại Framework.

– Nếu một số đặc điểm và ứng dụng của một vài Framework sẵn có.

– Tiếp cận một số bài toán cụ thể liên quan đến luồng công việc đó là bài

toán “Quản lý luồng công việc tại Công ty đồ nội thất gia đình” và bài

– Tiến hành tổng quát hóa từ hai bài toán trên để rút ra bài toán “Luồng

toán “Quản lý tính tiền lương cho giáo viên”.

– Tiến hành xây dựng các biểu đồ Usecase cho bài toán “Luồng công việc”

công việc tổng quát”.

– Từ các biểu đồ Usecase chi tiết hóa trên tiến hành áp dụng các mẫu(patterns sẵn có như Singleton, Observer, State, Oposite…) để tổng quát hóa bài toán, tổng quát hóa các biểu đồ lớp phục vụ cho việc xây dựng Framework.

– Xây dựng chương trình và tiến hành cài đặt thử nghiệm demo một bài toán

đến mức chi tiết nhất.

nhỏ.

- 3 -

Chương 1

GIỚI THIỆU CHUNG VỀ FRAMEWORK

Trong một vài thập niên gần đây, việc sử dụng lại phần mềm đã và vẫn là một vấn đề quan trọng cho các tổ chức phát triển phần mềm. Đầu tiên, phần mềm được sử dụng lại dưới hình thức là các thư viện hàm API hay các thư viện lớp. Tiếp theo, các nhà phát triển nhận thấy không chỉ cần sử dụng lại các đoạn mã mà còn cần phải sử dụng lại cả các thiết kế của phần mềm. Do vậy, đã xuất hiện khái niệm về design pattern – mẫu thiết kế và framework – khung làm việc. Các mẫu thiết kế là một mô tả có tên về một cặp vấn đề và giải pháp. Các mô tả chi tiết về mẫu thiết kế sẽ được trình bầy trong một chủ đề khác, còn nội dung của phần này sẽ chỉ trình bầy về framework và phạm vi ứng dụng của nó.

1.1. Khái niệm về framework

1.1.1. Định nghĩa về framework

Thuật ngữ framework hướng đối tượng có thể được định nghĩa theo nhiều cách. Một framework được định nghĩa như là một phần của thiết kế và thực hiện, cho một ứng dụng trong một lĩnh vực. Điều này có cảm giác một framework không là một hệ thống hoàn chỉnh. Hệ thống này có thể được điều chỉnh lại để tạo ra các ứng dụng hoàn chỉnh. Các framework nói chung được sử dụng và được phát triển khi cần phát triển một vài ứng dụng tương tự. Một framework thực hiện các phần chung giữa các ứng dụng này. Do vậy, một framework giảm công sức cần thiết để xây dựng các ứng dụng.

Phần lớn các định nghĩa đều nhất trí rằng, một framework hướng đối tượng là một kiến trúc phần mềm có thể sử dụng lại, bao gồm cả thiết kế và mã thực hiện. Tuy nhiên, lại không có định nghĩa nào được thống nhất chung về framework và các thành phần hợp thành của nó.

Sau đây là một số các định nghĩa khác nhau hoặc tương tự nhau về

framework được nêu trong :

“Một framework ràng buộc các lựa chọn chính xác về sự phân chia trạng thái và luồng điều khiển, người dùng hoàn thiện hoặc mở rộng framework để tạo ra một ứng dụng thực tế”

“Một framework là một tập các lớp mà bao gồm một thiết kế trừu tượng cho

các giải pháp của một hoặc các vấn đề liên quan”

- 4 -

“Một framework là một tập các đối tượng mà cộng tác với nhau để tạo ra một

tập các đáp ứng cho một ứng dụng hoặc một vùng hệ thống con”

“Một framework là một tập các ký hiệu của các lớp cộng tác mà đạt được cả các mẫu phạm vi nhỏ và các cơ chế chủ yếu để thực hiện các yêu cầu chung và thiết kế trong một phạm vi ứng dụng cụ thể”

“Một tập các lớp cộng tác với nhau mà tạo ra một thiết kế có thể sử dụng lại cho một lớp cụ thể của phần mềm. Một framework cung cấp các hướng dẫn có tính kiến trúc bằng cách phân chia thiết kế thành các lớp trừu tượng và định nghĩa các đáp ứng và sự cộng tác của chúng. Một nhà phát triển tùy biến framework thành một ứng dụng cụ thể bằng cách tạo ra các lớp con và tạo ra các phiên bản của các lớp framework”

Như vậy, một framework bao gồm một tập các lớp mà các thể hiện của chúng cộng tác với nhau, được dự định để mở rộng, sử dụng lại cho các ứng dụng cụ thể của một lĩnh vực. Một họ các vấn đề liên quan, cho phép tổng hợp trong một framework. Hơn nữa, các framework được biểu diễn thành một ngôn ngữ lập trình, như vậy nó cung cấp cho việc sử dụng lại cả mã thực hiện và thiết kế.

1.1.2. Cấu trúc của một framework

Một framework hướng đối tượng bao gồm các thành phần sau:

 Các tài liệu thiết kế

 Các giao diện

 Các lớp trừu tượng

 Các thành phần

 Các lớp

Mối quan hệ giữa các thành phần khác nhau trong một framework được mô tả

như hình vẽ sau:

- 5 -

Các tài liệu thiết kế

phản ánh

Các giao diện

triển khai

Các lớp trừu tượng

triển khai

thừa kế

Các thành phần

là một phần của

Các lớp

Hình 1.1. Mối quan hệ giữa các thành phần khác nhau trong một framework

Các thành phần của một framework được mô tả như sau:

 Các tài liệu thiết kế: thiết kế của một framework có thể bao gồm các lược đồ lớp,

viết bằng văn bản hoặc chí ít là một ý tưởng trong đầu của nhà phát triển.

 Các giao diện: các giao diện miêu tả đáp ứng bên ngoài của các lớp. Các giao diện có thể được sử dụng để mô hình các vai trò khác nhau trong hệ thống, ví dụ

như các vai trò trong một mẫu thiết kế. Một vai trò đại diện cho một nhóm nhỏ

của các phương pháp trong giao diện mà liên quan tới các phương pháp khác.

 Các lớp trừu tượng: một lớp trừu tượng là một sự thực hiện chưa đầy đủ của một hoặc nhiều giao diện. Nó có thể được sử dụng để định nghĩa cách đối xử mà sẽ là

chung cho một nhóm các thành phần thực hiện một nhóm các giao diện.

 Các thành phần: Giống như các lớp, các thành phần có thể được tích hợp với các lớp khác. Trong hình vẽ, có một mũi tên “là một phần của” giữa các lớp và các thành phần. Nếu bản thân các lớp có một API được định nghĩa đầy đủ thì tập kết quả của các lớp sẽ được biểu hiện như là một tổ hợp các thành phần. Một thành phần được định nghĩa như sau: “Một thành phần phần mềm là một đơn vị kết cấu với các giao diện được ghi rõ theo hợp đồng và các phụ thuộc ngữ cảnh rõ ràng. Một thành phần phần mềm có thể được triển khai không phụ thuộc và được tổ hợp bằng các hãng thứ ba”

- 6 -

 Các lớp: Mức thấp nhất của một framework là các lớp. Các lớp chỉ khác với các thành phần là trong thực tế, các API được công khai của nó không được đưa ra trong các giao diện của một framework. Một cách điển hình là các lớp được sử

dụng bởi các thành phần để đại diện cho chức năng, ví dụ một người dùng

framework thường không nhìn thấy các lớp này trừ khi anh ta làm việc với các

thành phần.

Cách thức làm việc của một framework như sau:

Một framework làm việc bằng cách cung cấp một đặc tả rõ ràng của các tương tác được mong đợi giữa các thành phần. Ví dụ, một thành phần có thể trông chờ những gì từ các thành phần khác và cái gì nên được cung cấp tới chúng? Một framework định nghĩa các dịch vụ lựa chọn, và cung cấp một giải thích cho việc định nghĩa thành phần nào là một thành phần cung cấp. Như thế, một thành phần sẽ có khả năng được mở rộng rất lớn và các thành phần mới có thể tương tác mạnh mẽ với những cái đã có. Chúng cộng tác với các chi tiết, khía cạnh cụ thể của các vấn đề được cân nhắc bởi framework. Các thành phần ứng dụng có thể vẫn còn chứng minh tính tương thích với các vấn đề khác, như ngữ nghĩa của dữ liệu mà chúng chuyển qua. Các bộ phận phụ thuộc có thể được giới thiệu như là các thành phần của framework. Sự thi hành các thành phần này có thể cùng framework xác định một dịch vụ và cung cấp các dịch vụ này cho các thành phần khác.

1.1.3. Phân biệt framework với các khái niệm khác

Một mẫu thiết kế khác với một framework ở ba điểm. Thứ nhất, một mẫu thiết kế là trừu tượng hơn một framework, bởi vì một framework được bao gồm cả mã, trong khi đó chỉ có các ví dụ của các mẫu thiết kế mới được mã hóa. Các mẫu thiết kế thậm chí mô tả mục đích, việc cân bằng các yếu tố khác để đạt được sự kết hợp tốt nhất và các kết quả của một thiết kế. Điều này không là một trường hợp cho các framework. Thứ hai, các mẫu thiết kế là những kiến trúc nhỏ hơn so với các framework. Do vậy, một framework có thể chứa một số các mẫu thiết kế, nhưng điều ngược lại là không thể. Do vậy, các mẫu thiết kế không có ảnh hưởng lớn tới kiến trúc của ứng dụng. Cuối cùng, các framework được chuyên môn hóa hơn so với các mẫu thiết kế. Các framework luôn luôn liên quan đến một miền ứng dụng cụ thể, trong khi đó các mẫu thiết kế là chung và có thể được ứng dụng trong bất kỳ miền ứng dụng nào.

Các ngôn ngữ mẫu khác với framework theo cách mà một ngôn ngữ mẫu miêu tả: làm như thế nào để tạo ra một thiết kế. Trong khi đó, một framework hướng đối tượng là một thiết kế. Các ngôn ngữ mẫu bổ sung cho một framework, do chúng có

- 7 -

thể hướng dẫn các kỹ sư phần mềm sử dụng framework như thế nào, và mô tả tại sao nó lại được thiết kế như vậy.

Một ứng dụng hướng đối tượng khác với một framework ở chỗ, một ứng dụng mô tả một chương trình thực hiện phức tạp mà thỏa mãn một yêu cầu cụ thể. Framework đạt được các tính năng của một ứng dụng nhưng nó không thể thi hành bởi vì nó không bao gồm các tương tác trong trường hợp ứng dụng cụ thể.

Các framework khác với các thư viện lớp ở chỗ: chúng nhắm tới các miền ứng dụng cụ thể. Trong khi đó, các thư viện lớp cung cấp cho người sử dụng các sự thực hiện trước của thuật toán. Các thư viện lớp là thụ động, người sử dụng gọi các phương pháp trong thư viện lớp để thực hiện một số hoạt động. Trong khi đó các framework định nghĩa khung cho một ứng dụng thực tế và điều khiển luồng điều khiển trong ứng dụng. Các framework có thể khác so với thư viện lớp, nhưng chúng có thể sử dụng các thư viện lớp đã có sẵn để thực hiện các thuật toán chung và các cấu trúc dữ liệu.

Các thành phần phần mềm ban đầu đã được dự định là các thành phần chức năng riêng lẻ mà có thể được đầu tư từ nhà cung cấp và tích hợp vào trong các ứng dụng. Các framework dường như là những thành phần mà có thể được đầu tư từ nhà cung cấp và nhiều hơn một framework có thể được sử dụng trong một ứng dụng. Tuy nhiên, một điểm khác dễ nhận thấy giữa chúng là các framework cung cấp một bộ rộng hơn các dịch vụ so với các thành phần phần mềm. Chúng có khả năng tùy biến nhiều hơn, có các giao diện phức tạp hơn và điều quan trọng hơn là chúng thực sự định nghĩa cho một họ ứng dụng hoặc một diện rộng của các ứng dụng. Do vậy, các framework là khó học hơn đối với các nhà phát triển, nhưng một khi đã hiểu được hết framework thì sẽ có được sự linh động cao hơn và với một framework được thiết kế tốt thì có thể giảm được các nỗ lực cần bỏ ra để xây dựng một ứng dụng đã được tùy biến rõ rệt hơn.

Trong khi các framework và các thành phần là các kỹ thuật khác nhau, chúng nên được xem và được sử dụng như các kỹ thuật cộng tác với nhau. Với các framework có thể sử dụng các thành phần và các ứng dụng được phát triển sử dụng các framework thậm chí có thể tiện dụng hơn các thành phần. Ví dụ, một ứng dụng Visual C++ được tạo với MFC framework, thậm chí có thể sử dụng các thành phần ActiveX trong giao diện của nó giống như việc trao đổi với các thành phần ActiveX được đóng gói trong MFC framework. Một ví dụ khác cho sự phụ thuộc lẫn nhau giữa các framework và thành phần là việc sử dụng các framework để tạo các thành phần mới, ví dụ, framework Active Template Library (ATL) của Microsoft được sử dụng rộng rãi trong việc tạo các thành phần ActiveX.

- 8 -

1.2. Các đặc điểm của framework

Một framework hướng đối tượng có bốn đặc điểm chính sau :

 Khả năng môđun hóa

 Khả năng sử dụng lại

 Khả năng mở rộng

 Sự đổi chiều của điều khiển

Về đặc điểm thứ nhất, các framework tăng cường khả năng môđun hóa bằng cách đóng gói các chi tiết thực hiện không chắc chắn đằng sau các giao diện chắc chắn. Khả năng này giúp cho việc tăng cường chất lượng của phần mềm bằng cách cục bộ hóa các tác động của những thay đổi về kiến trúc và sự thực hiện. Sự cục bộ hóa này giảm các nỗ lực được yêu cầu để hiểu và duy trì phần mềm hiện có.

Mặt khác, các giao diện chắc chắn được cung cấp bởi các framework còn tăng cường khả năng sử dụng lại bằng cách định nghĩa các thành phần chung mà có thể được áp dụng để tạo ra các ứng dụng mới. Khả năng sử dụng lại của framework thúc đẩy kiến thức của miền ứng dụng và ưu tiên nỗ lực của các nhà phát triển kinh nghiệm để tránh việc tạo và làm hợp lệ lại các giải pháp chung cho các yêu cầu của ứng dụng lặp lại và các thách thức trong thiết kế phần mềm. Việc sử dụng lại các thành phần thiết kế có thể là một sự cải tiến đáng kể trong sản xuất chương trình, cũng như tốt cho việc nâng cao chất lượng, tính hiệu quả, độ tin cậy và tính sẵn sàng của phần mềm.

Về khả năng mở rộng, một framework tăng cường khả năng mở rộng bằng cách cung cấp các điểm nóng tường minh mà cho phép các ứng dụng mở rộng các giao diện chắc chắn và cách ứng xử của vùng ứng dụng với các sự thay đổi được yêu cầu bởi các trường hợp của ứng dụng trong một ngữ cảnh cụ thể. Khả năng mở rộng của framework là cần thiết để đảm bảo các sự điều chỉnh có tính thời gian của các dịch vụ và tính năng ứng dụng mới.

Cuối cùng, đặc điểm của kiến trúc thời gian chạy của một framework là sự đổi chiều của điều khiển, thường được gọi là “Nguyên tắc Hollywood”- Đừng gọi cho chúng tôi, chúng tôi sẽ gọi cho bạn. Kiến trúc này cho phép ứng dụng hợp với các quy tắc tiêu chuẩn bằng cách điều chỉnh từng bước xử lý, bằng các đối tượng quản lý sự kiện mà được viện dẫn thông qua cơ chế gửi kích họat lại của framework. Khi các sự kiện xảy ra, framework gửi lại kích hoạt bằng cách viện dẫn phương pháp móc nối trên các đối tượng quản lý sự kiện đã được đăng ký trước, cái mà thực hiện việc xử lý ứng dụng cụ thể trên các sự kiện. Đổi chiều điều khiển cho phép framework định nghĩa một tập các phương pháp ứng dụng cụ thể để đáp ứng với các sự kiện ở bên ngoài.

- 9 -

CHƯƠNG 2

GIỚI THIỆU MỘT SỐ FRAMEWORK CỤ THỂ

2.1. Higgin Trust Framework

2.1.1. Giới thiệu về Higgins

Higgins là một framework cho phép người dùng và doanh nghiệp tích hợp thông

tin về nhận dạng, hiện trạng, các mối quan hệ giữa các hệ thống. Sử dụng lớp context providers, hệ thống sẵn có cũng như hệ thống mới như các xí nghiệp, tổ chức và các

công nghệ liên lạc (như LDAP, email, IM,…) có thể gắn vào Higgins framework. Ứng

dụng sử dụng Higgins API có thể tích hợp ảo thông tin nhận dạng, hiện trạng và mối

quan hệ giữa các hệ thống hỗn tạp. Higgins thiết kế với mục đích giúp người phát triển ứng dụng truy cập thông tin thông qua trình duyệt, dịch vụ web.

Ứng dụng có thể sử dụng Higgins để tạo khung nhìn thống nhất về thông tin nhận

dạng và các mối quan hệ . Lĩnh vực tập trung nhất của Higgins là cung cấp cơ sở cho

nhận dạng thông tin người dùng và ứng dụng quản lý thông tin cá nhân. Higgins cung

cấp sự tích hợp ảo, liên kết, quản lý và khả năng search cho thông tin nhận dạng, các

mối quan hệ giữa các hệ thống khác biệt.

Các dịch vụ của Higgins dựa trên các plug-in ContextProviders làm cầu nối giữa

framework và hệ thống sẵn có, hoặc giữa framework đến các hệ thống sẽ xây dựng sau

này. Mỗi ContextProvider thi hành một context nào đó. Context được hiểu là “môi

trường và hoàn cảnh xung quanh quyết định đến ý nghĩa của nhận dạng số và các

chính sách, giao thức chi phối sự tương tác giữa chúng” [eclipse.org/higgins].

Một Context có thể bao gồm thông tin về một đối tượng số đơn lẻ hoặc mô tả

một nhóm các đối tượng số như một đội dự án, một văn phòng, tổ chức, gia đình,

nhóm khách hàng,…

- 10 -

Hình 2.1. Higgins Trust Framework

ContextProviders thường hoạt động như “cầu nối” giữa framework với hệ thống

sẵn có. “Cầu nối” này cung cấp kết nối đến kho lưu trữ như LDAP server, hệ thống

quản lý nhận dạng, diễn đàn, và các mạng xã hội. Nó cũng có thể kết nối với các mạng

giao tiếp như email, instance message,…

Kiến trúc dịch vụ của Higgins framework cho phép ứng dụng mở rộng phạm vi

truy cập đến các hệ thống ngoài mà không cần phải thay đổi bản thân ứng dụng.

2.1.2. Các thành phần của Higgins

Higgins gồm 12 thành phần: Higgins Browser Extension, RP Enablement, I-Card

Manager, RP Protocol Support, ISS Client UI, I-Card Selector Service (ISS), I-Card

Registry, I-Card Provider, Token Service, Token Provider, Identity Attribute Service

(IdAS), Context Provider được tổ chức như hình 3.2.

- 11 -

Hình 2.2. Kiến trúc của Higgins

Chúng ta sẽ lần lượt tìm hiểu các thành phần của Higgins framework.

2.1.2.1. Browser Extension

Higgins Browser Extension là một mở rộng trình duyệt Firefox viết bằng javascript. Khi Higgins Extension được cài đặt và trình duyệt duyệt đến một site đối tác, Higgins Browser Extension quản lý quyền truy cập và các tương tác liên quan đến định danh tương tác giữa site đối tác và dịch vụ Higgins.

2.1.2.2. RP Enablement

RP Enablement là tập hợp các thành phần sử dụng để tạo site đối tác. Các thành phần con tách biệt trong mục này sẽ được tạo ra để hoạt động như các dịch vụ tin

tưởng cho lớp các giao thức khác nhau.

- 12 -

Hình 2.3. RP Enablement

2.1.2.3. I-Card Manager

Cung cấp giao diện quản lý web-based đến I-Card của người dùng và ưu tiên dữ

liệu ngữ cảnh. Thành phần này được truy cập bởi một nút bấm được thêm vào thanh

công cụ của trình duyệt.

Hiện này, thành phần này đang được phát triển trên ngôn ngữ java, các thành

phần con base-web sử dụng công nghệ JSP/Servlets, JSF, AJAX, JavaMail,…

2.1.2.4. RP Protocol Support

Cung cấp hỗ trợ cho client, bao gồm cả Higgins Browser Extension.

Thành phần này hỗ trợ cho

- Giao diện người dùng

- Mẫu tương tác giữa các đối tác

- Hỗ trợ cho openID 2.0: openID là một framework mã nguồn mở để quản lý

ID cho chủ yếu các website.

2.1.2.5. ISS Client UI

- 13 -

Cung cấp mọi giao diện người dùng và khả năng tạo mới thẻ CardSpace tương

thích. Nó cung cấp chức năng tương tự như CardSpace trên Windows Vista. ISS Client UI được gọi bởi RP Protocol Support trên máy khách của người dùng.

2.1.2.6. I-Card Selector Service

I-Card Selector Service ghép chính sách an ninh của đối tác tới một hoặc nhiều I-

Card thỏa mãn chính sách đó. Hay nói cách khác, I-Card Selector Service cố gắng đưa ra một I-Card thích hợp với nhu cầu của đối tác.

2.1.2.7. I-Card Registry

Thành phần I-Card Registry quản lý tập các I-Card của người dùng. Mỗi I-Card

được tạo và quản lý bởi một I-Card Provider và thi hành giao diện I-Card Interface.

Các giao diện của I-Card Registry có hai phần:

- Một giao diện để quản lý I-Card như thêm mới, xóa bỏ và duyệt các I-Card.

- Tập các giao diện thi hành bởi I-Card Provider.

2.1.2.8. I-Card Provider

I-Card Provider chịu trách nhiệm tạo và quản lý các I-Card thi hành giao diện I-

Card Interfaces. Thành phần này cũng chịu trách nhiệm nhập I-Card từ các loại dữ liệu

card khác nhau. Lưu ý là I-Card Provider chỉ chịu trách nhiệm nhập dữ liệu, việc xuất

dữ liệu được thi hành bởi chính lớp I-Card.

Higgins framework hiện đang thi hành các I-Card Provider sau:

- CardSpace Managed I-Card Provider

- CardSpace Personal I-Card Provider

- URI Managed I-Card Provider

- URI Personal I-Card Provider

2.1.2.9. Token Service

Token Service tạo nhận dạng số dùng được cho đối tác từ dữ liệu yêu cầu. Dữ liệu yêu cầu có thể truyền bởi I-Card Provider đến Token Service sau đso đến Token Provider hoặc Token Issuer có thể nhận dữ liệu từ I-Card Provider.

- 14 -

Hình 2.4. Kiến trúc Token Service

Thuật ngữ Token Service trong Higgins còn được sử dụng thay cho Sercurity

Token Service (STS). Token Service thi hành OASIS WS-Trust chuẩn và cung cấp hỗ

trợ cho việc triển khai trong nhiều tình huống [eclipse.org]

2.1.2.10. Token Provider

Token Provider cung cấp việc đóng gói cho các token cho Token Service.

2.1.2.11. Identity Attribute Service

Để hỗ trợ môi trường động nơi nguồn của thông tin định danh có thể thay đổi, cần thiết phải cung cấp một phương thức chung cho việc truy cập thông tin định danh và thuộc tính từ các kho định danh. Identity Attribute Service cung cấp khung nhìn thống nhất về thông tin định danh. Identity Atrribute Service bao gồm các dịch vụ như:

nạp ngữ cảnh, mở ngữ cảnh từ các ngữ cảnh khác, xác nhận thẩm quyền trong quá

trình ngữ cảnh mở, truy cập nội dung của ngữ cảnh mở và xem xét đối tượng số và

- 15 -

các thuộc tính, các mối liên kết của đối tượng số bên trong các ngữ cảnh. Identity

Attribute Service hỗ trợ quản lý các thuộc tính của đối tượng số liên kết bên trong các ngữ cảnh. Các hàm giao diện của Identity Attribute Service có thể truy cập được thông

qua ngôn ngữ java hoặc ác ngôn ngữ khác cũng như thông qua WSDL và HTTP/XML.

2.1.2.12. Context Provider

Một context Provider hỗ trợ cho một hoặc nhiều loại ngữ cảnh của Higgins framework. Một Context Provider chịu trách nhiệm quản lý dữ liệu bên trong, an toàn,

mã hóa,… Context Provider cung cấp khả năng chuyển đổi dữ liệu một hoặc hai chiều

từ cấu trúc bên trong nó đến mô hình dữ liệu Identity Attribute Service thông thường.

Trong nhiều trường hợp Context Provider hoạt động như cầu nối của các dịch vụ sẵn có như hệ thống giao tiếp, mạng xã hội, dịch vụ cung cấp định danh, các trò chơi, ứng

dụng doanh nghiệp,… Thêm vào các dịch vụ web, Context Provider có thể nối liền

ứng dụng phía client như email, instance message và các ứng dụng cộng tác khác.

Hiện nay Higgins dự kiến phát triển khoảng 3 – 5 Context Provider với mục đích

các đối tác có thể sử dụng chúng cho dự án của họ.

2.1.3. Mô hình dữ liệu của Higgins

Để xây dựng mô hình dữ liệu, Higgins đưa ra các khái niệm cơ bản, đưa ra mục

đích của mô hình từ đó xây thiết kế mô hình dữ liệu.

Chúng ta lần xem xét một số khái niệm cơ bản trong mô hình dữ liệu của Higgins

và nghiên cứu mục tiêu của mô hình.

2.1.3.1. Các khái niệm dữ liệu cơ bản

2.1.3.1.1. Context

Một Higgins Context là một tập hợp một hoặc nhiều Digital Subjects (đối tượng

số) định danh bởi ContextId. Một số Context là lớp trừu tượng, ContextId của nó không trỏ vào một thể hiện Context vật lý nào. Các Context còn lại là không trừu tượng, thông qua một dịch vụ truy cập dữ liệu mạng (hoặc nội bộ), ContextId trỏ vào một đối tượng dữ liệu nào đó là thể hiện của Context được quản lý bởi Context Provider.

Mỗi đối tượng số bên trong một ngữ cảnh có một định danh duy nhất là SubjectId. Định danh này duy nhất bên trong không gian tên hoặc định nghĩa bởi

Context C1 hoặc các Context C2 mà C1 kế thừa.

- 16 -

Ví dụ về Context bao gồm nhiều đối tượng số bao gồm: thư mục, nhóm dự án, hệ

thống giao tiếp,… Cũng có những Context thường bao gồm một đối tượng số duy nhất như: thẻ tín dụng, thẻ nghiệp vụ, và các thiết bị an ninh khác,…

2.1.3.1.2. Digital Subject

Đối tượng số là một thực thể mô tả hoặc nằm trong lĩnh vực số đang đề cập đến

[originally from Kim's Laws, "person or thing" replaced with entity by PaulT]

Đối tượng số sử dụng Higgins có những đặc điểm sau:

- Một đối tượng số gồm nhiều thuộc tính định danh, và có thể không có thuôc

tính nào cả.

- Một vài thuộc tính định danh có thể là quan hệ tham chiếu đến đối tượng số

khác trong cùng ngữ cảnh hoặc giữa các ngữ cảnh với nhau.

- Do ngữ cảnh có thể là cấu trúc lồng, nên liên kết giữa các đối tượng số liên quan đến những ngữ cảnh đó cung cấp một cái nhìn tổng quan của một đối

tượng số.

- Không có một ràng buộc ngầm định giữa các đối tượng số. Ví dụ một người có thể đòi hỏi tên của họ là Joe trong một đối tượng số này, nhưng trong đối

tượng số khác tên của người đó là JoAnn.

2.1.3.1.3. Thuộc tính định danh

Thuộc tính định danh được định nghĩa là một thuộc tính của đối tượng số có một

hoặc nhiều giá trị, hoặc không giá trị nào [wikipedia.com]

Trong Higgins một thuộc tính định danh được định danh bởi một URI (URL)

định nghĩa kiểu của nó. Ví dụ: URI: “http://openschemas.org/2006/person/surname”

chỉ ra thuộc tính định danh đó mô tả họ của một người. Giản đồ liên kết với Context

chứa định danh đó cho ta siêu dữ liệu mô tả liên kết URI đó.

Giá trị của thuộc tính định danh có thể là một kiểu dữ liệu nguyên thủy, hoặc dữ liệu phức như struct,…Có một thuộc tính định danh đặc biệt là Subject Relationshop (quan hệ đối tượng) có giá trị là tham chiếu đến đối tượng số khác trong cùng ngữ cảnh hay ngữ cảnh khác.

- 17 -

Một vài thuộc tính định danh được định nghĩa bởi ngữ cảnh chứa đối tượng số để

đưa ra những giá trị khác nhau. Ví dụ thuộc tính “thời tiết” có thể có các giá trị {“nắng”, “mưa”, “nhiều mây”},…

2.1.3.2. Mục tiêu của mô hình

- Mô hình dễ dàng mở rộng, các thuộc tính và quan hệ dễ dàng thêm vào sau

này

- Cho phép các đối tượng được định danh duy nhất

- Các đối tượng có thuộc tính quan hệ tham chiếu đến các đối tượng khác, các

thuộc tính này được nhóm lại thành tập hoặc chuỗi.

- Mọi đối tượng và thuộc tính của nó đếu được gán địa chỉ

- Mọi thuộc tính được định danh bởi một địa chỉ URI toàn cục duy nhất

- Hỗ trợ đa ngữ cảnh

- Mỗi ngữ cảnh có thể định danh duy nhất

- Các ngữ cảnh có thể liên kết một – một hoặc một – nhiều với các ngữ cảnh

khác.

- Giản đồ mô tả phải khả thi.

2.2. JhotDraw

2.2.1. Giới thiệu khung làm việc JhotDraw

JhotDraw là một khung làm việc ứng dụng cho việc xây dựng các ứng dụng vẽ

hình đồ họa. Nó là một khung làm việc thuần Java và là một sản phẩm mã nguồn mở.

Người sử dụng dùng các trình vẽ hình để tổ chức các đối tượng hình đồ họa trên một

miền vẽ. Nó là một loại ứng dụng rất hay gặp trong các máy tính để bản. Tuy nhiên

các loại hình đồ họa vẽ lại khác nhau. Một số trình vẽ hình cho phép người sử dụng vẽ các hình như tranh ản, một số khác lại cho phép vẽ hình trong một miền nào đó để khi thao tác với các hình đó thì nó thể hiện ngữ nghĩa của miền đó.

JhotDraw là một khung làm việc ứng dụng có thể được phát triển cho các trình vẽ hình mang tính kỹ thuật. Ban đầu nó được phát triển trong SmallTalk bởi Kent Back và Ward Cunningham. Sau đó nó được phát triển bởi Erich Gamma và Thomas Eggenschwiler (sau này được gọi là nhóm bộ tứ). Phiên bản hiện tại là 6.1 beeta. Nó là

một khung làm việc có độ tin cậy và độ chắc chắn rất cao, và là một sản phẩm mã

- 18 -

nguồn mở rất nổi tiếng, được thế giới mã nguồn mở phát triển hơn 10 năm nay. Nó

cũng là một trong những dự án phát triển phần mềm được thiết kế một cách sáng sủa để sử dụng lại và được gán cái nhãn “Khung làm việc” (Framework).

JhotDraw, bản thân chúng dựa trên lịch sử lâu dài của các khung làm việc cho

các trình vẽ hình. Một cách cụ thể, JhotDraw là một phiên bản Java của một khung

làm việc SmallTalk (ngôn ngữ lập trình hướng đối tượng đầu tiên), khung làm việc đó được gọi là HotDraw. HotDraw dựa trên SmallTalk cũng là một sản phẩm mã nguồn

mở và hiện tại nó cũng phát triển song song cùng phiên bản của nó (JhotDraw) dựa

trên Java. Hơn nữa, những phiên bản JhotDraw còn dựa trên nền tảng của ET++, một

khung làm việc ứng dụng C++ trước đó.

Erich Gamma sử dụng JhotDraw cho mục đích dạy học, đó chính là lý do tại sao

nó được thiết kế và được triển khai rất tốt. Mã nguồn của nó được chú giải theo cách

chú giải của tài liệu Java. Hiện nay nó đang là một sản phầm mã nguồn mở rất nổi

tiếng trên sourcefogce.net, đang được Wolfram Kaiser chịu trách nhiệm tổng hợp các

phản hồi và chịu trách nhiệm chính cho việc phát triển nó.

2.2.2. Kiến trúc tổng quan về thiết kế của JHotDraw

- 19 -

Hình 2.5: Kiến trúc tổng quan về thiết kế của JHotDraw

Sử dụng các mẫu thiết kế:

 Observer, Strategy, State, Adapter, Prototype, FactoryMethod,

Composite, Decorater

 Mẫu thiết kế Composite

Công việc

- 20 -

Mẫu thiết kế State

Chỉnh sửa

Mẫu thiết kế Template

- 21 -

Đường nối

Mẫu thiết kế Prototype

Tạo công việc và đường nối

- 22 -

Hình 2.6: Các mẫu thiết kế

- 23 -

CHƯƠNG 3

XÂY DỰNG FRAMEWORK GIẢI QUYẾT

BÀI TOÁN LUỒNG CÔNG VIỆC-WORKFLOW.

3.1. Mô tả bài toán quản lý công việc tại một công ty thiết kế đồ nội thất gia

đình:

3.1.1. Bài toán đặt ra:

Công ty A thiết kế đồ nội thất gia đình muốn quản lý hoạt động thiết kế và sản

xuất ở các bộ phận, phòng ban của công ty.

Giám đốc công ty ký kết hợp đồng và nhận yêu cầu từ khách hàng. Tưng ứng với mỗi

công việc nhất định giám đốc công ty sẽ bắt đầu phân công cho các phòng ban ở bên

dưới thực hiện các công việc tương ứng với chức năng của mỗi phòng của công ty.

Giám đốc công ty tạo đầu mục công việc, thư ký giám đốc nhập chỉ đạo và phân

công giải quyết xuống phòng thiết kế. Ban lãnh đạo phòng thiết kế nhận yêu cầu chỉ

đạo của giám đốc lại tiếp tục tạo đầu mục công việc tương ứng. Chủ trì công việc ở

phòng thiết kế sẽ nhập chỉ đạo và phân công giải quyết công việc từ ban lãnh đạo phòng thiết kế. Dựa vào danh sách phân công giải quyết của chủ trì công việc trong

phòng thiết kế, nhân viên phòng thiết kế sẽ thiết kế ra các mẫu thiết kế cho các sản

phẩm mà khách hàng đặt hàng.

Sau khi thiết kế xong, bản thiết kế sẽ được chuyển đến lãnh đạo phòng sản xuất.

Lãnh đạo phòng sản xuất lại tiếp tục tạo ra các đầu mục công việc tương ứng, chủ trì

công việc phòng sản xuất nhập chỉ đạo và phân công giải quyết cho nhân viên phòng

sản xuất.

Sản phẩm được phòng sản xuất hoàn thiện và chịu sự giám sát, theo dõi của lãnh

đạo phòng sản xuất và ban giám đốc.

3.1.2. Sơ đồ hoạt động quản lý công việc tại công ty thiết kế đồ nội thất gia

đình:

- 24 -

Hình 3.1: Sơ đồ hoạt động quản lý công việc tại công ty thiết kế đồ nội thất gia đình

3.1.3. Mô hình miền lĩnh vực:

- 25 -

Sau đây là mô hình khái niệm nghiệp vụ quản lý chương trình quản lý hoạt động giao công việc.

Hình 3.2: Mô hình khái niệm hệ thống tổ chức và quản lý công việc tại công ty thiết kế đồ nội thất gia đình

3.2. Mô tả bài toán quản lý thanh toán tiền lương:

3.2.1. Bài toán đặt ra:

Trường Đại học Công Nghệ giao nhiệm vụ thanh toán tiền lương cho phòng đào tạo đại học, phòng đào tạo sau đại học và phòng tổ chức hành chính và phòng tài vụ.(Dựa trên tham chiếu vào bảng quy chuẩn của từng phòng một-Tài liệu tham chiếu).

Mỗi phòng có một số chức năng nhất định.

Phòng đào tạo đại học dựa trên thời khóa biểu và phân công công tác sẽ tính ra số

tiết dạy, số bài chấm, số hướng dẫn luận văn tốt nghiệp đại học… của mỗi giáo viên.

- 26 -

Phòng đào tạo sau đại học cũng dựa vào thời khóa biểu, hướng dẫn luận văn sẽ

thống kê số tiết, số hướng dẫn luận văn thạc sĩ, tiến sĩ, số bài chấm…của mỗi giáo viên.

Mỗi giáo viên phải giảng dạy một khối lượng công việc nào đó gọi là số giờ

nghĩa vụ. Căn cứ vào số giờ nghĩa vụ mỗi tháng(tính trung bình cộng của cả năm: số

giờ nghĩa vụ cả năm/12 tháng) mà mỗi giáo viên giảng dạy, hàng tháng mỗi giáo viên sẽ được hưởng mức lương bình quân của mỗi tháng tương ứng.

Dựa trên kết quả tổng hợp của phòng đào tạo đại học và phòng đào tạo sau đại

học và dựa trên quy chế của nhà trường về số giờ nghĩa vụ mà mỗi giáo viên phải

giảng dạy, phòng tổ chức hành chính tiến hành tính toán, tổng hợp lại số giờ thừa hoặc thiếu và gửi kết quả lên phòng tài vụ để trả tiếp tiền lương tương ứng với các giờ thừa

ra hoặc là trừ tiền đối với trường hợp giáo viên giảng dạy thiếu so với số giờ bắt buộc.

Phòng tài vụ dựa trên kết quả từ phòng tổ chức hành chính tiến hành lập phiếu

thanh toán cho các thầy, khi các thầy đến lĩnh thì lập phiếu chi. Sau khi thanh toán sẽ

có thông báo cho các thầy và chuyển tiền vào tài khoản.

Quy chế: Theo tín chỉ, mỗi tiết tín chỉ = 1/3 tiết thường. Thạc sĩ 40 nghìn, tiến sĩ

50 nghìn/tiết, phó giáo sư 60 nghìn. Hướng dẫn cho tiến sĩ(từ thạc sĩ lên) sẽ nhận khác

với hướng dẫn cho tiến sĩ từ sinh viên lên.

(Dựa vào bảng quy chế chi tiêu nội bộ sẽ biết được giá..)

3.2.2. Sơ đồ tiến trình quản lý hoạt động thanh toán tiền lương:

- 27 -

- 28 -

Hình 3.3: Sơ đồ tiến trình quản lý hoạt động thanh toán tiền lương

- 29 -

3.2.3. Mô hình miền lĩnh vực:

Hình 3.4: Mô hình miền lĩnh vực của bài toán quản lý tính tiền lương

3.3. Mô tả bài toán tổng quát:

3.3.1. Các thông tin chung về bài toán luồng công việc:

Một cơ quan tổ chức muốn quản lý hoạt động giao việc, thực hiện công việc và

báo cáo kết quả công việc một cách khoa học và chi tiết nhất.

Trong các Cơ quan, doanh nghiệp, cơ cấu tổ chức quản lý-điều hành điển hình

được phân theo cấp quản lý từ cao xuống thấp như sau:

- Ban Giám đốc (Giám đốc, các phó giám đốc, trợ lý, thư ký giám đốc)

- Lãnh đạo phòng (Trưởng phòng và các phó phòng, thư ký phòng)

- Tổ (Tổ trưởng, tổ phó, trưởng nhóm, ...)

- Chuyên viên

- 30 -

Ban Giám Đốc (Giám đốc, phó giám đốc, thư ký, trợ lý,...)

...

Lãnh đạo phòng ban 1 (Trưởng phòng, phó phòng, Văn thư phòng)

Lãnh đạo phòng ban n (Trưởng phòng, phó phòng, Văn thư phòng)

...

Tổ m

Tổ 1

...

Nhân viên 1

Nhân viên k

Hình 3.5. Mô hình phân cấp quản lý trong doanh nghiệp

Các công việc được xuất phát, tạo ra từ cấp Lãnh đạo phòng/tổ trở lên với nguồn

là: các chỉ đạo trong các cuộc họp, các công văn và các chỉ đạo đến từ cấp trên, công

việc riêng của phòng. Các công việc được tổ chức theo mô hình cây phân cấp, một

công việc lớn được phân thành nhiều công việc nhỏ, mỗi công việc nhỏ nhất được giao

cho một chuyên viên giải quyết.

Thông tin cơ bản của mỗi công việc bao gồm: Tên công việc, Ngày giao, Người

giao, Ngày yêu cầu kết thúc, Độ khẩn, Nội dung công việc, Nội dung giải quyết,

Người (nhóm người giải quyết), ngày hoàn thành công việc, Khối lượng hoàn thành,

Trạng thái giải quyết, Thời gian tiếp nhận công việc, Trạng thái (đọc, chưa đọc), Nội

dung chỉ đạo, ....

Mỗi công việc được quản lý phân cấp theo chủ đề công việc. Khi có công việc

phân xuống Phòng/ban (các công việc lớn được chia cho nhiều phòng ban, chuyên

viên cùng giải quyết), lãnh đạo Phòng phân về các Tổ, các lãnh đạo Tổ lại chia nhỏ công việc để phân cho từng chuyên viên giải quyết (công việc nhỏ nhất).

Mỗi công việc có các trạng thái giải quyết sau:

 Chưa phân giải quyết: công việc mới tạo ra chưa phân giải quyết

 Đang giải quyết: công việc đã được phân cho phòng ban (hay chuyên viên)

giải quyết nhưng chưa giải quyết xong.

- 31 -

 Đã giải quyết xong: Tất cả các công việc đã phân cho phòng ban (hay

chuyên viên) giải quyết, và các công việc này đã được giải quyết xong.

 Quá hạn giải quyết: tất cả các công việc đang giải quyết mà có ngày kết

thúc nhỏ hơn ngày hiện tại.

Lãnh đạo dựa vào trạng thái giải quyết và mức độ hoàn thành công việc để theo

dõi và cập nhật nội dung chỉ đạo thực hiện công việc. Lãnh đạo có thể tổng hợp số lượng công việc theo trạng thái giải quyết và xem tiến độ giải quyết công việc của một

chuyên viên, tổ, phòng hay toàn công ty.

3.3.2. Công tác quản lý bài toán luồng công việc:

Cấp trên (Lãnh đạo phòng/tổ trở lên) tạo các công việc và phân cho các cấp quản

lý dưới giải quyết (Giám đốc phân cho phòng, Lãnh đạo phòng phân cho Lãnh đạo tổ,

Lãnh đạo tổ phân cho các Chuyên viên phối hợp giải quyết,...).

Chỉ có người tạo ra công việc mới có quyền sửa, xoá nội dung công việc. Người

tạo ra công việc và Người chủ trì giải quyết công việc có quyền thay đổi các thông tin

về tiến độ hoàn thành và nội dung giải quyết công việc. Người dùng ở cấp quản lý nào

chỉ xem và chỉ đạo, giải quyết được các công việc tương ứng với cấp của mình.

Công việc được Lãnh đạo phân công cho cấp dưới giải quyết có kèm theo độ

khẩn, giới hạn giải quyết và nội dung giải quyết công việc. Một công việc có thể được

phân cho một hoặc nhiều người giải quyết. Mỗi công việc có một người được giao

trách nhiệm chính (người chủ trì công việc). Người chủ trì công việc có quyền xem và

chỉ đạo, phối hợp với các người khác trong nhóm để giải quyết công việc. Các người thuộc nhóm tiếp nhận công việc, giải quyết phần việc của mình và cập nhật nội dung

giải quyết công việc. Người chủ trì xem xét nội dung giải quyết công việc của các

thành viên trong nhóm và cho các chỉ đạo giải quyết, cập nhật thông tin mức độ hoàn

thành công việc, thông tin đề xuất kiến nghị với cấp trên.

3.3.3. Sơ đồ tiến trình quản lý hoạt động giao công việc

- 32 -

Hình 3.6: Sơ đồ tiến trình quản lý hoạt động giao công việc

- 33 -

3.3.4. Các yêu cầu xây dựng hệ thống quản lý hoạt động giao công việc

Hệ thống quản lý hoạt động giao công việc được xây dựng phải đáp ứng được

các yêu cầu sau:

 Nội dung thông tin về công việc, luồng thông tin giải quyết công việc được

lưu trên máy tính.

 Hệ thống có thể hiển thị cây phân cấp giải quyết công việc theo từng chủ đề công việc, người dùng/nhóm người dùng/phòng ban. Các công việc được

hiển thị với màu sắc khác nhau tương ứng với trạng thái công việc đang/chưa/quá hạn giải quyết, điều này giúp Lãnh đạo biết được công việc

đang ứ đọng và tắc lại ở bộ phận/phòng ban nào để kịp thời đôn đốc, chỉ

đạo giải quyết.

 Hệ thống đưa ra được ứng với mỗi công việc có bao nhiêu phòng/ban, chuyên viên tham gia vào công việc đó, tổng thời gian giải quyết công việc,

thời gian chậm tiến độ.

 Hệ thống đưa ra được ứng với mỗi người dùng/phòng ban có bao nhiêu

công việc đã/đang/chưa giải quyết.

 Vẽ biểu đồ Grantt hiển thị kế hoạch thực hiện cho từng chủ đề công việc: căn cứ vào ngày giải quyết và thời gian giải quyết có thể vẽ biểu đồ phân

lịch giải quyết công việc, tuần tự các công việc được thực hiện.

 Có thể tra cứu, báo cáo thống kê tình hình thực hiện, khối lượng thực hiện

công việc dễ dàng, nhanh chóng trên máy tính.

3.3.5. Các chức năng hệ thống

Bảng 2.1: Các chức năng hệ thống

Mã tham chiếu Tên chức năng

R.1 Cập nhật đầu mục công việc

R.1.1 Tạo đầu mục công việc mới

R.1.2 Sửa đầu mục công việc

R.1.3 Xoá đầu mục công việc

R.2 Phân giải quyết công việc

R.3 Chỉ đạo giải quyết công việc

- 34 -

R.3.1 Thêm chỉ đạo mới

R.3.2 Cập nhật chỉ đạo

R.4 Giải quyết công việc

R.5 Cập nhật từ điển

R.6 Vẽ biểu đồ Grantt

R.6.1 Vẽ biểu đồ công việc theo người giải quyết

R.6.2 Vẽ biểu đồ theo chủ đề nhóm công việc

R.6.3 Vẽ biểu đồ kế hoạch thực hiện một công việc

R.7 Quản trị người dùng

R.7.1 Cập nhật người dùng

R.7.2 Cập nhật nhóm quyền

R.7.3 Phân quyền truy nhập

R.8 Tra cứu công việc

R.9 Báo cáo thống kê

3.3.6. Từ điển dữ liệu và mô hình lĩnh vực nghiệp vụ

3.3.6.1. Các khái niệm dự tuyển cho nghiệp vụ quản lý giao việc

Bảng 2.2: Các khái niệm dự tuyển cho nghiệp vụ quản lý giao việc

Stt Tên khái niệm Mô tả

Một bộ phận trong một đơn vị Phòng ban 1

Một cá nhân làm việc trong đơn vị Nhân viên 2

Chức năng thao tác giao việc Chức năng 3

Loại quyền 4

Mỗi loại quyền tương ứng với một nhóm các chức năng thao tác giao việc

Công việc Một hồ sơ công việc 5

Loại công việc Tên nhóm loại công việc 6

Hồ sơ các lần giải quyết một công việc Giải quyết 7

Chỉ đạo 8

Hồ sơ các lần chỉ đạo thực hiện một công việc

- 35 -

9 Chức danh quản lý Tên chức danh quản lý công việc

10 Quản lý công việc

Hồ sơ lưu chức danh quản lý công việc của từng nhân viên với một công việc cụ thể

3.3.6.2. Mô hình lĩnh vực nghiệp vụ

Sau đây là mô hình khái niệm nghiệp vụ quản lý chương trình quản lý hoạt động

giao công việc.

Hình 3.7: Mô hình khái niệm hệ thống tổ chức và quản lý giao công việc

3.3.7. Đặc tả hệ thống bài toán luồng công việc

3.3.7.1. Các tác nhân (Actor) trong hệ thống

Bảng 2.3: Mô tả các tác nhân trong hệ thống

Stt Tên tác nhân Vai trò của tác nhân

Là người dùng hệ thống, khi sử dụng hệ thống phải 1 Ban Giám đốc

- 36 -

đăng nhập vào hệ thống.

Tác nhân này tham gia vào hệ thống với công việc chủ yếu là chỉ đạo thực hiện công việc mới, tạo các chủ đề công việc cấp vĩ mô của công ty.

Tác nhân này có thể xem, giám sát và chỉ đạo thực hiện công việc của tất cả các phòng/ban trong Công ty.

2 Thư ký Giám đốc

Là người dùng hệ thống, khi sử dụng hệ thống phải đăng nhập vào hệ thống.

Tác nhân này tham gia vào hệ thống với công việc chủ yếu là tiếp nhận chỉ đạo thực hiện công việc từ Ban Giám đốc, từ các công văn, từ kết luận các cuộc họp để tạo chủ đề, đầu mục công việc, giao các Phòng/ban giải quyết.

Tiếp nhận báo cáo thực hiện công việc từ Lãnh đạo phòng/ban, tổng hợp và báo cáo với Ban Giám đốc. Tác nhân này có thể xem, giám sát việc thực hiện công việc của tất cả các phòng/ban trong Công ty.

3 Lãnh đạo Phòng

Là người dùng hệ thống, khi sử dụng hệ thống phải đăng nhập vào hệ thống.

Tác nhân này tham gia vào hệ thống với công việc chủ yếu là tiếp nhận chỉ đạo thực hiện công việc từ Ban Giám đốc, Thư ký giám đốc và tạo ra các công việc mức phòng giao các Nhân viên giải quyết.

Tác nhân này có thể xem, giám sát và chỉ đạo thực hiện công việc của tất cả các Nhân viên trong Phòng/ban mình quản lý.

4 Chủ trì công việc

Là người dùng hệ thống, khi sử dụng hệ thống phải đăng nhập vào hệ thống.

Tác nhân này tham gia vào hệ thống với công việc chủ yếu như tác nhân Nhân viên, nhưng tác nhân này còn có thêm quyền xem, giám sát và chỉ đạo thực hiện công việc của tất cả các Nhân viên cùng phối hợp thực hiện công việc do mình chủ trì.

Tác nhân này có thể tạo các công việc con và phân cho các nhân viên cùng phối hợp thực hiện công việc do

- 37 -

mình chủ trì.

5 Nhân viên

Là người dùng hệ thống, khi sử dụng hệ thống phải đăng nhập vào hệ thống.

Tác nhân này tham gia vào hệ thống với công việc chủ yếu là tiếp nhận và giải quyết các công việc được phân từ Lãnh đạo phòng/Tổ.

Tác nhân này có thể xem nội dung và chỉ đạo thực hiện công việc của tất cả các Nhân viên cùng phối hơp giải quyết. công việc.

6 Quản trị hệ thống

Là người dùng hệ thống, khi sử dụng hệ thống phải đăng nhập vào hệ thống.

Tác nhân này tham gia vào hệ thống với các công việc quản trị người dùng vào ra hệ thống, phân quyền vào ra, quản trị hồ sơ thông tin Phòng/ban, Nhân viên. Đảm bảo sự vận hành của hệ thống chương trình trên mạng máy tính.

7 Hệ thống chứng thực

người dùng

Là hệ thống chứng thực người dùng đăng nhập vào phần mềm với tài khoản trên mạng LAN của công ty, trả lại kết quả cho hệ thống người dùng hợp pháp trên mạng LAN.

3.3.7.2. Các ca sử dụng (Usecase) của hệ thống

3.3.7.2.1. Ca sử dụng Đăng nhập hệ thống

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Nhân viên, Quản trị hệ

thống, Chủ trì công việc, Hệ thống chứng thực người dùng.

+ Mục đích: Cho phép tác nhân đăng nhập hệ thống nhờ định danh, mật khẩu.

– Người dùng nhập tên và mật khẩu và xác nhận đăng nhập.

– Hệ thống chứng thực người dùng xác thực và kiểm tra tài khoản tồn tại trong

+ Mô tả khái quát:

– Nếu người dùng này có quyền hoạt động, hệ thống sẽ lấy thông tin của người

Cơ sở dữ liệu.

dùng và các quyền truy nhập để tạo một gói thông tin cho phiên truy nhập đó.

- 38 -

– Kiểm tra và xoá bỏ gói thông tin truy nhập hệ thống của người dùng khi

người dùng logout ra khỏi hệ thống.

3.3.7.2.2. Ca sử dụng Tạo công việc mới

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng.

+ Mục đích: Cho phép người dùng tạo ra các đầu mục công việc mới.

– Tác nhân chọn chức năng Tạo công việc mới.

– Nhập các thông tin cần có của một hồ sơ công việc

– Nếu không có sai sót thì hệ thống thông báo có một công việc mới đã được

+ Mô tả khái quát:

tạo. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.3. Ca sử dụng Sửa thông tin hồ sơ công việc

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc.

+ Mục đích: Cho phép tác nhân nhập thông tin chỉnh sửa của công việc (công việc do chính tác nhân tạo) đã chọn, chỉ các thông tin thuộc hồ sơ công

việc gốc mới được phép sửa.

– Tác nhân chọn một hồ sơ công việc cần sửa thông tin.

– Các thông tin của công việc đã chọn hiện lên cho phép tác nhân chỉnh sửa lại

+ Mô tả khái quát:

– Nếu không có sai sót thì hệ thống thông báo công việc đã cập nhật thông tin

thông tin của hồ sơ công việc.

thành công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.4. Ca sử dụng Xoá hồ sơ công việc

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng.

+ Mục đích: Cho phép tác nhân xoá các đầu mục công việc (công việc do chính tác

nhân tạo) đã chọn.

– Tác nhân chọn các công việc cần xoá và xoá.

+ Mô tả khái quát:

- 39 -

– Hệ thống sẽ xoá các công việc đã chọn. Nếu không có sai sót thì hệ thống

thông báo đã xoá công việc thành công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.5. Ca sử dụng Phân giải quyết công việc

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Nhân viên.

+ Mục đích: Cho phép tác nhân (trừ tác nhân Nhân viên) phân các đầu mục công việc (công việc do chính tác nhân tạo hoặc do cấp trên giao xuống)

cho các nhân viên cấp dưới giải quyết.

– Tác nhân (trừ tác nhân Nhân viên) chọn công việc, chọn người chủ trì giải

+ Mô tả khái quát:

quyết và chọn các nhân viên cấp dưới cần phân phối hợp giải quyết. Sau khi

– Hệ thống sẽ thực hiện phân công việc cho các nhân viên giải quyết đã chọn.

đã chọn đầy đủ thông tin, Tác nhân chọn phân giải quyết.

Nếu không có sai sót thì hệ thống thông báo đã phân công việc thành công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.6. Ca sử dụng Chỉ đạo giải quyết công việc

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc.

+ Mục đích: Cho phép tác nhân nhập thêm các chỉ đạo thực hiện công việc (công việc do chính Tác nhân tạo hoặc do Tác nhân phân giải quyết xuống

cấp dưới).

– Tác nhân chọn công việc và nhập nội dung chỉ đạo giải quyết công việc. Sau

+ Mô tả khái quát:

– Hệ thống sẽ thực hiện cập nhật thông tin chỉ đạo thực hiện công việc đã chọn. Nếu không có sai sót thì hệ thống thông báo đã cập nhật thông tin chỉ đạo thành công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

khi đã nhập nội dung chỉ đạo, Tác nhân chọn chỉ đạo giải quyết.

3.3.7.2.7. Ca sử dụng sửa Chỉ đạo giải quyết công việc

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc.

- 40 -

+ Mục đích: Cho phép tác nhân sửa các chỉ đạo thực hiện công việc (công việc do chính Tác nhân tạo hoặc do Tác nhân phân giải quyết xuống cấp dưới).

– Tác nhân chọn công việc và thay đổi nội dung chỉ đạo. Sau khi đã thay đổi

+ Mô tả khái quát:

– Hệ thống sẽ thực hiện cập nhật thông tin chỉ đạo thực hiện công việc đã chọn.

nội dung chỉ đạo, Tác nhân chọn cập nhật thông tin chỉ đạo.

Nếu không có sai sót thì hệ thống thông báo đã cập nhật thông tin chỉ đạo

thành công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.8. Ca sử dụng Giải quyết công việc

+ Tác nhân: Nhân viên, Chủ trì công việc

+ Mục đích: Cho phép tác nhân cập nhật thông tin thực hiện giải quyết công việc

(các công việc được phân giải quyết).

+ Mô tả khái quát:

- Tác nhân chọn công việc và nhập nội dung giải quyết công việc. Sau khi đã

nhập các thông tin nội dung giải quyết, Tác nhân chọn giải quyết.

- Hệ thống sẽ thực hiện cập nhật thông tin giải quyết công việc đã chọn. Nếu không có sai sót thì hệ thống thông báo đã cập nhật thông tin giải quyết thành

công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.9. Ca sử dụng Báo cáo thống kê

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc, Nhân

viên.

+ Mục đích: Cho phép tác nhân xem được toàn bộ thông tin về tình hình chỉ đạo và giải quyết công việc được phân giải quyết, phân chủ trì hoặc các công việc do mình phân cho cấp dưới giải quyết.

– Thống kê thông tin công việc theo đầu mục công việc

– Thống kê công việc theo thời gian

– Thống kê công việc theo trạng thái giải quyết

– Thống kê công việc theo Nhân viên giải quyết

+ Mô tả khái quát: Tác nhân chọn các tiêu chí để thống kê bao gồm:

- 41 -

3.3.7.2.10. Ca sử dụng Xem và tra cứu công việc

+ Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc, Nhân

viên.

+ Mục đích: Cho phép tác nhân xem, tra cứu các thông tin về nội dung công việc,

tình hình chỉ đạo và giải quyết công việc.

+ Mô tả khái quát: Tác nhân chọn các tiêu chí để xem, tra cứu bao gồm: Tên đầu mục công việc, Nội dung công việc, Nhân viên giải quyết, Ngày tháng

phân công việc,... Hệ thống căn cứ vào quyền hạn của Tác nhân và các điều kiện tra cứu để hiển thị thông tin các công việc thoả mãn yêu

cầu tìm kiếm.

3.3.7.2.11. Ca sử dụng Cập nhật danh mục từ điển

+ Tác nhân: Quản trị hệ thống

+ Mục đích: Cho phép tác nhân cập nhật các thông tin từ điển dùng chung trong hệ

thống.

– Tác nhân chọn danh mục từ điển cần cập nhật, nhập thông tin và chọn cập

+ Mô tả khái quát:

– Hệ thống sẽ thực hiện cập nhật thông tin từ điển. Nếu không có sai sót thì hệ

nhật.

thống thông báo đã cập nhật thông tin giải quyết thành công. Nếu có sai sót

hệ thống sẽ thông báo lỗi.

3.3.7.2.12. Ca sử dụng Cập nhật người dùng

+ Tác nhân: Quản trị hệ thống

+ Mục đích: Cho phép tác nhân cập nhật các thông tin về người dùng vào ra hệ

thống.

– Tác nhân chọn chức năng Cập nhật người dùng.

– Tác nhân nhập các thông tin liên quan về người dùng và chọn thao tác cần

+ Mô tả khái quát:

cập nhật thông tin: thêm mới/sửa/xoá.

- 42 -

– Hệ thống sẽ thực hiện cập nhật thông tin người dùng. Nếu không có sai sót thì

hệ thống thông báo đã cập nhật thông tin người dùng thành công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.13. Ca sử dụng Cập nhật nhóm quyền

+ Tác nhân: Quản trị hệ thống

+ Mục đích: Cho phép tác nhân cập nhật các nhóm quyền thao tác với hệ thống.

– Tác nhân chọn chức năng Cập nhật nhóm quyền.

– Định nghĩa và thêm mới tên các nhóm quyền.

– Gắn mỗi nhóm quyền với một số các chức năng của hệ thống.

– Hệ thống sẽ thực hiện cập nhật thông tin về nhóm quyền. Nếu không có sai

+ Mô tả khái quát:

sót thì hệ thống thông báo đã cập nhật thông tin nhóm quyền thành công. Nếu

có sai sót hệ thống sẽ thông báo lỗi.

3.3.7.2.14. Ca sử dụng Phân quyền truy nhập

+ Tác nhân: Quản trị hệ thống

+ Mục đích: Cho phép tác nhân phân quyền thao tác với các chức năng của hệ

thống.

– Tác nhân chọn chức năng Phân quyền truy nhập. Chọn người dùng cần phân

+ Mô tả khái quát:

quyền truy nhập và chọn các nhóm quyền cho phép thao tác với hệ thống của

– Hệ thống sẽ thực hiện cập nhật thông tin phân quyền. Nếu không có sai sót thì

người dùng đã chọn, sau đó chọn phân quyền.

hệ thống thông báo đã cập nhật thông tin phân quyền thành công. Nếu có sai sót hệ thống sẽ thông báo lỗi.

3.3.8. Mô hình ca sử dụng tổng thể

Hệ thống được chia thành các gói sau:

3.3.8.1. Gói ca sử dụng Đăng nhập hệ thống

- 43 -

Hình 3.8: Gói ca sử dụng Đăng nhập hệ thống

3.3.8.2. Gói ca sử dụng Quản lý giải quyết công việc

- 44 -

Hình 3.9: Gói ca sử dụng Quản lý giải quyết công việc

3.3.8.3. Gói ca sử dụng Quản trị tiện ích

Hình 3.10: Gói ca sử dụng Quản trị tiện ích

- 45 -

3.3.8.4. Gói ca sử dụng Báo cáo thống kê

Hình 3.11: Gói ca sử dụng Báo cáo thống kê

3.3.8.5. Gói ca sử dụng Quản trị phân quyền người dùng

- 46 -

Hình 3.12: Gói ca sử dụng Quản trị phân quyền người dùng

3.3.9. Mô tả chi tiết các ca sử dụng

3.3.9.1. Gói ca sử dụng Đăng nhập hệ thống

a. Ca sử dụng Đăng nhập hệ thống

Tiền điều kiện: Tác nhân phải có tài khoản người dùng trên mạng LAN.

Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Nhân viên, Chủ trì

công việc, Quản trị hệ thống, Hệ thống chứng thực người dùng.

Mục tiêu: Cho phép tác nhân đăng nhập hệ thống nhờ định danh, mật khẩu.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

2. Hiện màn hình Welcom, hoặc màn hình thao tác trên máy

1. Tác nhân truy cập vào chương trình quản lý công việc qua mạng Lan, hoặc hệ thống cài đặt sẵn trên máy

3. Chọn chức năng 4. Hiển thị form đăng nhập.

- 47 -

đăng nhập.

+ Bảng Nhân viên 5. Nhập định danh, 6. Kiểm tra, xác thực tài khoản

+ Bảng Phân quyền

mật khẩu và chọn Đăng nhập hợp lệ. Hiện thông báo phản hồi về kết quả đăng nhập. Hiện + Bảng Nhóm quyền thực đơn mà người dùng có + Bảng Chức năng quyền thao tác.

– Bước 6: Nếu không nhập đầy đủ định danh và mật khẩu, hệ thống hiện thông

Ngoại lệ:

báo yêu cầu nhập thông tin còn thiếu và chuyển con trỏ vào mục thông tin còn

thiếu. Sau khi kiểm tra, nếu định đanh và mật khẩu không hợp lệ hệ thống sẽ thông báo “Tài khoản đăng nhập không hợp lệ” và hiện form đăng nhập để

tác nhân nhập lại thông tin. Nếu sau ba lần đăng nhập vẫn không hợp lệ, hệ

thống không cho tác truy cập với tên đăng nhập này.

Hậu điệu kiện: Người dùng Đăng nhập vào hệ thống và chọn các chức năng theo

quyền sử dụng của mình(hiện lên trên màn hình).

b. Ca sử dụng Đổi mật khẩu

Tiền điều kiện: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Nhân viên, Chủ

trì công việc, Quản trị hệ thống đăng nhập hệ thống thành công.

Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Nhân viên, Chủ trì

công việc, Quản trị hệ thống, Hệ thống chứng thực người dùng.

Mục tiêu: Cho phép tác nhân đổi mật khẩu của tài khoản đăng nhập hệ thống.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

1. Chọn chức năng 2. Hiện form đổi mật khẩu

đổi mật khẩu

+ Bảng TaiKhoan 3. Nhập

tên định danh, mật khẩu cũ, mật khẩu mới và chọn Ghi lại. 4. Kiểm tra thông tin và ghi lại mật khẩu mới. Hiện thông báo phản hồi về kết quả đổi mật khẩu.

Ngoại lệ:

- 48 -

– Bước 4: Nếu thông tin không hợp lệ (Không nhập định danh hoặc mật khẩu,

sai mật khẩu cũ, không nhập mật khẩu mới, giá trị mật khẩu mới và giá trị xác nhận lại mật khẩu mới không trùng nhau) hệ thống hiện thông báo không đổi

được mật khẩu.

Hậu điệu kiện: Mật khẩu của người dùng đã được thay đổi theo giá trị mật khẩu

mới còn mật khẩu cũ không còn giá trị.

3.3.9.2.Gói ca sử dụng Quản lý giải quyết công việc

a. Ca sử dụng Cập nhật công việc

Tiền điều kiện: Ban giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì giải

quyết công việc đăng nhập hệ thống thành công.

Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc.

Mục tiêu: Cho phép người dùng tạo ra các đầu mục công việc mới, sửa đầu

mục công việc, xóa đầu mục công việc, xem đầu mục công việc.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Phòng ban 2. Hiện form cập nhật thông tin

1. Chọn chức năng cập nhật công việc. công việc. + Bảng Nhân viên

+ Bảng Loại công việc

+ Bảng Công việc

+ Bảng Tính cấp thiết

+ Bảng Công việc 3. Chọn chức năng

nhập mới thông tin 4. Kiểm tra và ghi lại thông tin công việc mới. Hiện thông

công việc. Chọn báo kết quả thêm công việc

Ghi lại. mới và bổ sung tên công việc

mới lên danh sách công việc.

5. Chọn Kết thúc

6. Đóng form cập nhật thông tin công việc và trở về giao diện chính.

Ngoại lệ:

- Bước 3a: Chọn công việc cần sửa, thông tin công việc cần sửa hiện lên các trường thông tin, sửa mới thông tin công việc. Nếu thông tin không hợp lệ,

- 49 -

sửa lại cho đúng. Bấm cập nhật thông tin công việc, kết quả sẽ được lưu lại

vào database với những thông tin công việc mới. Hiện thông báo kết quả cập nhật thành công. Làm tiếp bước 5.

- Bước 3b: Chọn công việc cần xóa. Bấm xóa công việc, thông tin công việc đó sẽ được xóa khỏi database. Hiện thông báo kết quả xóa thành công. Làm tiếp

bước 5.

- Bước 3c: Chọn công việc cần xem. Thông tin công việc hiện lên. Làm tiếp

– Bước 4: Nếu các thông tin không hợp lệ (không có loại công việc, nội dung

bước 5.

công việc, tên công việc) thì hệ thống hiện thông báo yêu cầu nhập lại thông

tin. Nếu không ghi được vào cơ sở dữ liệu hệ thống hiện thông báo việc tạo

– Bước 5. Nếu muốn nhập tiếp công việc mới quay lại bước 3

công việc mới không thành công.

Hậu điệu kiện:

- Thông tin về công việc mới được lưu trữ trong cơ sở dữ liệu. - Thông tin công việc được cập nhật vào trong cơ sở dữ liệu. - Thông tin công việc được xóa khỏi cơ sở dữ liệu.

– Loại công việc chọn từ danh sách Loại công việc.

– Tên đầu mục các công việc chọn từ danh sách tên các công việc có trạng thái

Yêu cầu đặc biệt:

– Nếu danh sách loại công việc rỗng, phải có nút liên kết tới phần cập nhật mới

đang hoặc chưa giải quyết xong thuộc lớp cha của nó.

– Công việc được sửa hay được xóa phải là công việc do người đó tạo ra.

loại công việc.

b. Ca sử dụng Giao việc

Tiền điều kiện: Ban giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Người chủ trì

giải quyết công việc đăng nhập hệ thống.

Tác nhân: giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc.

Mục tiêu: Cho phép tác nhân phân công việc (công việc do chính tác nhân tạo

hoặc do cấp trên giao xuống) cho các nhân viên cấp dưới giải quyết.

Luồng sự kiện:

- 50 -

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Công việc 1. Chọn chức năng 2. Hiện danh sách các công

Giao việc. việc đang và chưa giải + Bảng Nhân viên

quyết của người đó tạo ra. + Bảng Phòng ban

+ Bảng Chức danh quản lý

+ Bảng Giao việc

+ Bảng Nội dung giao việc

+ Bảng Công việc 3. Chọn công việc cần

giao. 4. Hiển thị các công việc do người đó tạo ra mà chưa

giao.

+ Bảng Quan hệ Phòng ban 5. Chọn người được 6. Hiển thị danh sách những

giao công việc đó nhân viên cấp ngay dưới + Bảng Quan hệ Nhân viên

người giao việc này. + Bảng Chức danh quản lý

+ Bảng Giao việc

+ Bảng nội dung giao việc

+ Bảng Quan hệ Phòng ban

7. Chọn các nhân viên tổ/nhóm,chức và 8. Viết hướng dẫn chỉ đạo thực hiện, thời gian bắt + Bảng Quan hệ Nhân viên

danh quản lý công đầu, thời gian yêu cầu kết + Bảng Chức danh quản lý việc và chọn Giao thúc. Kiểm tra thông tin và + Bảng Giao việc việc. ghi lại. Hiển thị lại danh + Bảng nội dung giao việc sách các nhân viên cùng

với chức danh giải quyết

công việc đã được phân.

9. Chọn Kết thúc 10. Đóng form Giao việc và

trở về giao diện chính.

– Bước 2: Nếu không có công việc nào hệ thống sẽ thông báo: “Không có công

Ngoại lệ:

– Bước 9. Nếu muốn nhập tiếp công việc mới quay lại bước 3

việc nào cần giao”.

Hậu điệu kiện: Thông tin giao giải quyết công việc được ghi vào cơ sở dữ liệu.

- 51 -

Yêu cầu đặc biệt: Tác nhân phải là người tạo ra công việc hoặc là người chủ trì giải quyết công việc. Tác nhân chỉ được phân cho cấp dưới hoặc những người cùng phối hợp giải quyết công việc.

c. Ca sử dụng Giải quyết công việc

Tiền điều kiện: Nhân viên đăng nhập hệ thống thành công

Tác nhân: Nhân viên.

Mục tiêu: Cho phép tác nhân cập nhật thông tin giải quyết công việc (các công

việc được phân giải quyết).

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Công việc 1. Chọn chức năng 2. Hiện danh sách các công việc

giải quyết công đang và chưa giải quyết của + Bảng Nhân viên

việc cá nhân. cá nhân. + Bảng Phòng ban

+ Bảng Giao việc

+ Bảng Nội dung giao việc

3. Chọn công việc cần

giải quyết. 4. Hiện thông tin của công việc. + Bảng Công việc + Bảng Nhân viên

+ Bảng Phòng ban

+ Bảng Giao việc

+ Bảng Nội dung giao việc

+ Bảng Công việc

5. Nhập nội dung giải quyết công việc, 6. Kiểm tra thông tin và ghi lại. Hiển thị lại thông tin giải + Bảng Giao việc

trạng thái công quyết công việc lên màn + Bảng Nhân viên hình. + Bảng Nội dung giao việc việc và chọn Giải quyết.

7. Chọn Kết thúc

8. Đóng form giải quyết công việc và trở về giao diện chính.

– Bước 2: Nếu không có công việc nào hệ thống sẽ thông báo: “Không có công

Ngoại lệ:

việc nào cần giải quyết”.

- 52 -

– Bưới 6: Nếu nội dung giải quyết rỗng thì hệ thống thông báo lỗi và yêu cầu

– Bước 7. Nếu muốn nhập tiếp nội dung giải quyết của công việc khác quay lại

nhập lại thông tin trước khi xác nhận Giải quyết.

bước 3.

Hậu điệu kiện: Thông tin giải quyết công việc được ghi vào cơ sở dữ liệu.

Yêu cầu đặc biệt: Tác nhân chỉ được nhập và sửa nội dung giải quyết công việc của các công việc đang và chưa giải quyết xong. Với các công việc có mức độ hoàn thành 100% hoặc đã kết thúc thì tác nhân không thể nhập hoặc sửa nội dung giải quyết công việc được.

3.3.9.3. Gói ca sử dụng Quản trị tiện ích

a. Ca sử dụng Quản lý và cập nhật thông tin phòng ban

Tiền điều kiện: Quản trị hệ thống đăng nhập hệ thống thành công.

Tác nhân: Quản trị hệ thống

Mục tiêu: Cho phép tác nhân cập nhật các thông tin danh mục Phòng ban.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

1. Chọn chức năng 2. Hiển thị danh sách phòng ban. + Bảng Phòng ban

cập nhật danh mục

phòng ban.

+ Bảng Phòng ban 3. Chọn một phòng 4. Hiện thông tin chi tiết của phòng

ban. ban.

+ Bảng Phòng ban 5. Chỉnh sửa thông 6. Kiểm tra thông tin và ghi lại.

tin và chọn Ghi lại. Hiển thị thông báo phản hồi.

Hiển thị lại danh sách phòng ban.

7. Chọn Thêm mới. 8. Hiển thị form cập nhật thông tin

phòng ban.

+ Bảng Phòng ban

9. Nhập các thông tin yêu cầu và chọn Ghi lại. 10. Kiểm tra thông tin và ghi lại. Hiển thị thông báo phản hồi. Hiển thị lại danh sách phòng

- 53 -

ban.

11. Chọn một phòng 12. Hiển thị thông báo xác nhận có

ban và chọn Xoá. chắc chắn xoá không ?

+ Bảng Phòng ban 13. Đồng ý xoá.

14. Xoá phòng ban đã chọn. Hiển thị thông báo phản hồi. Hiển thị lại danh sách phòng ban.

15. Chọn Kết thúc.

16. Đóng form cập nhật danh mục Phòng ban và trở về trang chính.

– Bước 6,10: Nếu các thông tin phòng ban không hợp lệ thì hệ thống sẽ thông

Ngoại lệ:

báo và yêu cầu nhập lại. Nếu Tên phòng hoặc Mã phòng ban bị trùng hệ

– Bước 13: Nếu không đồng ý xoá thì hệ thống quay lại form hiển thị danh sách

thống hiện thông báo và yêu cầu nhập Tên và Mã phòng ban khác.

– Bước 14: Nếu phòng này (hoặc tổ/nhân viên thuộc phòng này) đã tham gia

phòng ban.

vào hồ sơ công việc thì không xoá được công việc đó. Nếu không xoá được

– Bước 15. Nếu muốn tạo tiếp phòng ban mới quay lại bước 7. Nếu muốn sửa phòng ban khác quay lại bước 5. Nếu muốn xoá một phòng ban khác quay lại

hệ thống sẽ thông báo.

bước 11.

Hậu điệu kiện: Thông tin về phòng ban được cập nhật trong cơ sở dữ liệu.

b. Ca sử dụng Quản lý và cập nhật thông tin nhân viên

Tiền điều kiện: Quản trị hệ thống đăng nhập hệ thống thành công.

Tác nhân: Quản trị hệ thống

Mục tiêu: Cho phép tác nhân cập nhật các thông tin danh mục Nhân viên.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Phòng ban 1. Chọn chức năng 2. Hiển thị danh sách nhân viên

cập nhật danh mục theo từng phòng ban. + Bảng Nhân viên

nhân viên.

- 54 -

+ Bảng Nhân viên 3. Chọn một nhân 4. Hiển thị thông tin chi tiết của

viên. nhân viên.

+ Bảng Nhân viên

5. Chỉnh sửa thông tin và chọn Ghi lại. 6. Kiểm tra thông tin và ghi lại. Hiện thông báo phản hồi. Hiển

thị lại danh sách nhân viên.

7. Chọn Thêm mới 8. Hiển thị form cập nhật thông

tin nhân viên.

+ Bảng Nhân viên

9. Nhập các thông tin yêu cầu và chọn Ghi lại. 10. Kiểm tra thông tin và ghi lại. Hiển thị thông báo phản hồi. Hiển thị lại danh sách nhân

viên.

11. Chọn một nhân 12. Hiển thị thông báo xác nhận

viên và chọn Xoá. có chắc chắn xoá không ?

+ Bảng Nhân viên 13. Đồng ý xoá

14. Xoá nhân viên đã chọn. Hiển thị thông báo phản hồi. Hiển

thị lại danh sách nhân viên.

15. Chọn Kết thúc. 16. Đóng form cập nhật danh mục

Nhân viên và trở về trang

chính.

– Bước 6,10: Nếu các thông tin nhân viên không hợp lệ thì hệ thống sẽ thông

Ngoại lệ:

– Bước 13: Nếu không đồng ý xoá thì hệ thống quay lại form hiển thị danh sách

báo và yêu cầu nhập lại.

– Bước 14: Nếu nhân viên này đã tham gia vào một hồ sơ công việc thì không

nhân viên.

– Bước 15. Nếu muốn tạo tiếp nhân viên mới quay lại bước 7. Nếu muốn sửa nhân viên khác quay lại bước 5. Nếu muốn xoá một nhân viên khác quay lại bước 11.

xoá được. Nếu không xoá được hệ thống sẽ thông báo.

Hậu điệu kiện: Thông tin về nhân viên được cập nhật trong cơ sở dữ liệu.

- 55 -

c. Ca sử dụng Cập nhật danh mục loại công việc

Tiền điều kiện: Quản trị hệ thống đăng nhập hệ thống thành công.

Tác nhân: Quản trị hệ thống

Mục tiêu: Cho phép tác nhân cập nhật các thông tin danh mục Loại công việc

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Loại công việc 2. Hiển thị danh sách danh mục

1. Chọn chức năng cập nhật danh mục loại công việc.

loại công việc.

+ Bảng Loại công việc 3. Chọn một loại 4. Hiện thông tin chi tiết của

công việc. danh mục loại công việc.

+ Bảng Loại công việc

5. Chỉnh sửa thông tin và chọn Ghi lại 6. Kiểm tra thông tin và ghi lại. Hiện thông báo phản hồi. Hiển

thị lại danh sách danh mục loại

công việc.

7. Chọn Thêm mới 8. Hiển thị form cập nhật danh

mục loại công việc.

+ Bảng Loại công việc

9. Nhập các thông tin yêu cầu và chọn 10. Kiểm tra thông tin và ghi lại. Hiển thị thông báo phản hồi.

Ghi lại. Hiển thị lại danh sách danh

mục loại công việc.

11. Chọn một loại 12. Hiển thị thông báo xác nhận

công việc và chọn có chắc chắn xoá không ?

Xoá.

+ Bảng Loại công việc 13. Đồng ý xoá

14. Xoá loại công việc đã chọn. Hiển thị thông báo phản hồi. Hiển thị lại danh sách danh mục loại công việc.

15. Chọn Kết thúc.

16. Đóng form cập nhật danh mục Loại công việc và trở về trang

- 56 -

chính.

– Bước 6,10: Nếu các thông tin loại công việc không hợp lệ thì hệ thống sẽ

Ngoại lệ:

– Bước 13: Nếu không đồng ý xoá thì hệ thống quay lại form hiển thị danh sách

thông báo và yêu cầu nhập lại.

– Bước 14: Nếu loại công việc này đã có công việc được tạo thì không thể xoá

danh mục loại công việc.

– Bước 15. Nếu muốn tạo tiếp loại công việc mới quay lại bước 7. Nếu muốn

được. Nếu không xoá được hệ thống sẽ thông báo.

sửa loại công việc khác quay lại bước 5. Nếu muốn xoá một loại công việc

khác quay lại bước 11.

Hậu điệu kiện: Thông tin về loại công việc được cập nhật trong cơ sở dữ liệu.

3.3.9.4. Gói ca sử dụng Báo cáo thống kê

a. Ca sử dụng Tra cứu thông tin công việc

Tiền điều kiện: Ban giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công

việc, Nhân viên đăng nhập hệ thống thành công.

Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc,

Nhân viên.

Mục tiêu: Cho phép tác nhân tra cứu công việc theo các tiêu chí khác nhau.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Loại công việc 1. Chọn chức năng tra 2. Hiện form nhập các tiêu chí

cứu công việc. tra cứu công việc. + Bảng Phòng ban

+ Bảng Nhân viên

+ Bảng Loại công việc

3. Nhập các thông số và chọn Tra cứu. 4. Kiểm tra thông số và Tra cứu thông tin. Hiển thị danh sách + Bảng Phòng ban

+ Bảng Nhân viên các công việc thoả mãn điều kiện tra cứu. + Bảng Công việc

+ Bảng Quản lý công việc

- 57 -

+ Bảng Chỉ đạo

+ Bảng Giải quyết

5. Chọn Kết thúc. 6. Đóng form tra cứu công việc

và trở về trang chính.

– Bước 4: Nếu các thông số không hợp lệ (ngày nhập vào không hợp lệ, từ ngày

Ngoại lệ:

– Bước 5. Nếu muốn tra cứu công việc theo các tiêu chí, thông số khác quay lại

lớn hơn đến ngày,...) thì hệ thống sẽ thông báo và yêu cầu nhập lại.

bước 3.

Hậu điệu kiện: Không có

– Tuỳ theo chức danh quản lý của Tác nhân để lựa chọn không gian và phạm vi

Yêu cầu đặc biệt:

tìm kiếm thông tin (chỉ tra cứu và đưa ra các công việc mà Tác nhân tạo ra,

hoặc Tác nhân là người chủ trì giải quyết công việc, hoặc tác nhân là người

trực tiếp giải quyết công việc, hoặc các công việc do cấp dưới của Tác nhân

tạo ra, các công việc do cấp dưới của Tác nhân chủ trì hoặc tham gia giải

– Với mỗi công việc trong danh sách các công việc tìm được phải có liên kết tới

quyết).

– Phải in được danh sách công việc tìm thấy.

– Phải xem được danh sách trước khi in.

biểu mẫu hiển thị thông tin chi tiết công việc tương ứng.

b. Ca sử dụng Tổng hợp báo cáo công việc

Tiền điều kiện: Ban giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công

việc, Nhân viên đăng nhập hệ thống thành công.

Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc,

Nhân viên.

Mục tiêu: Cho phép tác nhân tổng hợp và xem các báo cáo công việc.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

- 58 -

+ Bảng Loại công việc 1. Chọn chức năng 2. Hiện form nhập các tiêu chí

tổng hợp báo cáo để báo cáo. + Bảng Phòng ban

công việc. + Bảng Nhân viên

+ Bảng Loại công việc

3. Nhập các thông số báo cáo và chọn 4. Kiểm tra thông số và thực hiện tổng hợp số liệu theo + Bảng Phòng ban

Xem báo cáo. các thông số. Hiển thị số liệu + Bảng Nhân viên thoã mãn điều kiện lên báo + Bảng Công việc cáo. + Bảng Quản lý công việc

+ Bảng Chỉ đạo

+ Bảng Giải quyết

5. Chọn Kết thúc.

6. Đóng form báo cáo công việc và trở về trang chính.

– Bước 4: Nếu các thông số không hợp lệ (ngày nhập vào không hợp lệ, từ ngày

Ngoại lệ:

– Bước 5. Nếu muốn xem báo cáo với các tiêu chí khác quay lại bước 3.

lớn hơn đến ngày,...) thì hệ thống sẽ thông báo và yêu cầu nhập lại.

Hậu điệu kiện: Không có

– Tuỳ theo chức danh quản lý của Tác nhân để lựa chọn không gian và phạm vi

Yêu cầu đặc biệt:

báo cáo thống kê (báo cáo thống kê chỉ đưa ra các công việc mà Tác nhân tạo

ra, hoặc Tác nhân là người chủ trì giải quyết công việc, hoặc tác nhân là

người trực tiếp giải quyết công việc, hoặc các công việc do cấp dưới của Tác

nhân tạo ra, các công việc do cấp dưới của Tác nhân chủ trì hoặc tham gia

– Cuối báo cáo phải có tổng số công việc, số công việc đã giải quyết, đang giải

giải quyết).

– Phải in được báo cáo thống kê.

– Phải xem được báo cáo trước khi in.

– Phải kết xuất nội dung báo cáo ra các định dạng khác (Word, Excell,...)

quyết, chưa giải quyết, chưa phân giải quyết.

c. Ca sử dụng Vẽ biểu đồ Gantt

- 59 -

Tiền điều kiện: Ban giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì

công việc đăng nhập hệ thống thành công.

Tác nhân: Giám đốc, Thư ký giám đốc, Lãnh đạo phòng, Chủ trì công việc

Mục tiêu: Cho phép tác nhân vẽ biểu đồ phân cấp theo mỗi hồ sơ công việc trên

máy tính.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Loại công việc 1. Chọn chức năng vẽ

biểu đồ Gantt. 2. Hiện biểu mẫu nhập các tiêu chí truy vấn số liệu để vẽ + Bảng Phòng ban

biểu đồ. + Bảng Nhân viên

+ Bảng Phòng ban

3. Nhập các thông số, tiêu chí để truy vấn 4. Kiểm tra thông số và truy vấn thông tin. Hiển thị danh + Bảng Nhân viên

số liệu vẽ biểu đồ. sách hồ sơ công việc thoả + Bảng Công việc mãn điều kiện. + Bảng Quản lý công việc

+ Bảng Chức danh quản lý

+ Bảng Công việc 5. Chọn một hồ sơ 6. Vẽ biểu đồ phân cấp của hồ

công việc và chọn sơ công việc được chọn. + Bảng Phòng ban

Vẽ biểu đồ + Bảng Nhân viên

+ Bảng Quản lý công việc

+ Bảng Chức danh quản lý

7. Chọn Kết thúc. 8. Đóng form vẽ biểu đồ và trở

về trang chính.

– Bước 4: Nếu các thông số không hợp lệ (ngày nhập vào không hợp lệ, từ ngày

Ngoại lệ:

– Bước 7. Nếu muốn vẽ biểu đồ phân cấp của hồ sơ công việc khác quay lại bước 5. Nếu muốn vẽ biểu đồ của công việc khác không có trong danh sách hồ sơ công việc quay lại bước 3 để thay đổi thông số truy vấn số liệu vẽ biểu đồ.

lớn hơn đến ngày,...) thì hệ thống sẽ thông báo và yêu cầu nhập lại.

Hậu điệu kiện: Không có

- 60 -

Yêu cầu đặc biệt: Tuỳ theo chức danh quản lý của Tác nhân để lựa chọn không gian và phạm vi truy vấn số liệu vẽ biểu đồ (kết quả truy vấn số liệu vẽ biểu đồ chỉ đưa ra các công việc mà Tác nhân tạo ra, hoặc Tác nhân là người chủ trì giải quyết công việc, hoặc tác nhân là người trực tiếp giải quyết công việc, hoặc các công việc do cấp dưới của Tác nhân tạo ra, các công việc do cấp dưới của Tác nhân chủ trì hoặc tham gia giải quyết).

3.3.9.5. Gói ca sử dụng Quản trị phân quyền người dùng

a. Ca sử dụng Quản lý và cập nhật nhóm quyền

Tiền điều kiện: Quản trị hệ thống đăng nhập hệ thống thành công.

Tác nhân: Quản trị hệ thống

Mục tiêu: Cho phép tác nhân cập nhật thông tin danh mục nhóm quyền.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

2. Hiển thị danh sách các nhóm quyền. + Bảng Nhóm quyền

1. Chọn chức năng cập danh mục nhật

nhóm quyền.

3. Chọn một nhóm 4. Hiện thông tin chi tiết nhóm quyền + Bảng Nhóm quyền

quyền. đã chọn. + Bảng Chức năng

5. Chỉnh sửa thông tin + Bảng Nhóm quyền

và chọn Ghi lại 6. Kiểm tra thông tin và ghi lại. Hiện thông báo phản hồi. Hiển thị lại

danh sách nhóm quyền.

7. Chọn Thêm mới 8. Hiển thị form cập nhật nhóm quyền. + Bảng Nhóm quyền

+ Bảng Chức năng

+ Bảng Nhóm quyền

9. Nhập các thông tin yêu cầu và chọn Ghi lại. 10. Kiểm tra tính hợp lệ của các thông tin. Hiển thị thông báo phản hồi. Hiển thị lại danh sách nhóm quyền.

11. Chọn một nhóm 12. Hiển thị thông báo xác nhận có

quyền và chọn Xoá. chắc chắn xoá không ?

- 61 -

+ Bảng Nhóm quyền 13. Đồng ý xoá 14. Xoá nhóm quyền đã chọn. Hiển

thị thông báo phản hồi. Hiển thị lại + Bảng Chức năng

danh sách nhóm quyền.

15. Chọn Kết thúc. 16. Đóng form cập nhật nhóm quyền

và trở về trang chính.

– Bước 6,10: Nếu các thông tin không hợp lệ thì hệ thống sẽ thông báo và yêu

Ngoại lệ:

– Bước 13: Nếu không đồng ý xoá thì hệ thống quay lại form hiển thị danh sách

cầu nhập lại.

– Bước 14: Nếu không xoá được hệ thống sẽ thông báo.

các nhóm quyền.

Hậu điệu kiện: Thông tin về nhóm quyền được cập nhật trong cơ sở dữ liệu.

b. Ca sử dụng Phân quyền sử dụng các chức năng

Tiền điều kiện: Quản trị hệ thống đăng nhập hệ thống thành công.

Tác nhân: Quản trị hệ thống

Mục tiêu: Cho phép tác nhân cập nhật thông tin phân quyền người dùng.

Luồng sự kiện:

Hành động tác nhân Phản ứng của hệ thống Dữ liệu liên quan

+ Bảng Phòng ban 1. Chọn chức năng 2. Hiển thị màn hình chọn phòng

Phân quyền. ban, nhân viên. + Bảng Nhân viên

+ Bảng Nhân viên 3. Chọn phòng ban có 4. Hiển thị danh sách các nhân viên

người dùng cần thuộc phòng ban đã chọn.

phân quyền.

+ Bảng Phân quyền

5. Chọn nhân viên cần phân quyền. + Bảng Nhóm quyền

6. Hiển thị danh sách các nhóm quyền mà người dùng đã được cấp và chưa cấp.

7. Chọn các nhóm quyền cần cấp, bỏ 8. Hiển thị thông báo xác nhận có chắc chắn cập nhật lại quyền của

chọn các nhóm người dùng không ?

- 62 -

quyền không cấp

và Chọn Cập nhật phân quyền.

+ Bảng Nhân viên 9. Đồng ý cấp lại 10. Kiểm tra thông tin và ghi lại.

quyền. Hiện thông báo phản hồi. Hiển thị + Bảng Phân quyền

lại danh sách nhóm quyền của

người dùng đã chọn.

11. Chọn Kết thúc. 12. Đóng form cập nhật phân quyền

và trở về trang chính.

– Bước 9: Nếu không đồng ý cấp lại quyền thì hệ thống quay lại form hiển thị

Ngoại lệ:

– Bước 10: Nếu các thông tin không hợp lệ thì hệ thống sẽ thông báo và yêu

danh sách các nhóm quyền của người dùng.

– Bước 11: Nếu muốn thay đổi thông tin phân quyền cho nhân viên khác quay

cầu nhập lại. Nếu không cập nhật được thông tin hệ thống sẽ thông báo.

lại bước 5.

Hậu điệu kiện: Thông tin phân quyền người dùng được cập nhật trong cơ sở dữ

liệu.

3.4. Phân tích các lớp:

3.4.1. Các lớp giao diện hệ thống:

- Lớp FormTaoTaiKhoan: Tạo tài khoản cho một nhân viên, hiển thị thông tin tài khoản của nhân viên, xóa tài khoản nhân viên, sửa thông tin tài khoản nhân viên.

- Lớp FormTaoThongTinNhanVien: Tạo thông tin nhân viên, hiển thị thông

tin nhân viên, xóa thông tin nhân viên, sửa thông tin nhân viên.

- Lớp FormTaoPhongBan: Tạo thông tin phòng ban, hiển thị thông tin phòng

ban, xóa thông tin phòng ban, sửa thông tin phòng ban.

- Lớp FormTaoNhomQuyen: Tạo thông tin nhóm quyền, hiển thị thông tin

nhóm quyền, xóa thông tin nhóm quyền, sửa thông tin nhóm quyền.

- Lớp FormTaoChucDanhQuanLy: Tạo chức vụ cho nhân viên, hiển thị thông tin chức vụ nhân viên, xóa thông tin chức vụ nhân viên, sửa thông tin chức vụ nhân viên.

- 63 -

- Lớp FormPhanQuyenNhanVien: Tạo nhóm quyền cho nhân viên, hiển thị thông tin quyền nhân viên, xóa thông tin quyền nhân viên, sửa thông tin quyền nhân viên.

- Lớp FormPhanQuyenChucNang: Tạo chức năng cho nhóm quyền, hiển thị thông tin chức năng nhóm quyền, xóa thông tin chức năng nhóm quyền, sửa thông tin chức năng nhóm quyền.

- Lớp FormThongTinCongViec: Tạo thông tin công việc, hiển thị thông tin

công việc, xóa thông tin công việc, sửa thông tin công việc.

- Lớp FormGiaoViec: Hiển thị thông tin phân việc và cập nhật lại thông tin

phân công giải quyết công việc.

- Lớp FormGiaoViec và FormNoiDungGiaoViec: Hiển thị giao diện cập nhật nội dung giải quyết công việc, bao gồm các thuộc tính: người giải quyết, ngày

giải quyết, tiến độ thực hiện, nội dung giải quyết.

- Lớp FormDoiMatKhau: Hiển thị giao diện đổi mật khẩu, bao gồm các thuộc

tính: tên truy nhập, mật khẩu cũ, mật khẩu mới.

- Lớp FormDanhSachChucNang: Hiển thị danh sách các chức năng thao tác

với phần mềm, bao gồm các thuộc tính: tên chức năng, mã chức năng.

- - Lớp FormMain: Hiển thị các nhóm chức năng điều khiển.

- Lớp Form1: Có chức năng Login vào hệ thống.

3.4.2. Các lớp thao tác Cơ Sở dữ liệu:

Những lớp này đóng vai tròn tạo và liên kết các kết nối tới Cơ sở dữ liệu đồng

thời thực hiện vai trò thao tác Xen, xem, xóa, sửa ứng với từng bảng trong Cơ sở

dữ liệu. - Lớp SqlChucDanhQuanLy và lớp SqlChucDanhQuanLyBase: Thực hiện

việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng ChucDanhQuanLy.

- Lớp SqlChucNang và lớp SqlChucNangBase: Thực hiện việc Xen, xem,

xóa, sửa với cơ sở dữ liệu ở bảng ChucNang.

- Lớp SqlCongViec và lớp SqlCongViecBase: Thực hiện việc Xen, xem, xóa,

sửa với cơ sở dữ liệu ở bảng CongViec.

- Lớp SqlGiaiQuyet và lớp SqlGiaiQuyetBase: Thực hiện việc Xen, xem,

xóa, sửa với cơ sở dữ liệu ở bảng GiaiQuyet.

- Lớp SqlNhanVien và lớp SqlNhanVienBase: Thực hiện việc Xen, xem, xóa,

sửa với cơ sở dữ liệu ở bảng NhanVien.

- Lớp SqlNhomQuyen và lớp SqlNhomQuyenBase: Thực hiện việc Xen,

xem, xóa, sửa với cơ sở dữ liệu ở bảng NhomQuyen.

- 64 -

- Lớp SqlPhanQuyen và lớp SqlPhanQuyenBase: Thực hiện việc Xen, xem,

xóa, sửa với cơ sở dữ liệu ở bảng PhanQuyen.

- Lớp SqlPhanQuyenChucNang và lớp SqlPhanQuyenChucNangBase: liệu ở bảng Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ

PhanQuyenChucNang.

- Lớp SqlPhongBan và lớp SqlPhongBanBase: Thực hiện việc Xen, xem,

xóa, sửa với cơ sở dữ liệu ở bảng PhongBan.

- Lớp SqlQuanHeNhanVien và lớp SqlQuanHeNhanVienBase: Thực hiện việc

Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng QuanHeNhanVien.

- Lớp SqlQuanHePhongBan và lớp SqlQuanHePhongBanBase: Thực hiện

việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng QuanHePhongBan.

- Lớp SqlNoiDungGiaoViec và lớp SqlNoiDungGiaoViecBase: Thực hiện

việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng NoiDungGiaoViec.

- Lớp SqlTaiKhoan và lớp SqlTaiKhoanBase: Thực hiện việc Xen, xem, xóa,

sửa với cơ sở dữ liệu ở bảng TaiKhoan.

3.4.3. Các lớp dịch vụ(Services):

Những lớp này đóng vai trò điều khiển các thao tác của người dùng với Cơ sở dữ

liệu và điều khiên những thao tác trên các lớp giao diện, nó liên kết với những lớp thao

tác trực tiếp với cơ sở dữ liệu ở trên và sử dụng những tiện ích trên mang lại.

- Lớp ChucDanhQuanLy và ChucDanhQuanLyBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng ChucDanhQuanLy và thao tác với

các lớp giao diện.

- Lớp ChucNangService và ChucNangServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng ChucNang và thao tác với các lớp

giao diện.

- Lớp CongViecService và CongViecServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng CongViec và thao tác với các lớp giao diện. - Lớp GiaoviecService và GiaoViecServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng GiaoViec và thao tác với các lớp giao diện. - Lớp NhanVienService và NhanVienServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng TaiKhoan và thao tác với các lớp giao diện. - Lớp NhomQuyenService và NhomQuyenServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng NhomQuyen và thao tác với các lớp

giao diện.

- 65 -

- Lớp PhanQuyenService và PhanQuyenServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng PhanQuyen và thao tác với các lớp giao diện.

- Lớp PhongBanService và PhongBanServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng PhongBan và thao tác với các lớp

giao diện.

- Lớp QuanHeNhanVienService và QuanHeNhanVienServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng QuanHeNhanVien và

thao tác với các lớp giao diện.

- Lớp QuanHePhongBanService và QuanHePhongBanServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng QuanHePhongBan và

thao tác với các lớp giao diện.

- Lớp NoiDungGiaoViecService và NoiDungGiaoViecServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng NoiDungGiaoViec và

thao tác với các lớp giao diện.

- Lớp TaiKhoanService và TaiKhoanServiceBase: Thực hiện việc Xen, xem, xóa, sửa với cơ sở dữ liệu ở bảng TaiKhoan và thao tác với các lớp giao diện.

3.4.4. Các lớp thực thể:

- Lớp CongViec: Các thuộc tính: Tên công việc, nội dung, ngày tạo, người tạo, ngày giao, người giao, độ khẩn, hạn giải quyết, trạng thái, khối lượng, ngày

kết thúc công việc.

- Lớp NhanVien: Các thuộc tính: Mã nhân viên, tên nhân viên, phòng ban, số

thứ tự hiển thị, địa chỉ, mật khẩu.

- Lớp QuanLyCongViec : Các thuộc tính: Người quản lý, chức danh quản lý,

tên công việc, trạng thái .

Lớp NhomQuyen : Các thuộc tính: Tên nhóm quyền, mã nhóm quyền.

- - Lớp PhongBan : Các thuộc tính: Tên phòng, mã phòng, địa chỉ, số điện

thoại, số thứ tự hiển thị .

- Lớp ChucDanhQuanLy: Các thuộc tính: Tên chức danh, mã chức danh, địa

chỉ, số điện thoại, số thứ tự hiển thị.

- Lớp GiaoViec: Các thuộc tính: ID, Mã giao việc, Mã người giao, Mã nhân

viên được giao, Hướng dẫn thực hiện, Mã tính cấp thiết.

- Lớp NoiDungGiaoViec: Các thuộc tính: ID, Mã giao việc, Mã công việc, Thời gian bắt đầu, Thời gian yêu cầu kết thúc, Trạng thái, Thời gian kết thúc thực tế, Nội dung giải quyết.

- 66 -

- Lớp TinhCapThiet: Các thuộc tính: Mã tính cấp thiết, Tên tính cấp thiết. - Lớp ChucNang: Các thuộc tính: Mã chức năng, Tên chức năng. - Lớp TaiKhoan: Các thuộc tính: Username, Password, Mã Nhân viên. - Lớp QuanHePhongBan: Các thuộc tính: Mã phòng, Mã phòng quản lý - Lớp QuanHeNhanVien: Các thuộc tính: Mã Nhân viên, Mã Nhân viên quản

lý.

- Lớp PhanQuyenChucNang: Các thuộc tính: ID, Mã nhóm quyền, Mã chức

năng.

3.5. Áp dụng các mẫu (patterns) trong việc thiết kế cho các ca sử

dụng:

3.5.1. Gói ca sử dụng Đăng nhập hệ thống

Ca sử dụng Đăng nhập

- Chưa áp dụng mẫu

Biểu đồ lớp thiết kế tham gia thực thi ca sử dụng

Hình 3.13: Biểu đồ lớp thiết kế thực thi ca sử dụng Đăng nhập

- Áp dụng mẫu Singleton

- 67 -

Áp dụng mẫu Singleton vào ca sử dụng đăng nhập cho phép các người dùng chỉ login một lần trên toàn hệ thống. Những giá trị, thông tin của người dùng sẽ được lưu lại trong suốt quá trình chạy chương trình. Bất cứ lúc nào người phát triển đều có thể làm việc với giá trị đó. Mẫu Singleton đảm bảo lớp NhanVien chỉ có thể tạo được một thể hiện duy nhất.

Cấu trúc mẫu Singleton:

Hình 3.14: Biểu đồ lớp thiết kế ca sử dụng Đăng nhập áp dụng mẫu Singleton

Mẫu Singleton là giải pháp thiết kế cho phép lớp NhanVien có thể tự kiểm soát thể hiện của nó. Theo giải pháp này, lớp NhanVien được thêm một thuộc tính tĩnh (static) lưu thể hiện của lớp NhanVien và một phương thức tĩnh để người dùng bất cứ lúc nào đều có thể truy xuất đến thể hiện duy nhất đó.

3.5.2. Gói ca sử dụng Quản lý giải quyết công việc

- 68 -

a. Ca sử dụng Cập nhật công việc

- Chưa áp dụng mẫu

Biểu đồ lớp thiết kế tham gia thực thi ca sử dụng

Hình 3.15: Biểu đồ lớp thiết kế thực thi ca sử dụng Tạo công việc mới

- Áp dụng mẫu Observer vào ca sử dụng tạo công việc mới

Màn hình giao diện chính có các đối tượng biểu diển các trạng thái xử lý công

việc khác nhau. Các đối tượng menu liên kết thể hiện trạng thái cần cập nhật thông tin

khi nào có công việc mới, có bao nhiêu công việc đang giải quyết, chưa giải quyết

hoặc đã giải quyết xong trong tháng, màn hình thể hiện danh sách và nội dung công

việc cần được đồng bộ với cơ sở dữ liệu để luôn thể hiện công việc và nội dung mới

nhất. Khi có một công việc mới được tạo ra, hệ thống phải tự động thông báo và đồng

bộ thông tin, nội dung, trạng thái trên các đối tượng liên quan của tất cả các máy tính trạm đang kết nối vào hệ thống.

Với việc thiết kế tập trung, để thực hiện được việc này, ta phải tạo các dịch vụ chạy ngầm trên máy chủ, theo định kỳ thời gian dịch vụ này sẽ tiến hành đồng bộ dữ liệu công việc mới nhất trên máy chủ và thể hiện lên các máy trạm. Với giải pháp này, khi không có sự thay đổi hay thêm mới công việc thì hệ thống vẫn tiến hành đồng bộ liên tục, điều này làm giảm thiểu dung lượng và tài nguyên của hệ thống để thực hiện

các tác vụ khác.

- 69 -

Giải pháp thiết kế mẫu Observer cho phép giải quyết trường hợp này, khi một đối

tượng CongViec thay đổi nội dung hoặc trạng thái thì tất cả các đối tượng liên quan cũng sẽ được thông báo và câp nhật theo. Việc gửi thông báo và cập nhật nội dung

cho các đối tượng liên quan được kiểm soát và thực hiện hoàn toàn chủ động. Sử

dụng mẫu Observer, ta có thể thêm vào một hoặc nhiều đối tượng cần cập nhật và

đồng bộ dữ liệu mà không cần sửa đổi lại lớp điều khiển.

Cấu trúc mẫu Observer:

Ta gắn các lớp giao diện cần cập nhật và đồng bộ các thay đổi trạng thái công việc cho lớp ConcreteObserver: FormMain, FormThongTinCongViec. Lớp Observer là lớp thuần ảo khai báo giao diện cập nhât trạng thái cho các lớp ConcreteObserver. Lớp CongViec tương ứng với lớp ConcreteSubject.

- 70 -

Hình 3.16. Biểu đồ lớp thiết kế thực thi ca sử dụng Tạo công việc mới

áp dụng mẫu thiết kế Observer

Các đối tượng thuộc các lớp ConcreteObserver khi khởi tạo phải dựa trên một

đối tượng thuộc lớp CongViec để lấy thông tin trạng thái hiện tại của đối tượng CongViec. Các đối tượng ConcreteObserver sẽ được thông báo để lấy thông tin về nội dung và trạng thái của đối tượng CongViec mỗi khi đối tượng lớp CongViec có sự thay đổi về nội dung và trạng thái.

Ở lớp DK_CongViec, tất cả các phương thức thay đổi nội dung và trạng thái của

công việc như TaoMoi_CV(), Sua_CongViec(), Xoa_CongViec(), Xoa_ChiDao(), CapNhat_PhanViec(), Them_ChiDao(), Sua_ChiDao(), ThemND_GiaiQuyet(), SuaND_GiaiQuyet(), XoaND_GiaiQuyet() đều có lời gọi thủ tục Notify() của lớp cha là Subject. Thủ tục Notify() của lớp Subject thực hiện duyệt tất cả các đối tượng ConcreteObserver thừa kế từ lớp Observer lưu trong mảng con trỏ ArrObserver và gọi hàm Update() để thực hiện cập nhật lại thông tin công việc.

- 71 -

Việc áp dụng mẫu thiết kế thực thi cho các ca sử dụng Sửa nội dung công việc, xoá công việc, Chỉ đạo công việc, Giải quyết công việc được biểu diễn tương tự mô hình trên.

b. Ca sử dụng Phân công việc

- Chưa áp dụng mẫu

Biểu đồ lớp thiết kế tham gia thực thi ca sử dụng

Hình 3.19: Biểu đồ lớp thiết kế thực thi ca sử dụng Phân công việc

- Áp dụng mẫu State vào ca sử dụng Phân công việc

Các tác nhân tương tác vận hành hệ thống quản lý hoạt động giao công việc thuộc bốn cấp quản lý đó là: cấp Giám đốc quản lý và thao tác với công việc trong pham vi toàn công ty, cấp Lãnh đạo phòng/tổ/nhóm quản lý và thao tác với công việc trong pham vi tương ứng phòng/tổ/nhóm mà mình lãnh đạo, cấp Chủ trì công việc quản lý và thao tác với công việc trong pham vi hồ sơ công việc liên quan do mình chủ trì, cấp Nhân viên xem và giải quyết các công việc do lãnh đạo hoặc Chủ trì công việc phân.

Việc khởi tạo các đối tượng thuộc các lớp giao diện và trình diễn thông tin liên quan (FormMain (thực đơn chức năng), FormThongTinCongViec, FormGiaoViec, FormBaoCaoThongKe, FormHienThiBaoCao) căn cứ vào cấp lãnh đạo tương ứng của tác nhân để hiển thị các thông tin phù hợp với cấp quản lý của tác nhân. Khi khởi tạo hoặc hiển thị thông tin các lớp giao diện này căn cứ vào cấp lãnh đạo của người dùng đang đăng nhập vào hệ thống để hiện thị thông tin và giao diện tương ứng với cấp

- 72 -

quản lý đó. Việc làm này dẫn đến có rất nhiều thủ tục và module có chức năng giống nhau được lặp trên các lớp giao diện khác nhau. Khi cần thay đổi chức năng của một cấp quản lý hay thêm/bớt một cấp quản lý ta phải sửa đổi lại toàn bộ source code của các lớp giao diện liên quan. Điều này làm chương trình không mềm dẽo lúc triển khai áp dụng thực tế, việc nâng cấp và bảo trì gặp nhiều khó khăn.

Giải pháp thiết kế áp dụng mẫu State khắc phục được các nhược điểm trên. Việc áp dụng mẫu State cho phép các đối tượng có thể tự điều chỉnh hành vi khi trạng thái của nó thay đổi.

Cấu trúc mẫu State:

Áp dụng mẫu thiết kế State vào ca sử dụng Phân công việc, ta gán các lớp giao

diện FormThongTinCongViec, FormGiaoViec tương ứng với lớp Context ở sơ đồ trên. Lớp NhanVien tương ứng với lớp State ở sơ đồ trên. Các lớp StateLDCongTy, StateLDPhong, StateChuTriCV, StateNhanVien được tạo ra tương ứng với các lớp ConcreteStateA, ConcreteStateB, ... Việc cài đặt các ứng xử về thao tác và trình diễn nội dung lên giao diện của các lớp thuộc ConText được thực hiện ở lớp trạng thái ConcreteState tương ứng. Cụ thể phương thức HienThiDS_CongViec của lớp FormThongTinCongViec khi được gọi nó sẽ gọi phương thức tương ứng của đối tượng trạng thái hiện tại thuộc một trong các lớp LanhDaoCongTy, LanhDaoPhong, ChuTriCongViec, NhanVien.

- 73 -

Hình 3.20. Biểu đồ lớp thiết kế thực thi ca sử dụng Phân công việc

áp dụng mẫu thiết kế State

Tương tự, ta áp dụng mẫu State cho các ca sử dụng Tạo công việc, Sửa nội dung công việc, Xoá công việc, Chỉ đạo công việc.

3.5.3. Gói ca sử dụng phục vụ tra cứu, báo cáo, thống kê

Ca sử dụng Tổng hợp báo cáo công việc

- Chưa áp dụng mẫu

Biểu đồ lớp thiết kế tham gia thực thi ca sử dụng

- 74 -

Hình 3.23: Biểu đồ lớp thiết kế thực thi ca sử dụng Báo cáo công việc

- Áp dụng mẫu Composite vào ca sử dụng tổng hợp báo cáo công việc

Mỗi công việc có trạng thái kết thúc và chưa kết thúc, có số lượng ngày, số lượng người giải quyết công việc. Một công việc có thể có nhiều công việc con, do đó để tổng hợp số nhân công, khối lượng thời gian thực hiện xong công việc cần phải duyệt qua từng đối tượng công việc con để tính toán và tổng hợp lên.

Mẫu Composite thực hiện gom các đối tượng vào trong một cấu trúc hình cây để thể hiện được cấu trúc tổng quát của nó. Nó cho phép chúng ta có sự giao tiếp giống nhau với các đối tượng riêng lẻ khác nhau. Ta chia các công việc thành hai loại Công việc đơn và Công việc phức. Công việc đơn là các công việc độc lập, không có công việc con. Công việc phức là các công việc có công việc con. Ta xây dựng thêm hai lớp CongViecDon và lớp CongViecGop, hai lớp này kế thừa từ lớp tổng quát hơn là lớp CongViec. Đối tượng CongViecGop có thể chứa đối tượng CongViecDon và CongViecGop khác.

Ở biểu đồ cộng tác ca sử dụng báo cáo công việc, thủ tục HienThiBC() sẽ lấy danh sách các công việc thoả mãn điều kiện báo cáo và duyệt với mỗi công việc gọi các thủ tục TongHop_NhanCong(), TongHop_TrangThai (), HienThi_ThongTin().Với đối tượng thuộc lớp CongViecDon các hàm trên sẽ thực hiện và trả về một giá trị cụ thể. Với các đối tượng thuộc lớp CongViecGop các hàm trên sẽ duyệt hết tất cả các công việc con của nó, mỗi công việc con lại gọi hàm tương ứng để thực hiện.

- 75 -

Biểu đồ lớp thiết kế áp dụng mẫu Composite vào lớp CongViec để thực hiện báo cáo công việc như sau:

Hình 3.24: Áp dụng mẫu thiết kế Composite vào lớp CongViec

thực hiện tổng hợp, báo cáo, hiển thị thông tin trong ca sử dụng Báo cáo công việc

Tương tự, ta áp dụng mẫu Composite cho các ca sử dụng Sửa nội dung công việc, Xoá công việc,Chỉ đạo công việc, Phân công việc để hiển thị danh sách công việc và thông tin công việc.

3.6. Thiết kế một số lớp

Trong bước này, ta thực hiện thiết kế một số lớp điển hình dựa trên hệ quản trị cơ sở dữ liệu SQLServer 2005.

3.6.1. Lớp giao diện

a. Lớp FormThongTinCongViec

a.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

FormCha Nvarchar(50) Tên form gọi form này

TrangThai Smallint

Trạng thái đang xử lý: 0: đang xem (giá trị mặc định), 1: Đang sửa, 2: Đang xoá, 3: Đang cập nhật bản ghi mới.

a.2. Bảng các phương thức

Tên phương thức Mô tả

- 76 -

GetTrangThai() Lấy thông tin trạng thái

HienThi_TT() Hiển thị thông tin chi tiết của một công việc

HienThiNV_GQ()

Hiển thị danh sách Nhân viên được phân giải quyết công việc.

KiemTra_TT() Kiểm tra tính hợp lệ của các thông tin trên form chi tiết.

Sua_CongViec()

Gọi phương thức Sua_CongViec() của lớp DK_CongViec để sửa nội dung công việc.

KhoiTaoFrmGiaiQuyet() Gọi phương thức KhoiTao() của lớp FrmGiaiQuyetCV

để khởi tạo giao diện nhập thông tin giải quyết công việc.

KhoiTaoFrmPhanViec()

Gọi phương thức KhoiTao() của lớp FrmPhanViec để khởi tạo giao diện nhập thông tin phân công việc.

KhoiTaoFrmChiDao()

Gọi phương thức KhoiTao() của lớp FrmChiDaoCV để khởi tạo giao diện nhập thông tin chỉ đạo công việc.

b. Lớp FormGiaoViec

b.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

FormCha Nvarchar(50) Tên form gọi form này

TrangThai Smallint

Trạng thái đang xử lý: 0: đang xem (giá trị mặc định), 1: Đang sửa, 2: Đang xoá, 3: Đang cập nhật bản ghi mới.

b.2. Bảng các phương thức

Tên phương thức Mô tả

GetTrangThai() Lấy thông tin trạng thái

KhoiTao() Khởi tạo giá trị các thuộc tính.

HienThiDS_ChiDao() Hiển thị danh sách các lần chỉ đạo công việc.

KiemTra_TT()

Kiểm tra tính hợp lệ của các thông tin trên form trước khi cập nhật.

LayDS_ChiDao()

Gọi phương thức LayDS_ChiDao() của lớp DK_CongViec để lấy danh sách các lần chỉ đạo.

Them_ChiDao() Gọi phương thức Them_ChiDao() của lớp DK_CongViec

- 77 -

để thêm chỉ đạo mới

Sua_ChiDao()

Gọi phương thức Sua_ChiDao() của lớp DK_CongViec để sửa nội dung chỉ đạo.

Xoa_ChiDao()

Gọi phương thức Xoa_ChiDao() của lớp DK_CongViec để xoá chỉ đạo.

3.6.2. Lớp điều khiển

Trong bước này, ta thực hiện thiết kế một số lớp điều khiển trên môi trường VisualStudio .NET 2008.

a. Lớp DK_CongViec

a.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

FormGoi String Tên form gọi form này

a.2. Bảng các phương thức

Tên phương thức Mô tả

Set_FormGoi() Đặt giá trị cho thuộc tính FormGoi

TaoMoi_CV()

Gọi phương thức TaoMoi_CV() của lớp CongViec để thêm công việc mới.

LayDS_CongViec()

Gọi phương thức LayDanhSach() của lớp CongViec để lấy danh sách công việc.

LayTT_CongViec()

Gọi phương thức LayThongTin() của lớp CongViec và phương thức GetTen() của lớp LoaiCongViec để lấy thông tin về công việc. Gọi phương thức HienThi_TT() để hiển thị thông tin công việc lên form tương ứng.

LayDS_ChucDanhQL() Gọi phương thức LayDanhSach() của lớp ChucDanhQuanLy

để lấy danh sách chức danh.

LayDS_ChiDao()

Gọi phương thức LayDanhSach() của lớp ChiDao để lấy danh sách các lần chỉ đạo.

Them_ChiDao()

Gọi phương thức Them() của lớp ChiDao để thêm thông tin lần chỉ đạo mới.

Sua_ChiDao() Gọi phương thức Sua() của lớp ChiDao để sửa thông tin chỉ

- 78 -

đạo.

Xoa_ChiDao() Gọi phương thức Xoa() của lớp ChiDao để xoá chỉ đạo.

LayND_GiaiQuyet()

Gọi phương thức GetNoiDungGQ() của lớp GiaiQuyet để lấy nội dung giải quyết công việc.

ThemND_GQ()

Gọi phương thức Them() của lớp GiaiQuyet để thêm nội dung giải quyết mới.

SuaND_GQ()

Gọi phương thức Sua() của lớp GiaiQuyet để sửa nội dung giải quyết.

HienThi_TT()

Gọi phương thức HienThi_TT() của lớp có tên bằng giá trị của thuộc tính FormGoi.

HienThiNV_GQ()

Gọi phương thức LayDS_QuanLyCV() của lớp QuanLyCongViec, phương thức GetTenNhanVien() của lớp NhanVien, phương thức GetTenPhong() của lớp PhongBan. Gọi phương thức HienThiNV_GQ() của lớp FrmTT_CongViec để hiển thị danh sách nhân viên được phân giải quyết công việc.

Sua_CongViec()

Gọi phương thức Sua() của lớp CongViec để sửa thông tin công việc.

Xoa_CongViec()

Gọi phương thức Xoa() của lớp CongViec, phương thức Xoa() của lớp QuanLyCongViec, phương thức Xoa() của lớp GiaiQuyet, phương thức Xoa() của lớp ChiDao để xoá công việc và các thông tin liên quan.

CapNhat_PhanViec() Gọi phương thức CapNhat_PhanViec() của lớp

QuanLyCongViec để cập nhật thông tin phân việc.

b. Lop DK_VeBieuDo

b.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

TieuDe String Tiêu đề của biểu đồ

KieuBD Interger Kiểu biểu đồ

objCongViec CongViec

Đối tượng lưu thông tin công việc tổng hợp trước lúc vẽ biểu đồ.

b.2. Bảng các phương thức

- 79 -

Tên phương thức Mô tả

VeBieuDo()

Gọi phương thức LayDS_QuanHeCV() của lớp CongViec, phương thức LayDS_QuanLyCV() của lớp QuanLyCongViec, phương thức GetTenPhong() của lớp PhongBan, phương thức GetTenNhanVien() của lớp NhanVien để tổng hợp thông tin đưa vào biến thuộc tính objCongViec.

HienThiBieuDo()

Gọi phương thức HienThiBD() của lớp Frm_HienThiBD để hiển thị biểu đồ.

3.6.3. Lớp thực thể

a. Lớp CongViec

a.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

MaCongViec Int Mã công việc (trường tự động tăng)

TenCongViec Nvarchar(255) Tên công việc

NoiDungCongViec Nvarchar(5000) Nội dung công việc

MaNguoiTao int Mã người tạo

DonViTinhKL Nvarchar(50) Đơn vị tính khối lượng.

a.2. Bảng các phương thức

Tên phương thức Mô tả

TaoMoi_CV() + Đầu vào: Giá trị tất cả các thuộc tính của lớp.

+ Giá trị trả về: boolean

+Ý nghĩa: Tạo mới một công việc.

Sua()

+ Đầu vào: Giá trị các thuộc tính của lớp và Mã công việc cần sửa.

+Giá trị trả về: boolean

+Ý nghĩa: Sửa thông tin một công việc.

Xoa() + Đầu vào: Mã công việc cần xoá

+Giá trị trả về: boolean

- 80 -

+Ý nghĩa: Xoá một công việc.

LayThongTin() + Đầu vào: Mã công việc

+Giá trị trả về: Các thông tin của công việc

+Ý nghĩa: Lấy toàn bộ thông tin chi tiết của một công việc.

LayDanhSach() + Đầu vào: Danh sách Mã công việc

+ Giá trị trả về: Danh sách công việc.

+Ý nghĩa: Lấy toàn bộ danh sách công việc có Mã công việc thuộc danh sách Mã đưa vào.

Get_TT_PhanGQ() + Đầu vào: Mã công việc

+ Giá trị trả về: Tình trạng phân giải quyết

+Ý nghĩa: Lấy tình trạng phân giải quyết của công việc

Get_TT_GQ() + Đầu vào: Mã công việc

+ Giá trị trả về: Tình trạng giải quyết

+Ý nghĩa: Lấy tình trạng giải quyết công việc

Get_TenCV() + Đầu vào: Mã công việc

+ Giá trị trả về: Tên công việc

+Ý nghĩa: Lấy tên công việc có mã bằng đối số

Get_DoKhan() + Đầu vào: Mã công việc

+ Giá trị trả về: Độ khẩn của công việc

+Ý nghĩa: Lấy độ khẩn của công việc có mã bằng đối số

Get_TienDo() + Đầu vào: Mã công việc

+ Giá trị trả về: Tiến độ thực hiện công việc

+Ý nghĩa: Lấy thông tin tiến độ thực hiện công việc

b. Lớp NhanVien

b.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

ID Int Số thứ tự Nhân viên(khóa chính)

Ma_NV Int Mã số nhân viên (là trường tự động tăng).

HoVaTen Nvarchar(50) Họ và tên nhân viên

- 81 -

MaChucVu int Mã chức vụ công tác

DiaChi Nvarchar(255) Địa chỉ làm việc

DienThoai Nvarchar(20) Số điện thoại liên hệ

Ma_Phong Int Mã phòng

b.2. Bảng các phương thức

Tên phương thức Mô tả

Them() + Đầu vào: Giá trị tất cả các thuộc tính của lớp.

+ Giá trị trả về: boolean

+Ý nghĩa: Tạo mới một Nhân viên

Sua()

+ Đầu vào: Giá trị các thuộc tính của lớp và Mã nhân viên cần sửa.

+Giá trị trả về: boolean

+Ý nghĩa: Sửa thông tin một Nhân viên

Xoa() + Đầu vào: Mã Nhân viên cần xoá

+Giá trị trả về: boolean

+Ý nghĩa: Xoá một Nhân viên.

Get_TenNV() + Đầu vào: Mã Nhân viên

+Giá trị trả về: boolean

+Ý nghĩa: Tên viết tắt của Nhân viên có Mã số bằng đối số.

Get_TenDD() + Đầu vào: Mã Nhân viên

+Giá trị trả về: boolean

+Ý nghĩa: Tên đầy đủ của Nhân viên có Mã số bằng đối số.

Get_DinhDanh() + Đầu vào: Mã người dùng

+ Giá trị trả về: định danh của người dùng

+Ý nghĩa: Lấy tên định danh của người dùng

Get_Domain() + Đầu vào: Mã người dùng

+ Giá trị trả về: Tên domain

+Ý nghĩa: Lấy tên domain của người dùng

- 82 -

Get_MatKhau() + Đầu vào: Mã người dùng

+ Giá trị trả về: mật khẩu của người dùng

+Ý nghĩa: Lấy mật khẩu của người dùng

Set_MatKhau() + Đầu vào: Mã người dùng, mật khẩu

+ Giá trị trả về: boolean

+Ý nghĩa: đặt lại mật khẩu cho người dùng, trả về True nếu đặt thành công, trả về False nếu không đặt được.

LayDanhSach() + Đầu vào: Mã phòng ban

+Giá trị trả về: Danh sách Nhân viên

+Ý nghĩa: Lấy toàn bộ danh sách Nhân viên có Mã phòng bằng giá trị đối số đưa vào.

LayThongTin() + Đầu vào: Mã Nhân viên

+Giá trị trả về: Các thông tin của nhân viên

+Ý nghĩa: Lấy toàn bộ thông tin chi tiết của một Nhân viên

Get_LanhDao() + Đầu vào: Mã Nhân viên

+Giá trị trả về: boolean

+Ý nghĩa: Trả về giá trị True hoặc False tương ứng nhân viên là Lãnh đạo hay không.

Get_CongTac() + Đầu vào: Mã Nhân viên

+Giá trị trả về: boolean

+Ý nghĩa: Trả về giá trị True hoặc False tương ứng nhân viên còn công tác hay không.

Get_TenPhong() + Đầu vào: Mã Nhân viên

+Giá trị trả về: Tên phòng

+Ý nghĩa: Lấy tên phòng của Nhân viên

Get_ChucVu() + Đầu vào: Mã Nhân viên

+Giá trị trả về: Tên chức vụ

+Ý nghĩa: Lấy tên chức vụ của Nhân viên

c. Lớp GiaoViec

c.1. Bảng thuộc tính

- 83 -

Tên Kiểu dữ liệu Mô tả

ID Int Số thứ tự

MaGiaoViec Int Mã giao việc

MaNguoiGiao Int Mã người giao việc

int MaNhanVienDuocGiao Mã nhân viên được giao

HuongDanThucHien Nvarchar(255) Hướng dẫn thực hiện.

c.2. Bảng các phương thức

Tên phương thức Mô tả

Them() + Đầu vào: Giá trị tất cả các thuộc tính của lớp.

+ Giá trị trả về: boolean

+Ý nghĩa: Tạo mới một lần chỉ đạo mới, trả về True nếu tạo thành công, trả về False nếu tạo không thành công

Sua() + Đầu vào: Giá trị các thuộc tính của lớp và Mã chỉ đạo cần sửa.

+ Giá trị trả về: boolean

+Ý nghĩa: Sửa thông tin một chỉ đạo

Xoa() + Đầu vào: Mã chỉ đạo cần xoá

+ Giá trị trả về: boolean

+Ý nghĩa: Xoá một chỉ đạo

Get_DanhSach() + Đầu vào: Mã công việc

+ Giá trị trả về: danh sách các lần chỉ đạo

+Ý nghĩa: Lấy danh sách các lần chỉ đạo có mã công việc bằng đối số.

d. Lớp NoiDungGiaoViec

d.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

ID Int Số thứ tự

MaGiaoViec Int Mã giao việc

MaCongViec Int Mã công việc giao

- 84 -

ThoiGianBD Datetime Ngày bắt đầu

ThoiGianYCKT Datetime Ngày yêu cầu kết thúc

NoiDungGQ Nvarchar(255) Nội dung giải quyết

TrangThai Smallint

Khối lượng giải quyết công việc (từ 0% đến 100%), mặc định =0%.

ThoiGianKTTT Datetime Thời gian kết thúc thực tế

d.2. Bảng các phương thức

Tên phương thức Mô tả

Them() + Đầu vào: Giá trị tất cả các thuộc tính của lớp.

+ Giá trị trả về: boolean

+Ý nghĩa: Tạo mới một lần giải quyết mới, trả về True nếu tạo thành công, trả về False nếu tạo không thành công

Sua()

+ Đầu vào: Giá trị các thuộc tính của lớp và Mã giải quyết cần sửa.

+ Giá trị trả về: boolean

+Ý nghĩa: Sửa thông tin một lần giải quyết

Xoa() + Đầu vào: Mã giải quyết cần xoá

+ Giá trị trả về: boolean

+Ý nghĩa: Xoá một giải quyết

Get_DanhSach() + Đầu vào: Mã công việc

+ Giá trị trả về: danh sách các lần giải quyết

+Ý nghĩa: Lấy danh sách các lần giải quyết có mã công việc bằng đối số.

Get_NoiDung_GQ() + Đầu vào: Mã công việc, mã Nhân viên

+ Giá trị trả về: danh sách các lần giải quyết

+Ý nghĩa: Lấy danh sách các lần giải quyết có mã công việc bằng đối số Mã công việc của Nhân viên có mã bằng giá trị đối số mã Nhân viên.

e. Lớp PhongBan

- 85 -

e.1. Bảng thuộc tính

Tên Kiểu dữ liệu Mô tả

Ma_Phong Int Mã số phòng/ban (trường tự động tăng)

TenPhong Nvarchar(255) Tên phòng/ban

DiaChi Nvarchar(255) Địa chỉ phòng/ban

SoDienThoai Nvarchar(20) Số điện thoại của phòng/ban

e.2. Bảng các phương thức

Tên phương thức Mô tả

Them() + Đầu vào: Giá trị tất cả các thuộc tính của lớp.

+ Giá trị trả về: boolean

+Ý nghĩa: Tạo một phòng ban mới, trả về True nếu tạo thành công, trả về False nếu tạo không thành công

Sua() + Đầu vào: Giá trị các thuộc tính của lớp và Mã phòng cần sửa.

+ Giá trị trả về: boolean

+Ý nghĩa: Sửa thông tin một phòng ban

Xoa() + Đầu vào: Mã phòng ban cần xoá

+ Giá trị trả về: boolean

+Ý nghĩa: Xoá một phòng ban đã có

Get_TenPhong() + Đầu vào: Mã phòng

+ Giá trị trả về: Tên phòng

+Ý nghĩa: Lấy tên phòng có Mã phòng bằng giá trị đối số.

Get_DanhSach() + Đầu vào: Không có

+ Giá trị trả về: danh sách các phòng ban

+Ý nghĩa: Lấy danh sách các phòng ban

- 86 -

KẾT LUẬN

Các kết quả đạt được

Nắm rõ được khái niệm, đặc điểm và phân loại Framework qua đó biết được

hướng xây dựng một Framework cụ thể.

Tìm hiểu mô hình 3 lớp phục vụ cho việc thiết kế và mã hóa chương trình một

cách khoa học và dễ quản lý nhất.

Tìm hiểu các ứng dụng thực tế và nhận ra được tầm quan trọng và tiện dụng của

một Framework.

Tìm hiểu các bài toán liên quan đến luồng công việc như “Quản lý luồng công

việc tại công ty thiết kế đồ nội thất gia đình” và “Quản lý tính tiền lương cho giáo

viên” qua đó rút ra được bài toán tổng quát “Giao việc và xử lý luồng công việc” tại

một doanh nghiệp hay một công ty nào đó.

Vận dụng kiến thức đã được học về “Phân tích thiết kế hướng đối tượng”, xây

dựng các Usecase(Ca sử dụng) đến mức chi tiết cho bài toán “Luồng công việc”.

Áp dụng các Mẫu(Patterns) vào việc tổng quát hóa các Usecase và xây dựng biểu

đồ lớp thiết kế thực thi các ca sử dụng đó

Xây dựng, mã hóa Framework Luồng công việc theo mô hình 3 lớp: Entity,

ServiceBase, SqlBase sử dụng ngôn ngữ lập trình C# dựa trên nền tảng .NET 3.5 và

SQL Server 2005 của Microsoft.

Xây dựng một phần mềm nho nhỏ ứng dụng Framework đã thực hiện.

Những vấn đề tồn tại và hướng mở rộng và phát triển

Do thời gian có hạn, luận văn mới chỉ dừng lại ở việc xây dựng và áp dụng một vài mẫu thiết kế để thiết kế và cài đặt, xây dựng phần mềm hệ thống. Để có được một hệ thống hoàn chỉnh, mềm dẽo vận hành trong thực tế, luận văn cần được nghiên cứu và phát triển hơn nữa với việc áp dụng các mẫu thiết kế vào các quy trình tổ chức, xử lý, tổng hợp công việc. Đó là thiết kế chi tiết các gói ca sử dụng, chỉ ra và mô tả chi tiết các thuộc tính và các phương thức thực hiện trong từng lớp của hệ thống, thiết kế một số thuật toán xử lý chi tiết, áp dụng các mẫu thiết kế có thể. Thực hiện xây dựng hệ thống trên một công cụ lập trình dựa theo mô hình phân tích thiết kế đã xây dựng.

Hệ thống có thể mở rộng để kết nối với hệ thống quản lý công văn. Các công văn đến được chuyển thành công việc, công văn được xem như là nội dung công việc. Việc

- 87 -

giải quyết công văn được đưa tích hợp vào quy trình giải quyết công việc. Nghiên cứu phát triển chức năng tạo và tổ chức, giải quyết công việc thông qua mô hình đồ hoạ. Tạo sẵn các công cụ cho phép kéo thả và điền các thuộc tính công việc một cách trực quan trên màn hình máy tính.

- 88 -

TÀI LIỆU THAM KHẢO

Tài liệu tiếng Việt

[1]. Đặng Văn Đức (2002), Phân tích thiết kế hướng đối tượng bằng UML, NXB

Giáo dục, Hà Nội.

[2]. Nguyễn Văn Vỵ, Nguyễn Hữu Nguyên (biên dịch (2001)), Phân tích và thiết

kế hướng đối tượng, Khoa Công Nghệ, ĐHQGHN, Hà Nội.

[3]. Nguyễn Văn Vỵ (2002), Phân tích thiết kế các hệ thống thông tin hiện đại

hướng cấu trúc và hướng đối tượng, tr.293-358, Nhà xuất bản Thống kê, Hà

Nội.

[4]. Nguyễn Văn Vỵ (biên dịch (2004), Applying UML and Patterns An

Introduction to Object-Oriented Analysis and Design, Graig Lanrmen -1998,

Khoa Công Nghệ, ĐHQGHN, Hà Nội.

[5]. Đặng Sơn Lâm (2007), Ứng dụng Framework Higgins để phát triển một số ứng

dụng, luận văn tốt nghiệp - Khoa Công Nghệ Thông Tin, Đại học Công Nghệ,

ĐHQGHN.

[6]. Vũ Văn Thạch(2006), Framework và ứng dụng trong lĩnh vực sử dụng lại, luận

văn tốt nghiệp – Khoa Công Nghệ Thông Tin, Đại học Công Nghệ, ĐHQGHN.

Tài liệu tiếng Anh

[5]. Boggs, W. and Boggs, M. (1999), Mastering UML with Rational Rose, Sybex.

[6]. Booch, G., Rumbaugh, J. and Jacobson, I. (1998), The Unified Modeling

Language User Guide, NXB Wesley.

[7]. Booch, G., Rumbaugh, J. and Jacobson, I. (1999), The Unified Software

Development Process, NXB Wesley.

[8]. Douglas C.Schmidt (1998), Introduction to Pattern and Frameworks,

Vanderbilt University.

[9]. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994), Design Patterns: Elements of Reusable Object-Oriented Software, NXB Wesley.

- 89 -

[10]. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1998), Design

Patterns CD - Elements of Reusable Object Oriented Software, NXB Wesley.

[11]. Fowler (1997), Analysis Patterns: Reusable Object Models, NXB Wesley.

[12]. Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sornmerlad, Michael

Stal (1996), Pattern-Oriented Software Architecture (Vol.1, Vol.2), John Wiley

& Sons Ltd.

[13]. Kim Waldén and Jean-Marc Nerson (1994), Seamless Object-Oriented

Software Architecture, Designers & Patterns Ltd, Oxford.

[14].Michael Kircher, Prashant Jain (2004), Pattern-Oriented Software

Architecture: Patterns for Resource Management, Volume 3, John Wiley & Sons Ltd.

[15].James W cooper (2002), Introduction to Design Patterns in C#, IBM T J

Watson Research Center.

[16].Zhiming Liu (2001), Object-Oriented Sofware Development Using UML, NXB

UNI/IIST.

Các trang Web

[17]. http://www.patterndepot.com/put/8/JavaPatterns.htm

[18]. http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/

[19]. http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/patterns/

[20]. http://www.dofactory.com/Patterns/Patterns.aspx

[21]. http://www.pkiforum.org/

Bộ công cụ

[1]. Microsoft Visual Studio .NET 2008

[2]. SQL Server 2005.

[3]. Microsoft Visio 2007

- 90 -