















Preview text:
1.1 Khảo sát hệ thống, làm rõ đề tài
1.1.1 Ý tưởng cho hệ thống
Lý do chọn đề tài
Đề tài "Xây dựng hệ thống quản lý dự án IT cho doanh nghiệp nhỏ" xuất phát từ nhu
cầu bức thiết của các doanh nghiệp nhỏ trong lĩnh vực công nghệ thông tin (IT) nhằm tối ưu hóa
quá trình quản lý dự án, kiểm soát tiến độ và nâng cao hiệu quả công việc. Trong bối cảnh ngàn
công nghệ thông tin phát triển mạnh mẽ, doanh nghiệp nhỏ thường gặp khó khăn trong việc tổ
chức và quản lý dự án do nguồn lực hạn chế và thiếu các công cụ hỗ trợ chuyên nghiệp. Việc
quản lý dự án không hiệu quả có thể dẫn đến chậm trễ, vượt ngân sách, và giảm chất lượng sản
phẩm, gây ảnh hưởng tiêu cực đến uy tín và khả năng cạnh tranh của doanh nghiệp.
Đề tài này được chọn với mong muốn xây dựng một hệ thống quản lý dự án IT phù hợp cho cá
doanh nghiệp nhỏ, giúp cải thiện quy trình làm việc, giám sát tiến độ và phân phối nguồn lực
một cách khoa học. Hệ thống sẽ bao gồm các chức năng quản lý toàn diện như phân công
nhiệm vụ, theo dõi và kiểm tra tiến độ làm việc, và báo cáo kết quả công việc, giúp doanh
nghiệp dễ dàng quản lý dự án từ giai đoạn lập kế hoạch đến khi hoàn thành dự án.
Ngoài ra, hệ thống còn được thiết kế với tính tùy biến cao, phù hợp với nhu cầu riêng của từng
doanh nghiệp nhỏ, đặc biệt là trong lĩnh vực IT. Điều này giúp doanh nghiệp dễ dàng điều chỉnh
hệ thống để đáp ứng yêu cầu đặc thù của từng dự án, đồng thời cải thiện khả năng quản lý tổng
thể và tăng cường sự minh bạch trong quá trình thực hiện dự án.
Với phạm vi triển khai cho các doanh nghiệp nhỏ trong lĩnh vực công nghệ, hệ thống quản lý dự
án này sẽ hỗ trợ doanh nghiệp không chỉ kiểm soát tốt các dự án hiện tại mà còn mở rộng khả
năng phát triển, cạnh tranh và hội nhập với xu hướng công nghệ mới.
Mục tiêu đề tài:
Đề tài "Xây dựng hệ thống quản lý dự án IT cho doanh nghiệp nhỏ" mong muốn tạo ra một hệ
thống quản lý dự án toàn diện, hiệu quả, và dễ sử dụng, đáp ứng nhu cầu đặc thù của các
doanh nghiệp nhỏ trong lĩnh vực công nghệ thông tin (IT).
Cụ thể, đề tài hướng tới các mục tiêu chính sau:
Tối ưu hóa quy trình quản lý dự án: Hệ thống giúp doanh nghiệp quản lý toàn diện các
dự án IT, từ giai đoạn lập kế hoạch, phân công nhiệm vụ, theo dõi tiến độ cho đến báo
cáo và hoàn thành dự án.
Xây dựng các chức năng cơ bản về quản lý nhiệm vụ như: đăng nhập, giao nhiệm vụ, báo
cáo tiến độ, báo cáo hoàn thành, yêu cầu báo cáo tiến, thu hồi nhiệm vụ, tìm kiếm
nhiệm vụ, xem danh sách / thông tin chi tiết nhiệm vụ, ….
Tính tùy biến cao: Hệ thống cho phép điều chỉnh theo yêu cầu và đặc thù của từng
doanh nghiệp nhỏ, giúp doanh nghiệp có thể dễ dàng quản lý các dự án khác nhau, từ
những dự án nhỏ lẻ đến các dự án có quy mô phức tạp hơn.
Tăng cường tính minh bạch và phối hợp giữa các bộ phận: Hệ thống quản lý dự án IT sẽ
tạo điều kiện cho sự phối hợp hiệu quả giữa các thành viên và phòng ban, giúp đảm bảo
rằng mọi nhiệm vụ và trách nhiệm đều được rõ ràng, từ đó giảm thiểu tình trạng chồng chéo công việc.
Hỗ trợ doanh nghiệp nhỏ thích nghi với công nghệ quản lý hiện đại: Việc áp dụng hệ
thống quản lý dự án sẽ giúp doanh nghiệp nhỏ tiếp cận với các công cụ công nghệ tiên
tiến, nâng cao khả năng cạnh tranh và phát triển lâu dài trong ngành IT.
1.1.2 Khảo sát các hệ thống tương tự
1.2 Các chức năng hệ thống
Hệ thống quản lý nhiệm vụ được phát triển nhằm đáp ứng nhu cầu ngày càng cao trong việc
quản lý và theo dõi các công việc hàng ngày của cá nhân, nhóm làm việc và tổ chức. Trong môi
trường làm việc hiện đại, các cá nhân và tổ chức thường phải đối mặt với khối lượng công việc
lớn, đòi hỏi sự quản lý chi tiết và chính xác để đảm bảo mọi nhiệm vụ đều được hoàn thành
đúng tiến độ và chất lượng. Việc xây dựng một hệ thống quản lý nhiệm vụ không chỉ giúp tăng
cường năng suất mà còn mang lại nhiều lợi ích khác như cải thiện khả năng cộng tác, giảm thiểu
sai sót và tạo ra sự minh bạch trong quá trình thực hiện công việc.
Một trong những yếu tố quan trọng mà hệ thống hướng tới là cung cấp một quy trình làm việc
có cấu trúc, dễ dàng theo dõi và giám sát tiến độ công việc của các thành viên trong nhóm. Hệ
thống này giúp loại bỏ sự thiếu rõ ràng trong phân công nhiệm vụ và giảm thiểu các tình trạng
công việc bị chồng chéo hay bỏ sót. Nhờ đó, mỗi cá nhân hay nhóm đều có thể tối ưu hóa thời
gian làm việc và đảm bảo sự phối hợp nhịp nhàng giữa các bộ phận.
Các chức năng chính của hệ thống bao gồm:
Quản lý người dùng: Chức năng này đảm bảo rằng hệ thống có thể phục vụ nhiều loại
đối tượng người dùng khác nhau như quản trị viên, nhân viên, và khách. Người dùng có
thể đăng nhập và được cấp quyền sử dụng tùy thuộc vào vai trò của họ. Hệ thống phân
quyền chi tiết, cho phép quản trị viên có thể quản lý người dùng, chỉnh sửa thông tin cá
nhân, cấp hoặc thu hồi quyền hạn. Điều này giúp bảo mật thông tin và tăng cường tính
hiệu quả trong việc kiểm soát người dùng.
Quản lý nhiệm vụ: Đây là chức năng cốt lõi của hệ thống. Người dùng có thể tạo mới
nhiệm vụ, cập nhật trạng thái, chỉnh sửa thông tin và xóa nhiệm vụ khi cần thiết. Hệ
thống cho phép gán nhiệm vụ cho các cá nhân hoặc nhóm người cụ thể, đồng thời thiết
lập thời hạn hoàn thành. Khi nhiệm vụ được giao, người dùng có thể theo dõi tiến độ
thông qua các trạng thái như: đang chờ, đang thực hiện, hoàn thành hoặc quá hạn.
Chức năng này giúp tăng cường sự rõ ràng trong quản lý công việc và đảm bảo mỗi
thành viên đều biết được trách nhiệm của mình.
Quản lý thời hạn và ưu tiên công việc: Hệ thống cung cấp tính năng đặt ưu tiên cho các
nhiệm vụ quan trọng, giúp người dùng dễ dàng phân bổ thời gian và nguồn lực cho
những công việc cấp bách. Ngoài ra, chức năng quản lý thời hạn giúp người dùng nắm
bắt được các mốc thời gian quan trọng và có sự điều chỉnh kịp thời nếu cần.
Tính năng thông báo và nhắc nhở: Để đảm bảo người dùng không bỏ lỡ các công việc
quan trọng, hệ thống được tích hợp chức năng thông báo và nhắc nhở. Khi có nhiệm vụ
mới, thay đổi trạng thái hoặc khi nhiệm vụ sắp đến hạn, hệ thống sẽ tự động gửi thông
báo trực tiếp trên giao diện. Tính năng này giúp người dùng dễ dàng theo dõi mọi thay
đổi trong hệ thống mà không cần phải truy cập thường xuyên.
Báo cáo và thống kê: Chức năng báo cáo cho phép quản lý và người dùng dễ dàng theo
dõi tiến độ công việc qua các báo cáo chi tiết và thống kê tổng quan. Hệ thống cung cấp
số liệu về số lượng nhiệm vụ đã hoàn thành, nhiệm vụ đang thực hiện, nhiệm vụ bị quá
hạn, và hiệu suất làm việc của từng cá nhân hoặc nhóm. Báo cáo giúp người dùng nắm
bắt tình hình công việc một cách toàn diện và đưa ra các quyết định quản lý phù hợp.
Tìm kiếm và lọc nhiệm vụ: Hệ thống tích hợp tính năng tìm kiếm và lọc thông tin nhiệm
vụ dựa trên các tiêu chí như tên, trạng thái, người thực hiện, thời gian tạo và thời hạn.
Điều này giúp người dùng dễ dàng tìm thấy các nhiệm vụ cụ thể mà không mất nhiều thời gian.
Lưu trữ và theo dõi lịch sử nhiệm vụ: Hệ thống lưu trữ toàn bộ thông tin về các nhiệm v
đã hoàn thành, cho phép người dùng theo dõi lại lịch sử công việc. Tính năng này đặc
biệt hữu ích trong việc đánh giá lại quá trình làm việc, rút kinh nghiệm và cải thiện hiệu suất trong tương lai.
Nhờ vào các chức năng trên, hệ thống quản lý nhiệm vụ giúp nâng cao sự minh bạch, tăng
cường khả năng hợp tác giữa các thành viên, đồng thời tối ưu hóa việc phân bổ tài nguyên và
quản lý thời gian. Với hệ thống này, các cá nhân và tổ chức có thể dễ dàng quản lý công việc
cách chuyên nghiệp và hiệu quả hơn.
Hệ thống quản lý nhiệm vụ được thiết kế với mục tiêu phân định rõ ràng quyền hạn và chức
năng của hai nhóm người dùng chính: quản trị viên và người dùng thông thường. Mỗi nhóm
đều có những tính năng phù hợp với vai trò và trách nhiệm của mình trong tổ chức, từ việc
quản lý tổng thể cho đến thao tác với các nhiệm vụ hàng ngày. Hệ thống này giúp tối ưu hóa
quá trình quản lý công việc, tăng cường tính hiệu quả và giảm thiểu sai sót trong quy trình vận hành.
Chức năng dành cho quản trị viên
Quản trị viên là những người có quyền hạn cao nhất trong hệ thống. Họ đóng vai trò quản lý
tổng thể, điều phối và giám sát toàn bộ hoạt động của các người dùng và nhiệm vụ trong hệ thống. Quản lý nhân viên: o Thêm/ sửa/ xóa nhân viên o Tìm kiếm nhân viên o
Xuất danh sách nhân viên ra file Quản lý phòng ban: o Thêm/ sửa/ xóa phòng ban o
Thêm/ sửa/ xóa nhân viên trong phòng ban Quản lý dự án: o Danh sách dự án o
Danh sách các công việc trong dự án
Thống kê các công việc của phòng ban, đơn vị (Theo dự án, đã giao, chủ trì, mức độ
quan trọng của công việc, thời gian, …)
Chức năng dành cho người dùng
Người dùng trong hệ thống quản lý nhiệm vụ có các chức năng giới hạn hơn so với quản trị viê
tập trung vào việc thực hiện và quản lý các nhiệm vụ cá nhân hoặc nhóm của họ. Họ không có
quyền quản trị hệ thống, nhưng vẫn có đầy đủ công cụ để theo dõi và hoàn thành công việc được giao. Chức năng đăng nhập Xem danh sách nhiệm vụ Giao nhiệm vụ Tìm kiếm nhiệm vụ Lọc nhiệm vụ Xem thông báo
Quản lý thông tin cá nhân Ghim nhiệm vụ Báo cáo tiến độ Xin gia hạn Trả lại nhiệm vụ Xóa nhiệm vụ Chỉnh sửa nhiệm vụ
Báo cáo hoàn thành nhiệm vụ Hủy yêu cầu gia hạn
Hủy yêu cầu báo cáo tiến độ
Hủy yêu cầu báo cáo hoàn thành Chuyển xử lý
Xem thông tin chi tiết nhiệm vụ
Yêu cầu báo cáo tiến độ Thu hồi nhiệm vụ Kết thúc nhiệm vụ Duyệt/từ chối gia hạn
Duyệt/từ chối báo cáo tiến độ
Duyệt/Từ chối báo cáo hoàn thành
Xem lịch sử tiến độ xử lý Nhập ý kiến xử lý Thống kê
Nhận nhiệm vụ từ phòng ban khác giao đến (Chủ trì nhiệm vụ)
Thống kê nhiệm vụ của phòng ban
1.3 Các công nghệ áp dụng
Tổng quan về tiêu chuẩn RESTful API
RESTful API sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để truy cập và xử
liệu. RESTful API được thiết kế để đảm bảo tính tương thích, độc lập và có thể mở rộng của cá
ứng dụng web và di động. Với RESTful API, các ứng dụng có thể giao tiếp với nhau thông qua
yêu cầu HTTP đơn giản, dễ dàng tạo ra các ứng dụng phức tạp bằng cách kết hợp các tài nguyê khác nhau.
M t số đ c điểm của RESTful API:
Sử dụng các phương thức HTTP để truy cập và xử lý dữ liệu.
Sử dụng các định danh tài nguyên URI (Uniform Resource Identifier) để xác định và truy cập các tài nguyên.
Truyền tải dữ liệu dưới dạng định dạng mở JSON hoặc XML.
Hỗ trợ cache và có thể mở rộng.
RESTful API có nhiều ưu điểm như tính tương thích cao, độc lập với ngôn ngữ lập trình, dễ dàn
để phát triển và bảo trì. Nó c ng cho phép ứng dụng tương tác với nhau một cách dễ dàng và
hiệu quả. Tuy nhiên, việc thiết kế và triển khai RESTful API cần phải được thực hiện một cách
đúng đắn để đảm bảo tính bảo mật và hiệu suất của hệ thống.
Tổng quan về Java Spring Boot
Spring Boot là một framework phát triển ứng dụng web cho phép người dùng dễ dàng tạo ra
các ứng dụng Java chạy trên nền tảng của Spring Framework.
Spring Boot cung c p cho người dùng m t số i͵nh năng và l i ích, bao gồm:
Tự cấu hình: Spring Boot tự động cấu hình nhiều thứ để người dùng không cần phải cấu
hình thủ công, giúp tiết kiệm thời gian và công sức.
Các phần mềm con độc lập: Spring Boot giúp đóng gói và phân phối các ứng dụng Java
với các phần mềm con độc lập, điều này giúp cho việc cài đặt và triển khai trở nên dễ dàng và thuận tiện hơn.
Tích hợp tốt: Spring Boot tích hợp tốt với nhiều công nghệ phổ biến như Spring Data,
Spring Security, và Spring MVC, giúp người dùng phát triển ứng dụng nhanh chóng và dễ dàng.
Các tính năng đáng chú ý: Spring Boot cung cấp nhiều tính năng đáng chú ý như chạy
ứng dụng trên máy chủ web nhúng, tạo RESTful API, cấu hình dịch vụ bảo mật, và tạo cá
hồ sơ giám sát (monitoring profiles).
Dễ dàng tùy chỉnh: Spring Boot cho phép người dùng tùy chỉnh cấu hình để tạo ra các
ứng dụng theo nhu cầu của mình.
Hỗ trợ cộng đồng: Spring Boot có một cộng đồng lớn và tích cực, cung cấp cho người
dùng các tài liệu và hướng dẫn chi tiết về cách sử dụng và tối ưu hóa ứng dụng của họ.
Tổng quan về ReactJS
ReactJS sử dụng kiến trúc component-based giúp lập trình viên dễ dàng chia nhỏ giao diện
thành các thành phần tái sử dụng, điều này giúp việc phát triển ứng dụng phức tạp trở nên dễ dàng hơn rất nhiều.
Các ưu điểm cửa React JS:
Tương thích với đa dạng loại website: ReactJS có thể sử dụng để xây dựng từ các ứng
dụng đơn giản cho đến các ứng dụng phức tạp với yêu cầu xử lý dữ liệu lớn và tương tá người dùng cao.
Khả năng tái sử dụng các Component: Một khi bạn đã phát triển các component tốt và
linh hoạt, chúng có thể dễ dàng tái sử dụng trong nhiều dự án khác nhau, giúp tiết kiệm thời gian và công sức.
Xây dựng UI hiệu quả: ReactJS đơn giản hóa việc phát triển giao diện người dùng so với
vanilla JavaScript hay JQuery, giúp giảm thiểu lỗi và tăng tốc quá trình phát triển.
Tái sử dụng code và component: ReactJS khuyến khích việc chia giao diện thành các
component nhỏ và tái sử dụng chúng trong nhiều dự án khác nhau.
JSX và Virtual DOM: Với JSX, lập trình viên có thể viết mã code trông giống như HTML,
giúp thay đổi DOM dễ dàng hơn. Virtual DOM của React giúp cập nhật DOM một cách
hiệu quả hơn, giảm tải cho trình duyệt.
Tích hợp dễ dàng với các framework khác: React có thể tích hợp tốt với các framework
khác như Redux hoặc Apollo, giúp quản lý dữ liệu và state hiệu quả hơn trong các ứng dụng lớn.
Thân thiện với SEO: ReactJS có khả năng render trên server, giúp cải thiện SEO bằng cách
cho phép các công cụ tìm kiếm dễ dàng crawl và index nội dung trang web.
Dễ dàng Debug và phát triển: Facebook đã phát hành một Chrome extension giúp việc
debug các ứng dụng ReactJS trở nên đơn giản hơn, rút ngắn thời gian phát triển và kiểm thử sản phẩm.
Được sử dụng rộng rãi trên toàn thế giới: ReactJS là một trong những thư viện front-end
phổ biến nhất với nhu cầu tuyển dụng lớn từ các công ty hàng đầu như Facebook,
Airbnb, Netflix, và nhiều công ty khác
Tổng quan về React Native
React Native giúp tối ưu hóa hiệu năng, tiết kiệm thời gian, công sức, và chi phí phát triển khi
chỉ cần viết một lần mà có thể chạy trên nhiều hệ điều hành khác nhau.
Các ưu điểm cửa React Native:
Khả năng tái sử dụng mã: Lập trình viên có thể tái sử dụng đến 90% mã nguồn cho cả h
nền tảng iOS và Android, giúp tiết kiệm thời gian và giảm bớt công sức trong việc phát triển ứng dụng.
Live Reload: React Native hỗ trợ tính năng Live Reload, cho phép lập trình viên xem và áp
dụng các thay đổi trong thời gian thực mà không cần phải tải lại toàn bộ ứng dụng, giúp
quá trình phát triển trở nên nhanh chóng và tiện lợi.
Tập trung vào giao diện người dùng (UI): React Native tập trung mạnh vào việc xây dựng
giao diện người dùng, hỗ trợ tốt cho việc phát triển các ứng dụng với giao diện đẹp mắt
và tương tác người dùng tốt.
Rút ngắn thời gian học tập: Lập trình viên chỉ cần học một framework duy nhất là React
Native, nhưng có thể phát triển ứng dụng cho cả hai nền tảng iOS và Android, thay vì
phải học riêng hai ngôn ngữ lập trình và công cụ khác nhau.
Hỗ trợ bởi cộng đồng lớn và Facebook: React Native có một cộng đồng lớn mạnh cùng
với sự hỗ trợ của Facebook, giúp việc tìm kiếm tài liệu và học hỏi trở nên dễ dàng hơn.
Plugin của bên thứ 3: React Native cung cấp nhiều plugin hỗ trợ giúp việc phát triển trở
nên nhanh chóng và dễ dàng hơn, chẳng hạn như các plugin xử lý hình ảnh, địa điểm,
hay tích hợp dịch vụ thanh toán.
Cross-platform mobile development: Được đánh giá cao cho khả năng phát triển các ứng
dụng di động đa nền tảng, giúp rút ngắn thời gian phát triển sản phẩm mà vẫn đảm bảo hiệu suất cao.
Hoạt đ ng của React Native: React Native có cơ chế hoạt đ ng thông qua ba luồng chính:
UI Thread: Luồng chính chịu trách nhiệm xử lý và cập nhật giao diện người dùng.
Shadow Thread: Luồng xử lý các bố cục giao diện (layout) để tối ưu hóa hiệu suất khi render.
JavaScript Thread: Nơi mã JavaScript được thực thi và giao tiếp với Native APIs, giúp
phản hồi các hành động của người dùng.
React Native được nhiều công ty lớn trên thế giới sử dụng để phát triển ứng dụng di động như
Instagram, Facebook, Walmart, Bloomberg, Skype, Airbnb, nhờ khả năng linh hoạt, hiệu suất
cao và khả năng tái sử dụng mã giữa các nền tảng.
Các ứng dụng phát triển bằng React Native có thể mang lại trải nghiệm người dùng gần như ứng
dụng native thông thường và vẫn có thể tận dụng tối đa sức mạnh từ các Native APIs.
Tổng quan về MySQL
Hệ quản trị cơ sở dữ liệu MySQL ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên
nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh và Mysql c ng có
cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL chính vì thế nên MySQL được
sử dụng và hỗ trợ của những lập trình viên yêu thích mã nguồn mở.
Nhưng MySQL không bao quát toàn bộ những câu truy vấn cao cấp như SQL Server. Vì vậy
MySQL chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website, thích hợp cho
các ứng dụng có truy cập CSDL trên internet và có thể giải quyết hầu hết các bài toán trong PH Perl.
Các đ c điểm nổi bật của MySQL:
Hiệu suất cao và khả năng mở rộng: MySQL được tối ưu hóa để xử lý một lượng lớn dữ
liệu một cách nhanh chóng và hiệu quả. Hệ thống có thể dễ dàng mở rộng để đáp ứng
nhu cầu lưu trữ và xử lý dữ liệu ngày càng tăng.
Bảo mật và tính toàn vẹn dữ liệu: MySQL cung cấp các tính năng bảo mật mạnh mẽ như
xác thực người dùng, phân quyền, mã hóa dữ liệu và phát hiện xâm nhập, giúp bảo vệ
dữ liệu khỏi các mối đe dọa an ninh.
Tính linh hoạt và tùy biến cao: MySQL hỗ trợ nhiều nền tảng, nhiều loại engine lưu trữ
và cho phép người dùng tùy chỉnh cấu hình để phù hợp với nhu cầu cụ thể của ứng dụng.
Cộng đồng lớn và hỗ trợ mạnh mẽ: MySQL có một cộng đồng người dùng rất lớn, sẵn
sàng chia sẻ kinh nghiệm và giải đáp thắc mắc.
Mã nguồn mở: MySQL là một phần mềm mã nguồn mở, người dùng có thể tự do sử
dụng, sửa đổi và phân phối.
Cơ chế quản lý dữ liệu: MySQL quản lý dữ liệu thông qua các cơ sở dữ liệu (database).
Mỗi cơ sở dữ liệu có thể chứa nhiều bảng (table), mỗi bảng lưu trữ một loại dữ liệu cụ
thể. Các bảng được liên kết với nhau thông qua các khóa (key) để tạo thành các mối quan hệ.
Cơ chế phân quyền: MySQL có cơ chế phân quyền người dùng rất chi tiết. Mỗi người
dùng có thể được cấp quyền truy cập đến một hoặc nhiều cơ sở dữ liệu, với các quyền
hạn khác nhau như đọc, ghi, sửa đổi cấu trúc bảng, v.v.
Ngôn ngữ SQL: MySQL sử dụng ngôn ngữ SQL (Structured Query Language) để tương tác
với dữ liệu. SQL là ngôn ngữ chuẩn để truy vấn, cập nhật, xóa và quản lý dữ liệu trong
các hệ quản trị cơ sở dữ liệu quan hệ.
Cách hoạt đ ng của MySQL:
MySQL hoạt động theo mô hình client-server, nghĩa là có một máy chủ (server) lưu trữ phần
mềm MySQL và các cơ sở dữ liệu, và có các máy khách (client) gửi yêu cầu đến máy chủ để th
hiện các thao tác với cơ sở dữ liệu.
MySQL sử dụng ngôn ngữ SQL để thực hiện các tác vụ. Các câu lệnh SQL là các lệnh được gử
đến máy chủ MySQL để đọc, thao tác hoặc kiểm soát dữ liệu được lưu trữ trong các cơ sở dữ
liệu của nó. Ví dụ, lệnh SELECT được sử dụng để lấy dữ liệu từ cơ sở dữ liệu. Để thêm dữ liệ
mới, lệnh INSERT được sử dụng. Tương tự, các lệnh DELETE và UPDATE được sử dụng để xóa
hoặc cập nhật dữ liệu hiện có.
Trong mô hình client-server, máy khách thiết lập kết nối với máy chủ thông qua mạng. Kết nối
này cho phép người dùng truy cập vào các cơ sở dữ liệu trên server và thực hiện các thao tác
trên chúng bằng cách sử dụng các câu lệnh SQL. Khi một request từ giao diện người dùng
(Graphical user interface – GUI), server sẽ phản hồi thông tin và trả về kết quả trên máy client.
Quá trình này được minh họa qua sơ đồ sau:
Kiến tr c của m t ứng dụng Spring Boot theo tiêu chuẩn RESTful API
Kiến trúc của một ứng dụng Spring Boot theo tiêu chuẩn RESTful API có thể được thiết kế theo
mô hình 3 lớp (3-tier architecture), bao gồm các lớp sau:
Lớp Controller: Đây là lớp đầu tiên nhận các yêu cầu HTTP từ client. Lớp này sẽ kiểm tra
và xử lý các yêu cầu này, định tuyến chúng đến lớp Service tương ứng và trả về các đối
tượng HTTP Response cho client.
Lớp Service: Lớp này chịu trách nhiệm xử lý các yêu cầu do lớp Controller gửi đến,
thường bao gồm các thao tác CRUD (Create, Read, Update, Delete) trên cơ sở dữ liệu.
Lớp Service sẽ gọi các phương thức từ lớp DAO (Data Access Object) để truy cập vào cơ sở dữ liệu.
Lớp DAO: Lớp này là lớp truy cập cơ sở dữ liệu để thực hiện các thao tác CRUD. Lớp D
sẽ đảm bảo kết nối tới cơ sở dữ liệu, tạo các câu lệnh SQL để thao tác dữ liệu và trả về kết quả cho lớp Service.
Luồng hoạt đ ng của RESTful API trong Spring Boot:
Client gửi yêu cầu HTTP tới một endpoint.
Controller tiếp nhận yêu cầu, xác thực và gửi yêu cầu đến Service.
Service xử lý logic nghiệp vụ, tương tác với Repository để lấy dữ liệu từ cơ sở dữ liệu
hoặc thực hiện các thay đổi.
Repository trả về dữ liệu cho Service.
Service trả kết quả về Controller.
Controller trả phản hồi lại cho Client theo chuẩn HTTP (thường là JSON).
Ngoài ra, để đảm bảo đúng tiêu chuẩn RESTful API, các ứng dụng Spring Boot cần tuân thủ các
nguyên tắc và tiêu chuẩn sau:
Sử dụng các phương thức HTTP chuẩn (GET, POST, PUT, DELETE) để thao tác với tài nguyên (resource).
Sử dụng định dạng JSON hoặc XML để trao đổi dữ liệu giữa client và server.
Sử dụng các URL thân thiện với người dùng để truy cập tài nguyên (ví dụ: /users/id thay vì /users?id=id).
Sử dụng mã trạng thái HTTP (HTTP status code) để biểu thị trạng thái của yêu cầu (ví dụ
200 OK, 404 Not Found, 500 Internal Server Error).
Đảm bảo rằng mã lỗi và thông báo lỗi được trả về đúng định dạng và đầy đủ thông tin đ
giúp client xử lý lỗi một cách chính xác.
Trong hệ thống này em sẽ sử dụng JPA (Java Persistense API) làm giải pháp thay thế cho lớp
DAO, sử dụng các Class Domain với kĩ thuật ORM để ánh xạ các đối tượng trong hệ thống đến
các bảng trong cơ sở dữ liệu.
Tổng quan về ORM
ORM là viết tắt của "Object-Relational Mapping" ( nh xạ đối tượng-quan hệ), là một k thuật
trong lập trình để ánh xạ dữ liệu giữa các đối tượng của ngôn ngữ lập trình với các bảng trong
cơ sở dữ liệu quan hệ.
Thay vì phải viết các truy vấn SQL để truy cập dữ liệu trong cơ sở dữ liệu, các đối tượng trong
mã nguồn sẽ được sử dụng để tương tác với cơ sở dữ liệu. Điều này giúp giảm bớt sự phức tạp
trong việc tương tác với cơ sở dữ liệu, tăng tính bảo mật và giảm thiểu sự lỗi trong mã nguồn.
L i ích của ORM
Tự động hóa thao tác dữ liệu: ORM giúp tự động hóa việc tạo, đọc, cập nhật, và xóa dữ
liệu (CRUD) mà không cần phải viết SQL thủ công. Các framework ORM sẽ tự động
chuyển đổi các thao tác trên đối tượng thành các câu lệnh SQL tương ứng.
Đa nền tảng (Database-independent: ORM giúp mã nguồn độc lập với loại cơ sở dữ liệu.
Bạn có thể chuyển từ cơ sở dữ liệu này sang cơ sở dữ liệu khác (ví dụ từ MySQL sang
PostgreSQL) mà không cần phải thay đổi nhiều đoạn mã, vì ORM sẽ xử lý các chi tiết liên
quan đến truy vấn và tương thích cơ sở dữ liệu.
Quản lý mối quan hệ giữa các bảng dễ dàng: ORM cung cấp cơ chế để quản lý các mối
quan hệ như one-to-one, one-to-many, và many-to-many giữa các bảng trong cơ sở dữ
liệu một cách dễ dàng. Các quan hệ này có thể được biểu diễn dưới dạng các thuộc tính
hoặc đối tượng trong mô hình hướng đối tượng, giúp code trở nên trực quan và dễ đọc hơn.
Giảm thiểu lỗi và dễ bảo trì: Do không cần viết các câu lệnh SQL thủ công, ORM giảm
thiểu nguy cơ sai sót về cú pháp hoặc logic truy vấn. Khi mô hình dữ liệu thay đổi, ORM
cho phép chỉnh sửa lớp đối tượng mà không cần thay đổi từng câu lệnh SQL.
Cải thiện bảo mật: ORM giúp ngăn ngừa các lỗi SQL Injection, một lỗ hổng bảo mật phổ
biến trong các ứng dụng web, vì các truy vấn đều được ORM quản lý và xử lý an toàn hơn.
Như c điểm của ORM
Hiệu suất: Trong một số trường hợp, ORM có thể không tối ưu hóa tốt như việc viết SQL
thủ công. Đối với các truy vấn phức tạp hoặc cần hiệu năng cao, việc sử dụng SQL thuần
có thể cho kết quả tốt hơn.
Sự phức tạp: Mặc dù ORM giúp đơn giản hóa nhiều công việc liên quan đến truy xuất dữ
liệu, nhưng khi ứng dụng lớn và phức tạp, việc cấu hình ORM và tối ưu hóa có thể trở nên khó khăn.
Thiếu linh hoạt với SQL nâng cao: ORM có thể không hỗ trợ tốt các truy vấn SQL phức
tạp hoặc các tính năng đặc biệt của một số cơ sở dữ liệu (ví dụ: window functions,
stored procedures, hoặc truy vấn tối ưu hóa).
Overhead (gánh nặng): Trong những ứng dụng nhỏ, ORM có thể gây ra quá tải không cần
thiết do việc ánh xạ và quản lý đối tượng.
Quản lý xác thực b ng JSON Web Token
JSON Web Token (JWT) là một tiêu chuẩn mở được sử dụng để quản lý xác thực trong các ứng
dụng web và di động. JWT được sử dụng để mã hóa thông tin xác thực của người dùng thành
một chuỗi ký tự, được gửi đi với mỗi yêu cầu HTTP. Với JWT, người dùng có thể được xác thự
một lần và truy cập các tài nguyên bảo vệ nhiều lần trong thời gian của phiên đăng nhập.
Quản lý xác thực b ng JWT có thể đư c thực hiện b ng cách thực hiện các bước sau đây:
Tạo JWT: sau khi người dùng đăng nhập thành công, máy chủ tạo một JWT và trả về cho
người dùng. JWT bao gồm ba phần: tiêu đề (header), tải (payload) và chữ ký (signature).
Lưu trữ JWT: Người dùng lưu trữ JWT để sử dụng trong các yêu cầu tiếp theo.
Gửi JWT trong mỗi yêu cầu HTTP: Người dùng gửi JWT trong tiêu đề của mỗi yêu cầu
HTTP, thông qua trường Authorization. Trong trường hợp này, JWT được mã hóa thành chuỗi ký tự.
Xác thực JWT: Máy chủ xác thực JWT bằng cách giải mã nó và kiểm tra tính hợp lệ của
chữ ký. Nếu JWT hợp lệ, máy chủ trả về dữ liệu yêu cầu cho người dùng.
Giới hạn thời gian sử dụng của JWT: JWT có thể được thiết lập để hết hạn sau một
khoảng thời gian nhất định. Khi JWT hết hạn, người dùng sẽ phải đăng nhập lại để nhận được một JWT mới.
Mỗi JWT gồm ba thành phần: tiêu đề (header), tải (payload) và chữ ký (signature).
1.4 Khảo sát về quy trình hoạt đ ng của hệ thống
Hệ thống quản lý nhiệm vụ được thiết kế để tự động hóa và tối ưu hóa quy trình giao, xử lý và
phê duyệt nhiệm vụ, nhằm nâng cao hiệu quả làm việc trong tổ chức. Dưới đây là mô tả chi tiết
từng bước trong quy trình nghiệp vụ của hệ thống:
Bước 1: Người giao tạo mới nhiệm vụ và giao xuống
Đăng nhập hệ thống: Người giao nhiệm vụ, thường là quản lý hoặc lãnh đạo dự án, thực
hiện đăng nhập vào hệ thống quản lý nhiệm vụ với thông tin tài khoản đã được cấp. Tạo nhiệm vụ mới: o
Người giao chọn tùy chọn "Tạo nhiệm vụ mới" từ giao diện chính của hệ thống. o
Nhập các thông tin cần thiết, bao gồm:
Tiêu đề nhiệm vụ: Đặt tên rõ ràng, ngắn gọn và dễ hiểu để mô tả nhiệm vụ.
Mô tả chi tiết: Cung cấp thông tin cụ thể về nhiệm vụ, bao gồm các bước
cần thực hiện, mục tiêu và yêu cầu cụ thể.
Người chủ trì: Lựa chọn cá nhân chính chịu trách nhiệm thực hiện nhiệm vụ.
Người phối hợp (nếu có): Chọn các cá nhân khác sẽ hỗ trợ trong quá trình thực hiện nhiệm vụ.
Nguồn nhiệm vụ: Xác định xem nhiệm vụ được giao đang nằm trong dự án nào.
Mức độ quan trọng: Thể hiện độ quan trọng và mức độ ưu tiên cần xử lý
của nhiệm vụ để người chủ trì có thể sắp xếp thứ tự công việc.
Thời hạn hoàn thành: Lựa chọn ngày và giờ dự kiến hoàn thành nhiệm vụ,
hệ thống sẽ tự động nhắc nhở người chủ trì và người phối hợp khi đến gần thời hạn.
Tài liệu đính kèm (nếu cần): Tải lên các tài liệu hướng dẫn, mẫu biểu hoặc
thông tin liên quan để người chủ trì và người phối hợp tham khảo.
Xác nhận giao nhiệm vụ: Sau khi nhập đầy đủ thông tin, người giao nhấn nút "Giao
nhiệm vụ". Hệ thống sẽ hiển thị thông báo xác nhận rằng nhiệm vụ đã được tạo thành
công và gửi thông báo tới người chủ trì và người phối hợp.
Bước 2: Hệ thống lưu thông tin nhiệm vụ
Hệ thống tự động lưu trữ toàn bộ thông tin nhiệm vụ vào cơ sở dữ liệu, bao gồm: o
Mã nhiệm vụ: Mỗi nhiệm vụ sẽ được gán một mã duy nhất để theo dõi. o
Thông tin chi tiết: Bao gồm tên, mô tả, thời hạn, trạng thái nhiệm vụ (mới), người
giao nhiệm vụ, người chủ trì, người phối hợp, nguồn nhiệm vụ, mức độ quan
trọng và tài liệu đính kèm.
Thông báo tới các bên liên quan: Hệ thống gửi thông báo đến chức năng thông báo trên
giao diện người dùng của người chủ trì và người phối hợp, giúp họ nắm bắt được nhiệm
vụ mới được giao ngay lập tức.
Bước 3: Người chủ trì và người phối h p (nếu có) nhận nhiệm vụ
Thông báo nhận nhiệm vụ: Người chủ trì và người phối hợp nhận được thông báo qua
chức năng thông báo trên giao diện người dùng về nhiệm vụ mới.
Xem thông tin nhiệm vụ: Họ có thể đăng nhập vào hệ thống để xem chi tiết nhiệm vụ,
bao gồm: tên, mô tả, thời hạn, trạng thái nhiệm vụ (mới), người giao nhiệm vụ, người
phối hợp, nguồn nhiệm vụ, mức độ quan trọng và tài liệu đính kèm.
Ý kiến xử lý: Nếu có bất kỳ điều gì không rõ ràng, người chủ trì có thể ghi chú lại hoặc
liên hệ với người giao để làm rõ trước khi bắt đầu công việc.
Bước 4: Người chủ trì và người phối h p (nếu có) xử lý nhiệm vụ và gửi người giao duyệt
Tiến hành xử lý nhiệm vụ: o
Người chủ trì bắt đầu công việc theo các hướng dẫn đã được ghi trong nhiệm vụ. o
Nếu có người phối hợp, họ sẽ làm việc cùng nhau, chia sẻ trách nhiệm và thông tin qua hệ thống.
Cập nhật trạng thái nhiệm vụ: Trong quá trình thực hiện, người chủ trì có thể cập nhật
trạng thái nhiệm vụ, cho phép hệ thống theo dõi tiến độ: o
Đang thực hiện: Khi người dùng đã nhận được nhiệm vụ và đang xác định các
yêu cầu của nhiệm vụ để chuẩn bị bắt đầu làm nhiệm vụ. o
Đang xử lý: Khi người dùng đã nắm rõ hết các yêu cầu của nhiệm vụ và bắt đầu
tiến hành xử lý công việc o
Xin gia hạn: Khi người dùng không thể hoàn thành công việc được giao trong thời
gian đặt ra. Người dùng có thể tiến hành xin gia hạn thêm thời gian để làm nhiệm vụ. o Chờ duyệt: o
Đã kết thúc: Thể hiện nhiệm vụ đã được hoàn thành.
Ghi chú trong quá trình làm việc: Người chủ trì có thể ghi chú lại những khó khăn, thách
thức trong quá trình thực hiện hoặc thông tin bổ sung để cung cấp cho người giao trong báo cáo.
Gửi báo cáo kết quả: Khi nhiệm vụ hoàn tất, người chủ trì sẽ tạo một báo cáo kết quả, bao gồm: o
Tóm tắt công việc đã thực hiện. o
Kết quả đạt được: Liệt kê các mục tiêu đã hoàn thành. o
Khó khăn và giải pháp: Ghi chú lại các vấn đề gặp phải và cách xử lý. o
Tài liệu đính kèm: Nếu có, người chủ trì có thể đính kèm tài liệu hỗ trợ báo cáo
(hình ảnh, file dữ liệu, v.v.).
Gửi cho người giao duyệt: Nhấn nút "Gửi báo cáo" để thông báo cho người giao và hệ
thống sẽ chuyển báo cáo tới người giao để xem xét.
Bước 5: Người giao duyệt ho c từ chối báo cáo xử lý nhiệm vụ
Nhận báo cáo: Người giao nhận được thông báo về báo cáo đã được gửi từ người chủ trì. Đánh giá nội dung: o
Người giao kiểm tra chi tiết báo cáo, xem xét từng phần để đảm bảo rằng mọi
yêu cầu trong nhiệm vụ đều đã được thực hiện.
Quyết định duyệt hoặc từ chối: o
Bước 5.1: Duyệt báo cáo xử lý nhiệm vụ:
Nếu người giao đồng ý với báo cáo, họ chọn tùy chọn "Duyệt" trên hệ thống.
Hệ thống sẽ cập nhật trạng thái nhiệm vụ thành " Đã kết thúc " và gửi
thông báo tới người chủ trì và các bên liên quan về việc nhiệm vụ đã hoàn tất.
Hệ thống lưu lại thông tin kết quả và thời gian hoàn thành để phục vụ cho các báo cáo sau này. o
Bước 5.2: Từ chối báo cáo xử lý nhiệm vụ:
Nếu người giao không đồng ý với báo cáo, họ chọn tùy chọn "Từ chối" và
cung cấp lý do từ chối trong hệ thống.
Hệ thống sẽ gửi thông báo tới người chủ trì và người phối hợp về lý do từ
chối, đồng thời yêu cầu họ thực hiện lại nhiệm vụ.
Người chủ trì và người phối hợp sẽ quay lại Bước 4, tiếp tục chỉnh sửa và
bổ sung cho nhiệm vụ cho đến khi hoàn tất và gửi lại cho người giao duyệt.
Bước 6: Hệ thống lưu lại thông tin
Lưu trữ toàn bộ thông tin: Hệ thống tự động lưu lại mọi thông tin liên quan đến nhiệm vụ, bao gồm: o
Lịch sử xử lý nhiệm vụ: Ghi lại các thay đổi về trạng thái nhiệm vụ, các quyết định
duyệt hoặc từ chối, và mọi tài liệu đính kèm trong quá trình thực hiện. o
Thời gian hoàn thành: Ghi nhận thời gian thực tế mà người chủ trì đã thực hiện nhiệm vụ. o
Phản hồi từ người giao: Lưu lại phản hồi từ người giao, bao gồm lý do từ chối và yêu cầu bổ sung.
Báo cáo và thống kê: Các thông tin này sẽ được sử dụng để tạo các báo cáo tổng kết về
tiến độ công việc, hiệu suất của từng cá nhân hoặc nhóm, và được sử dụng trong các
cuộc họp hoặc đánh giá định kỳ.
Quy trình này không chỉ giúp cho việc giao nhiệm vụ trở nên minh bạch, rõ ràng, mà còn đảm
bảo rằng mọi người đều có trách nhiệm trong việc hoàn thành công việc của mình. Hệ thống
quản lý nhiệm vụ góp phần nâng cao hiệu suất làm việc và tạo điều kiện thuận lợi cho việc giám
sát và điều phối các công việc trong tổ chức.
1.5 Quy định về nghiệp vụ trong hệ thống
Bảng phân quyền chức năng: Ghi chú :
“x” là được quyền hiển thị và truy cập.
Default: là sau khi đăng nhập hoặc truy cập ứng dụng thì hiển thị màn hình mặc định đó. ST
Người Người Người Người Người T Chức năng giao chủ trì theo dõi phối h p quản trị 1 Đăng nhập x x x x x 2 Xem danh sách nhiệm vụ Default Default Default Default 3 Giao nhanh nhiệm vụ x 4 Tìm kiếm nhiệm vụ x x x x 5 Lọc nhiệm vụ x x x x 6 Xem thông báo x x x x 7
Quản lý thông tin cá nhân x x x x 8 Ghim nhiệm vụ x x x x ST
Người Người Người Người Người T Chức năng giao chủ trì theo dõi phối h p quản trị 9 Báo cáo tiến độ x x 10 Xin gia hạn x 11 Trả lại nhiệm vụ x 12 Xóa nhiệm vụ x 13 Chỉnh sửa nhiệm vụ x x
14 Báo cáo hoàn thành nhiệm vụ x 15 Hủy yêu cầu gia hạn x
16 Hủy yêu cầu báo cáo tiến độ x
17 Hủy yêu cầu báo cáo hoàn thành x 18 Chuyển xử lý x
19 Xem thông tin chi tiết nhiệm vụ x x x x
20 Yêu cầu báo cáo tiến độ x x 21 Thu hồi nhiệm vụ x 22 Kết thúc nhiệm vụ x
23 Duyệt/từ chối gia hạn x
24 Duyệt/từ chối báo cáo tiến độ x
Duyệt/Từ chối báo cáo hoàn 25 thành x
26 Xem lịch sử tiến độ xử lý x x 27 Nhập ý kiến xử lý x x x 28 Thống kê x x x x
Nhận nhiệm vụ từ phòng ban
29 khác giao đến (Chủ trì nhiệm vụ) x x x x
Thống kê nhiệm vụ của phòng 30 ban x x x x 31 Danh sách các dự án Default 32 Thêm/ sửa/ xóa dự án x 33 Tìm kiếm dự án x
34 Thêm/ sửa/ xóa nhân viên x 35 Tìm kiếm nhân viên x
36 Xuất danh sách nhân viên ra file x
37 Thêm/ sửa/ xóa phòng ban x ST
Người Người Người Người Người T Chức năng giao chủ trì theo dõi phối h p quản trị
Thêm/ sửa/ xóa nhân viên trong 38 phòng ban x
Thống kê các công việc của 39 phòng ban, đơn vị x
1.6 Kết chương