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

lập trình di động đề tài quản lý nhân viên

35 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản Lý Nhân Viên
Tác giả Hồ Văn Sử, Nguyễn Tấn Thành, Nguyễn Đức Huy, Trần Quốc Huy, Dương Hoàng Tiến, Phạm Thị Minh Thư
Người hướng dẫn Nguyễn Thới Cụng Nghĩa
Trường học Đại học Quốc gia Hồ Chí Minh
Chuyên ngành Lập Trình Di Động
Thể loại Đề Tài
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 35
Dung lượng 4,61 MB

Nội dung

Trong giai đoạn hiện tại, ứng dụng được chia thành 3 module nhỏ: - _ Quản lý người dùng: Module này có chức năng liên kết dịch vụ chứng thực với cơ sở dữ liệu.. Module đảm bảo việc đồng

Trang 1

QUAN LY NHAN VIEN

Nhóm : Ol

Hồ Chí Minh - 01/2023

Trang 2

I Gioi thiéu 6

ma" ẽ 6 Ba , 6

4.1 _ Phân cấp quyên cho từng đối tượng người dùng - 5c sec 8

42, Thidt ké database ccccccccccccscsssesseessessessssssseeseetesessessrerseessessitssesseessserseteven 10

43 Đông bộ các tiến trình trên ứng dụng . 25s SE tre tre 13

4.4 Đông bộ cơ sở đữ liệu với Chat ó5 T2 2E 221222 2112121 errre 16

4.5 _ Xác nhận cho nhân viên vào công fy cL cc vn HH tre, 20

IV Mộtsố hình ảnh của ứng dụng 25

3 Khi đăng nhập bằng Employee Acount 31

F Những việc cần làm tiếp theo 32

VI Hướng phát triển 33

1 Cuối cùng, tính năng chấm công, ta có ý tưởng như sau . -ss- 33

1.1 Thực hiện: Q QGQ TS TT TH ng ng ng kg kg 33

Trang 3

Hinh anh

Hình II-1 Lộ trình thire hién o.oo cccesccccenccccescccesseccessevcvsseccesescetsecevtaseeeeaseereaserses 7

Hình II-2 Cau trúc database 5 221 2122112112212 1 1121212212 ưyg 13

Hình II-3 Các luồng của Android s s- ccccề 1221122122 21 21x 21 1n ra 14

Hình II-4 Các phương thức của Async TasK cá tk St 2211 1121111211 HH HH He, 16 Hình II-5 Quy trinh han tin occ ccccccccccccsscessesssessecssessvecseesssessesseetsessvecsietssesseetsvetseeteeee 17

Hình II-6 Bố cục giao diện Chat L2 LH vn 9101101111 011111 11111 01 8110111 1 HH ri 18

Hình III-1 Sơ đồ tương tác giữa client và $eTVCT - 56 2 222 211212222221 ra 21 Hình III-2 Sơ đồ giao tiếp giữa các actiVity các nh HH HH nen ra 21 Hình III-3 Quả trình đăng nhập - 2 202211211011 112111101111 101 1011111011111 011811011 k hy 2 Hình III-4 Quá trình tạo tài khoản - L1 2v 111112121111111211121211111111111111111101111 re 22

Hình III-5 Quá trình lấy 'Task 52 1 91 E2 1 2121121121121 1021211 nen 23

Hình III-6.Quá trình tạo TasK - 5 c nckS 1111211111118 HH HT HH HH nh 23

Hình III-7 Quá trình hiện thị Employee - - 5s c2 1 E121 11211 EEEerree 24

Hình III-§ Quá trình hiện thị Profile 5s: s2 2 2212211211211 121 1kg 24

Hình IV-I Màn hình Login - 1 10121201 12111312111 1111011111111 111101111 011811111011 11 1x xe 25

Hình TV-2 Màn hình tạo tài khoản n TS SH ng ng KT ng kg 25

Hình IV-3 Màn hình Dashboard 2.2111 111111211111101112112111211211111111 111 1kg 26 0E C Lối 0 27 Hình IV-5 Mản hình xem chỉ tiết Task - 5 5 2212 1 21.22112122 2g 27

Hình IV-6 Màn hình cập nhật 'TasK 0 2 111211 112111112111 1012181111 1011512181111 0 tre, 28

Hình IV-7 Màn hình them Task c2 2 2n 1 n1 111 21211211111111111111121111 101 HH, 28 Hình IV-8 Màn hình Employee óc tt 21 vn n1 1211101111111 011111 H1 Hy 29 Hình IV-9 Màn hình Profile đã Join công fy c1 LH vn HH 1H H12 re 30 Hình IV-I0 Màn hình profile chưa Join công ty L2 vn 111101111 x re 30 Hinh IV-11 Man hinh dashboard (Employee level) - v2 112112101211 key 31 Hình IV-I2 Màn hình Task (Employee level) cv 2192 H10 H11 te, 31

Hình IV-13 Màn hình chỉ tiết Task(Employee) - s5 5s SE 22 ren 32

Hình VI-1 Database dự kiến khi xây dựng tính năng chấm công -s-cs sec: 34

Trang 4

Thành viên

Họ và Tên Mã số sinh viên Chức vụ

Hồ Văn sư 19200025 Thành viên Nguyễn Tấn Thành 19200028 Thư ký

Nguyễn Đức Huy 19200099 Thành viên

Trần Quốc Huy 19200102 Thành viên

Duong Hoang Tién 19200194 Trưởng nhóm

Phạm Thị Minh Thư 19200510 Thành viên

Trang 5

Ban phan cong

Hoan thanh Hoan thanh 50% Chưa hoàn thành

Tên Ngày giao Deadline Nội Dung

19200510 | 27/09/2022 | 30/09/2022 Các dự án tương tự trên thị trường ¬

19200025 | 27/09/2022 | 30/09/2022 Nhu câu thị trường <

19200099 | 27/09/2022 | 30/09/2022 Nhu câu thị trường bị

19200194 | 04/10/2022 | 07/10/2022 Xây dựng tông quát hệ thống é

19200028 | 04/10/2022 | 07/10/2022 Xây dựng tông quát hệ thông Ẹ

19200102 | 04/10/2022 | 07/10/2022 Xây dựng tông quát hệ thống

19200028 | 23/12/2022 | 02/01/2023 Thực hiện thêm và truy vấn task

19200099 | 23/12/2022 | 02/01/2023 Thực hiện thêm và truy vấn task

19200102 | 23/12/2022 | 03/01/2023 Thực hiện truy vấn thông tin người

dùng và thêm người dùng vào công ty

19200510 | 23/12/2022 | 03/01/2023 Thực hiện truy vấn thông tin người

dùng và thêm người dùng vào công ty

19200025 | 23/12/2022 | 03/01/2022 Thực hiện đồng bộ các tiến trình

Trang 6

I Giới thiệu

Hiện nay, quản lý công việc và nhân viên đang là vấn đề nhức nhói đối với các doanh nghiệp Theo thống kê từ Base Workplus, 52% doanh nghiệp Việt Nam làm việc không có quy trình, 85% doanh nghiệp có những quyết định sai lầm do không đủ cơ sở dữ liệu, báo cáo và 90%

các CEO lạm dụng Excel, Email, Zalo nhằm quản ly công việc, dự án Những điều trên dẫn đến hệ lụy các doanh nghiệp gánh chịu như không kiểm soát được tiễn độ công việc, cộng tác,

phối hợp giữa các bộ phận phòng ban rời rạc, không hiệu quả Ứng dụng giúp quản lý nhân viên và công việc được phát triển là điều cần thiết Ứng dụng có các tác vụ cơ bản thêm, sửa, xóa những công việc và tăng cường sự tương tác giữa nhân viên và quản lý nhằm giúp việc

quản lý trở nên thuận tiện và hiệu quả Ứng dụng sử dung Platfrom Firebase để tạo cơ sở dữ liệu, chứng thực người dung

1 Firebase la gi?

Eirebase là một nền tảng ứng dụng di động và web với các công cụ và hạ tầng được thiết kế

đề giúp các lập trình viên xây dựng các ứng dụng chất lượng cao Nói ngắn gọn, thay vì trực tiếp cung cấp các ứng dụng, họ cung cấp các dịch vụ nên tảng cho các lập trình viên, chính là

các bạn, sử dụng dé xây dựng ứng dụng cũng như hỗ trợ các bạn tối ưu hóa, tối đa hóa ứng dụng của mình Với nhiều dịch vụ chất lượng cao đi kèm mức giá phai chang, Firebase đã và

đang, không chỉ là sự lựa chọn hàng đầu cho các lập trình viên đơn thân (single dev) hay các công ty khởi nghiệp (start ups), mà các công ty, tô chức lớn có tên tuôi cũng sử dụng “Firebase”

đề xây dựng các tính năng, các chương trình mới, cũng như chuyên đôi các dịch vụ trước đây sang hệ thống của Firebase Chẳng hạn như Shazam, Fabulous và cả chính Google nữa, khi nên tảng nhắn tin Allo được xây dung trén nén tang Firebase Realtime Database.Firebase, theo

hướng đi của Google, chính thức hỗ trợ Android, IOS, Web

II Uudiém

Như bạn có thê thấy, Firebase cung cấp rất nhiều dịch vụ hỗ trợ giúp các lập trình viên xây dựng ứng dụng của mình Việc tích hợp Firebase vào ứng dụng có thê giảm bớt công việc của

các lập trình viên, đặc biệt là cho các lập trình viên viết các ứng dụng có liên quan tới web

Hơn thế nữa, voi Test Lab, Crash Reporting, App Indexing thi Firebase sẽ báo cáo cho bạn các vấn đề có thê xảy ra khi ứng dụng của bạn chạy nhiều trên máy thật Cũng như Remote Config giúp bạn thay đôi các thiết lập trên ứng dụng của người dùng mà không cần thiết phải publish

1 phiên bản mới

1.2, Nhược điểm

Không có gì là hoàn hảo, và Firebase cũng không là ngoại lệ Điểm yếu duy nhất của Firebase chính là phần Realtime Database, mà đúng hơn chỉ là phần Database Cơ sở dữ liệu

Trang 7

của họ được tổ chức theo kiểu trees, parent-children, không phải là kiểu Table nên những ai

đang quen với SQL có thê sẽ gặp khó khăn từ mức đôi chút tới khá nhiều

Trong giai đoạn hiện tại, ứng dụng được chia thành 3 module nhỏ:

- _ Quản lý người dùng: Module này có chức năng liên kết dịch vụ chứng thực với cơ

sở dữ liệu Module đảm bảo việc đồng bộ giữa dịch vụ chứng thực và cơ sở đữ liệu

người dung khi chỉnh sửa một trong hai và phân cấp quyền truy cập cho các người dùng

- Quan ly task: Module dam bao viéc két hợp ba cơ sở dữ liệu task, người dùng, công

ty nhanh chóng và chính xác Module có chức năng là phân loại các task trên cơ sở

dữ liệu theo công ty, them task đúng công ty người dung

- Quan lý việc gia nhập công ty: Module có chức năng là tạo một xác nhận từ chủ

quản công đề một người dung khi mới tạo tài khoản có đề gia nhập công ty

2 Kết quả mong muốn

Ứng dụng có thê quản lý được công việc và năng suất của nhân viên theo từng dự án đề từ

đó đưa ra đánh giá về từng cá nhân Đồng thời tạo môi trường cho các nhân viên có thê trao

đồi

Với từng chức năng ta có kết quả mong muốn:

- Chat: Người dung có thể trò chuyện, chia sẻ file với nhau

Trang 8

- Chia nhiém vu: Nhan viên theo dõi được nhiệm vụ của mình được giao Quản lý có thể thêm, chỉnh sửa nhiệm vụ và giao cho nhân viên

- Chấm công: công ty được lịch làm việc của nhân viên Nhân viên có thể xin nghỉ

phép thông qua ứng dụng

3 Kết quả đạt được

Hiện tại, ứng dụng đã thực hiện được việc chứng thực và phân cấp quyền người dùng dựa vào dịch vụ Firebase Authentication Ứng dụng có cơ sở đữ liệu để quan lý các công ty, người dùng và các task

Hệ điều hành Android sử dụng nhân Linux đã được sửa đổi hỗ trợ Giao tiếp Inter-Process

(IPC) hiéu qua, được gọi la Binder Binder 1a kênh chính để giao tiếp giữa các ứng dụng và nói chuyện với các dịch vụ (hệ thống) (xem Phân IV dé thảo luận chuyên sâu về khuôn khô Binder) Trên cùng của hạt nhân tồn tai Android’s application framework, quản lý một loạt các dịch vụ

hệ thống và tạo điều kiện chia sẻ đữ liệu giữa các ứng dụng Các dịch vụ hệ thống làm phong phú thêm các ứng dụng với nhiều tính năng khác nhau, chang han như truy xuất vị trí GPS và chụp ảnh Các ứng dụng hệ thống được cài đặt sẵn mở rộng các tính năng đó bằng các API, ví

dụ: thực hiện cuộc gọi điện thoại và quản lý Danh bạ

Người dùng có thê mở rộng hơn nữa chức năng của thiết bị của họ với các ứng dụng của

bên thứ ba Đối với công việc này, các dịch vụ hệ thống liên quan nhất là:

ActivityManagerService (AMS), kiểm soát vòng đời của ứng dụng: PackageManagerService (PMS), duy trì siêu đữ liệu của ứng dụng bao gồm các đặc quyền; LocationManagerService (LMS), cung cấp quyên truy cập vào thong tin GPS cua thiết bị

Trang 9

Tất cả các ứng dụng, bao gồm cả các ứng dụng hệ thống, bao gồm bốn thành phân cơ bản: 1) Hoạt động là giao diện quản lý tương tác của người dùng: 2) Các dịch vụ thực hiện các hoạt động chạy lâu dài và có thê bị ràng buộc và gọi bởi các ứng dụng khác; 3) Nhà cung cấp nội dung quản lý quyền truy cập vào kho dữ liệu được lưu trữ trong ứng dụng: và 4) Máy thu phát sóng nhận và xử lý tin nhắn quảng bá từ hệ thống và các ứng dụng khác

Đề thực hiện được việc phân cấp quyên người dùng đồ án sử dụng giải pháp dựa trên cấp bậc quản lí trong công ty mà giao diện ứng dụng sẽ tương ứng cấp bậc quản lí của người dùng trong công ty Dựa trên dịch vụ Active Directory của Microsoft, mỗi công ty sẽ sẽ làm một domain, người dùng cần phải gia nhập vào domain đề có thê truy cập cơ sở đữ liệu của công

ty Trong công ty sẽ có ba cấp độ quyên là Root-Manager, Manager, Employee

Trong ba cấp độ quyền thì Root-Manager là những người dùng có quyền cao nhất Những người dùng này có thê chính là chủ của một doanh nghiệp, một công ty hoặc đơn giản chỉ làm trưởng nhóm của một dự án, họ có đầy đủ các quyền của các nhóm còn lại nhưng khác biệt lớn nhất là Root-Manager họ có thê cấp một xác nhận cho người dùng tham gia vào công ty (domain) và đồng thời cũng có thể xóa một người dùng bất kỳ ra khỏi công ty(domain)

Đảng II-1 Quyên truy cập của người dùng ở các Activity theo các cấp độ

Ở Hình I thì độ ưu tiên của ba quyền truy cập lần lượt 1a 1) Full, 2)Modify, 3) Read Người dùng với quyền Full sẽ sử dụng được hết các chức năng của Activity tương ứng trong bảng Những người dùng có Modify sẽ độ ưu tiên thấp hơn Full, người dùng với quyền truy cập nay không thể tác động đến các dữ liệu do Root-Manager tạo ra Người dùng chỉ có quyền Read thì chỉ có thể xem nội dung hiên thị trên Activity đang sử dụng mà không thê chỉnh sửa

b Chứng thực

Đề thực hiện được việc cấp quyền truy cập thì cần dùng đến một dịch vụ chứng thực người dùng đáng tin cậy Đồ án có sử dụng đến Platform back-end là Firebase của Google nên ta cũng

sẽ sử dụng đến dịch vụ chứng thực của FireBase là Firebase Authentication

Firebase Authentication cung cap cac dich vu backend, SDK dé str dung va thu vién giao diện người dùng được tạo săn đề xác thực người dùng với ứng dụng của bạn Nó hỗ trợ xác

Trang 10

thực bằng mật khâu, số điện thoại, nhà cung cấp danh tính liên kết phô biến như Google, Facebook và Twitter, v.v Firebase Authentication tích hợp chặt chẽ với các dịch vu Firebase

khác và nó tận dụng các tiêu chuân công nghiệp như OAuth 2.0 va OpenID Connect, vì vậy nó c6 thé dé dàng tích hợp với backend của bạn

Cách đề đăng nhập một người dùng vào ứng dụng, trước tiên Firebase Authentication nhận được thông tin xác thực từ người dùng Các thông tin đăng nhập này có thê là địa chỉ email và mật khâu của người dùng hoặc mã thông báo OAuth từ nhà cung cấp danh tính được liên kết Sau đó, Firebase Authentication chuyên các thông tin đăng nhập này cho SDK Xác thực ETirebase Các dịch vụ phụ trợ của Google sau đó sẽ xác mình các thông tin đăng nhập đó và trả lại phản hồi cho người dùng Sau khi đăng nhập thành công, ứng dụng có thê truy cập thông tin hồ sơ cơ bản của người dùng và ứng dụng có thê kiểm soát quyên truy cập của người dùng vào đữ liệu được lưu trữ trong các sản phâm Firebase khác Ứng dụng cũng có thé str dung ma thông báo xác thực được cung cấp đề xác minh danh tính của người dùng trong các dịch vụ phụ trợ của riêng ứng dụng

Firebase Authentication cung cap cho mỗi người dùng duy nhất một UID (User`s ID) tạo ngẫu nhiên không trùng nhau Dựa vào UID nảy ta có thê thiết một Database NoSQL có các collection liên kết nhau bằng UID

4.2, Thiết kế database

a Một số định nghĩa

SQL (viét tắt của Structured Query Language) là ngôn ngữ truy vấn cấu trúc Nó được

dùng để xử ly cơ sở dữ liệu quan hệ SQL được chia thành các mệnh đề, biểu thức, toán tử,

truy vấn và truy vấn con

Lập trình SQL có thể được sử dụng hiệu quả để chèn, tìm kiếm, xóa bản ghi, cap nhật cơ sở

dữ liệu SQL có thê làm được rất nhiều thứ, không giới hạn các việc như tối ưu hóa và duy trì

cơ sở dữ liệu Các cơ sở đữ liệu quan hệ như cơ sở dữ tệu MysSQL, Oracle, MS SQL, Sybase,

NoSQL (viết tắt của Non-Relationla SQL) được sử dụng với mục đích gần giống với SQL

Nhưng nó là đối với cơ sở dữ liệu không quan hệ, không yêu cầu một lược đồ cố định và dễ dàng mở rộng Cơ sở dữ liệu NoSQL được sử dụng cho các kho đữ liệu phân tán với nhụ cầu

lưu trữ dữ liệu không lồ NoSQL được sử dụng cho Big Data và các ứng dụng web thời gian

thực

Một hệ thống cơ sở dữ liệu NoSQL bao gồm một loạt các công nghệ cơ sở dữ liệu có thé

lưu trữ đữ liệu có cầu trúc, bản câu trúc, không có cầu trúc và đa hình

10

Trang 11

b So sanh vé loai hinh

SQL databases la co so dit liéu dựa trên bảng và các bảng này có quan hệ với nhau Chẳng

hạn thông tin books trong bảng được đặt tên books Mỗi một row ứng với một record, mỗi

column ứng với mỗi field dữ liệu

NoSQL databases có thê dựa trên cặp tài liệu, cặp khóa giá trị từng cặp một, cơ sở dữ liệu

biểu đồ

c Kho khan

Có thê nói, trong đồ án quản lý nhân viên, các thông tin, các dữ liệu đều dùng chung một cầu trúc Nên Database phù hợp với dé an 1a dang SQL Nhung thật không may về mặt chỉ phi, nhóm chúng em chưa tìm được mét Database dang SQL mién phi (Chi ding duge 6 local) Vì

vậy không thé tiếp tục theo dự kiến ban đầu

Xuất phát từ khó khăn đó, Chúng em đã có giải pháp thay thế đó là chuyên sang sử dụng NoSQL Database (cụ thê là Cloud FireStore của Google) Google đã cung cấp một NoSQL Database miễn phí

d Déi nét vé Cloud FireStore

Cloud Eirestore là một cơ sở dữ liệu linh hoạt, có thể mở rộng dé phat trién thiét bi di dong,

web và máy chủ từ Firebase và Google Cloud Giéng như Cơ sở đữ liệu thời gian thực của Firebase, nó giữ cho dữ liệu của bạn được đồng bộ hóa giữa các ứng dụng khách thông qua trình xử lý thời gian thực và cung cấp hỗ trợ ngoại tuyến cho thiết bị di động và web để bạn có

thể tạo các ứng dụng đáp ứng hoạt động bất kể độ trễ mạng hoặc kết nối Internet Cloud

Firestore cũng cung cấp khả năng tích hợp liền mạch với các sản phẩm Firebase và Google Cloud khác, bao gồm cả Chức năng dam mây

e Lợi ích khi dùng NoSQL

Tuy phải chuyên từ SQL sang NoSQL Database về mặt kinh tế nhưng không thê phủ nhận tầm quan trọng cũng như những lợi ích của NoSQL trong thời đại công nghệ hiện nay Như ta

có thê thấy, Google, Facebook, Amazon, v.v., phải xử lý khối lượng dữ liệu cực lớn Thời gian

phản hồi của hệ thống trở nên chậm khi sử dụng RDBMS cho khối lượng lớn đữ liệu Đề giải

quyết vấn đề này có thê dùng giải pháp '““mở rộng quy mô” hệ thống của mình bằng cách nâng cấp phân cứng hiện có Tuy vậy, quá trình này là rat tốn kém Giải pháp thay thé cho van dé này là phân phối tải cơ sở dữ liệu trên nhiều máy chủ bất cứ khi nào tải tăng lên Phương pháp nay dugc goi la “scaling out” va NoSQL đáp ứng được nhu cầu này

Ngoài ra, NoSQL có những lợi ích khác so với SQL:

- Tốc độ phát triển với cơ sở dữ liệu NoSQL có thể nhanh hơn nhiều so với cơ sở dữ liệu SQL: Cơ sở dữ liệu NoSQL cho phép các đeveloper kiêm soát cầu trúc của đữ liệu nên rất

11

Trang 12

phủ hợp với các phương pháp phát triển Agile hiện đại dựa trên việc phat trién nhanh, lặp lại nhanh và cập nhật code thường xuyên Đối với CSDL quan hệ SQL, khi developer yêu cầu

người quản trị cơ sở đữ liệu SQL thay đôi cầu trúc của cơ sở đữ liệu thì tải lại dữ liệu, chỉnh

sửa code có thê làm chậm quả trình phát triển,

- Cấu trúc của nhiều dạng dữ liệu khác nhau được xử lý và phát triển đễ dàng hơn với

cơ sở dữ liệu SQL: Cơ sở dữ liệu NoSQL phù hợp đề lưu trữ và mô hình hóa dữ liệu có cầu

trúc, bán cầu trúc và phi cầu trúc trong một cơ sở đữ liệu Cơ sở dữ liệu NoSQL lưu trữ dữ liệu

ở dạng tương tự như các đối tượng được sử dụng trong các ứng dụng, giảm nhu cầu dịch từ

dạng dữ liệu được lưu trữ sang dạng dữ liệu lấy trong code

- Khi cơ sở dữ liệu SQL không đáp ứng được nhu cầu lưu trữ dữ liệu lớn: Cơ sở dữ liệu NoSQL được tạo ra dé xử lý đữ liệu lớn như một phân của kiến trúc cơ bản của chúng Cơ sở

dữ liệu NoSQL thường dựa trên chiến lược mở rộng quy mô (scale-out strategy), giúp cho việc

mở rộng quy mô đến khối lượng dữ liệu lớn rẻ hơn nhiều so với khi sử dụng phương pháp mở

rộng quy mô mà cơ sở dữ liệu SQL thực hiện

- Khi hệ thống có lượng truy cập cao và không cho phép downtime: Chiến lược mở rộng quy mô (scale-out) được sử dụng bởi hầu hết các cơ sở dữ liệu NoSQL cho phép chúng ta hoạch định được kế hoạch rõ ràng về việc mở rộng lưu lượng truy cập Các kiến trúc mở rộng quy mô cũng mang các lợi ích như có thê nâng cấp cơ sở dữ liệu hoặc thay đôi cầu trúc của nó

mà không cần thời gian downtime

- Các mô hình ứng dụng mới có thể được hỗ trợ dễ dàng hơn: Khả năng mở rộng của cơ

sở dữ liệu NoSQL cho phép một cơ sở dữ liệu phục vụ cả tác vụ nghiệp vụ (transactional) và

phân tích từ cùng một cơ sở dữ liệu Trong cơ sở dữ liệu SQL, thông thường, một data

warehouse riêng biệt được sử dung đề hỗ trợ phân tích

Tuy những lợi ích nảy chưa thê ứng dụng vào đồ án hiện tại nhưng ta có thê tin rằng kiến thức đó sẽ rất hữu ích trong doanh nghiệp, một tập đoàn công nghệ lớn, hay chỉ một công ty quản lí nhỏ vì thời đại đã chuyên dần đến lưu trữ đám mây

12

Trang 13

f Thiết kế NoSQL Database:

Cloud Firestore

Companys Collections

Hình I-2 Cầu trúc database

Tận dụng những tiện ích từ Firestore, ta thiết kế một NoSQL Database thay thé cho SQL

Database Tao 3 collections nhu Companys, Tasks va Users

+ Companys: Ta sé cho mot auto ID cho document chia field tén cua cong ty

+ Tasks: Tir ID da tao 6 Companys Collection, ta chu dong dat cho Tasks Collection vi ta

sé quan ly task tương ứng với từng công ty Trong document sẽ có tiếp l collections tên là AlITask Trong AlITask sẽ chứa danh sách tất cả cdc task (document) cha công ty với những

ID ngẫu nhiên Trong từng task sẽ có chung cấu trúc các field bên trong như: Tilte, Content,

Description, Deadline, Status, Host, va 1 collection members chira danh sach thành viên tham

gia

+ Users: Trong Users collection, cac ID sé duge dat theo UID khi tạo tài khoản đăng nhập

& Authentication ( nơi xác thực tài khoản mật khâu) Trong document chứa các field có cầu tric giéng nhau nhuw: company, email, firstname, lastname, level

Việc sử dụng lại các ID đề thuận tiện truy vấn dữ liệu đồng thời dễ dàng quản lí các thông tin như sử dụng dạng bảng khi dùng SQL Thay thế các cột thông tin ở dạng bảng (SQL) thành

các fñeld dữ liệu (NoSQL)

Hiện tại, tuy đã khắc phục được vấn đề không sử dụng được SQL Database nhưng việc sử dụng NoSQL để lại một số vấn đề như: Code truy vấn ,cập nhật va set dữ liệu tương đối dài (đặc biệt khi kết hợp nhiều subcollection), kiêm tra dữ liệu khó khăn

4.3 Đồng bộ các tiến trình trên ứng dụng -

a Taisao sw dung Main Thread va Worker Thread trong do án này?

Android là hệ điều hành đa tiến trình, da luồng Các ứng đụng Android cũng có thê sử dụng được nhiều thread (luồng) tài nguyên hệ thống

13

Trang 14

Tuy nhién cac thanh phan lién quan dén giao dién nguwoi ding déu duoc nhét chung vao mét thread chinh, goi la UI Thread (hay Main Thread)

Cac thao tac xu ly nang hau hết đều bị cắm thực thi trên Main Thread do sẽ gây ra trải

nghiệm xấu cho người dùng (bấm nút không lên, treo máy) Do đó chúng em đưa các tác vụ

này vào một Thread khác, gọi là Worker Thread

Khi một ứng dụng Android được khởi chạy, thì hệ thống Android sẽ start một New Linux

Process cho ứng dụng đó cùng với một Thread duy nhất đề thực thi Vậy là có cả Process và

Thread đều được sinh ra

Mỗi Process cung cap tài nguyên cần thiết để thực thi chương trình Mỗi Process có một

không gian địa chỉ ảo, có các mã thực thị, có các lệnh xử lý các đối tượng hệ thống, một ngữ cảnh bảo mật, kích thước làm việc tối thiểu và tối da, va phải có ít nhất một Thread thực thi Một Thread là một thực thê trong mét Process, la đối tượng được lên kế hoạch để thực thi

Trong Process thường sẽ có nhiều Thread và tất cả các Thread này sẽ chia sẻ không gian địa chỉ ảo và tài nguyên hệ thống trong Process Ngoài ra mỗi Thread lại có công việc riêng của

nó đó là: duy trỉ xử lý ngoại lệ, ưu tiên lập lịch trình, lưu dữ cục bộ luồng Môi trường Thread

có thê bao gồm: phân đăng kí Thread với máy chủ, nhân stack, quan trọng là có một môi trường (Thread cũng có ngữ cảnh riêng của nó)

14

Trang 15

ec Main Thread va UI Thread, Worker Thread

Trong Android, khi chương trình được khởi chạy, hệ thống sẽ start một Thread ban đầu cùng

với một Process Thì Thread đó chính là Main Thread Vì thế Main Thread lại thường được gọi

là UI Thread thì có 2 lý do chính dang sau đây:

Thread này có nhiệm vụ gửi các sự kiện đến widget, tức là đến các view ở giao diện điện

thoại, thậm chí cả các sự kiện vẽ Ngoài ra Thread này cũng phải tương tác với bộ công cụ Android UI (Android UI toolkit) gồm hai gói thư viện là android.widget và android.view

Còn một trường hợp nữa là Worker Thread, chính là Thread mà bạn tạo thêm cho chương

trình đề nó thực thi một công việc nào đó không liên quan đến giao diện, Thread này cũng được goi la Background Thread

d Hién twgng ANR trong Android

Khi có nhiều thứ thực thi trên UI Thread, và có một công việc gì đó cần phải thực hiện lâu

như kết nối mạng hay truy vấn cơ sở đữ liệu, khi đó UI sẽ bị block Người dùng cảm thấy như

ứng dụng đang bị treo, nhưng thực ra nó đang thực thị công việc của minh trén UI Thread Nếu

UI bj block hơn vải giây (trung bình là 5 giây) thì hệ thống Android sẽ xuất hiện hộp thoại như trên, cho phép người dùng có thê đóng chương trình hoặc chờ đợi Nếu như ứng dụng thường xuyên có những hiện tượng như vậy thì sẽ bất tiện cho người dùng Chính vì vậy, đề không xảy

ra hiện tượng trên thì Android là đề ra 2 rules sau đây yêu cầu lập trình viên phải tuân theo:

e Không được block UI Thread

e Không được kết nối tới bộ công cụ Android UI (Android UI toolkit) tir mét Thread

khong phai la UI Thread

e Handler

La một đối Android cung cấp dùng đê liên kết, trao đổi giữa các Thread với nhau, là trao đổi giữa Thread sinh ra Handler và các Thread khac Thuong 14 Main Thread (UI Thread) với cac Worker Thread (Background Thread) Handler có nhiệm vụ gửi và thực thi cac Message hoặc Runnable tới Message Queue cua Thread sinh ra nó (Handler) Handler luôn được gắn kết với một Thread (Thread sinh ra nó) cũng với Message Queue (của Thread đó) Các Message

và Runnable sẽ được thực thị khi đi ra khỏi Message Queue Có 2 nhiệm vụ mà Handler thường

làm đó là:

e Lên lịch thực thi các Message và Runnable ở các thời điểm trong tương lai

° Sắp xếp một hành động được thực hiện trong một Thread khác

15

Trang 16

f AsyncTask

AsyncTask là một đối tượng thích hợp dùng để giao tiếp giữa một Thread với UI Thread,

nó rất dễ dùng Nó cho phép thực hiện công việc ở background và sau đó cập nhật giao điện ở

UI Thread AsyncTask chính là sự tổ hợp của một Thread và một Handler

AsyncTask là một đối tượng có 3 tham s6 Generic Type truyền vao

la Params, Progress, Resultva 4 phương thức onPreExecute(), dolnBackgroundQ, onProgressUpdate(), onPostExecute()

Background thread Main/UI thread

Hinh I-4 Cac phương thức của AsyncTask

Ba tham số đều phải la kiéu Object, néu khong co thi dé la Void Trên hình vẽ có thê thấy chi co doInBackground() chạy ở background, còn 3 phương thức còn lại chạy trên UI Thread Khi cho một lớp kế thừa từ AsyncTask bắt buộc phải override phương thức doInBackground()

Params là tham số có thể được nhận từ execute(), co thể là một mảng các tham số con và

Params sé 1a input cua doInBackground(), Process la input của onProgressUpdate(), đầu ra nay nhận từ doInBackground() thông qua phương thitc publishProgress() onProgressUpdate() co thê cập nhật giao diện lúc runtime Result la dau ra cua doInBackground() va chinh là kết quả trả về ở onPostExecute() AsyncTask chạy trên Worker Thread còn Handler chạy trên Main Thread (hay Thread sinh ra nó)

4.4 Đồng bộ cơ sở dữ liệu với Chat

a Mục tiêu của dịch vụ Chat

Trong môi trường làm việc, sẽ có những trường hợp cân sự trao đôi giữa nhân viên với

nhân viên, quản ly với nhân viên Dịch vụ Chat thực hiện được các tác vụ tạo hội thoại trao đôi

giữa các đối tượng trong cùng một công ty, xử lý thao tác đánh dấu và đã xem, thông báo tin nhắn mới, gửi/tải các file phương tiện, thực hiện cuộc gọi giữa các thành viên trong công ty

16

Trang 17

b Quy trình nhắn tin

-_ Đăng nhập tài khoản người dùng Firebase

- Ung dung của bạn nhận được một tin nhắn

-_ Mở đoạn hội thoại, tin nhắn vừa nhận xuất hiện trên khung chat Sau đó ứng dụng sẽ đánh dấu là đã đọc

- Nhập văn bản, nhân gửi, văn bản vừa nhập hiển thị trên khung chat Tin nhắn lưu trữ vào

cơ sở dữ liệu theo thời gian thực Firebase

-_ Khi nhấn gửi, ứng dụng của đối phương sẽ nhận được thông báo và quy trình quay lại

bước một

Gui tin nhan

c

User1 nhận thông báo Tầnh 11-5 Quy trình nhắn tin

Định nghĩa bố cục

- _ Tập tin Activity_Chat.xml với thành phân gốc là RelativeLayout sẽ được ràng buộc với Activity_Chatjava để xác định nội dung của màn hình chính của dịch vụ Bố cục gốm:

o_ Một danh sách hiển thi tất cả các tin nhắn chat trong cùng một công ty theo thứ

tự thời gian o_ Một trừng input nơi người dùng có thê nhập tin nhắn mới o_ Một nút mà người dùng có thê nhắn vào đề gửi tin nhắn

- _ Tập tin message.xmI sẽ đóng vai trò chuyề đến phân tạo bố cục cho các tin nhắn chat với thành phần gốc là RelativeLayout

17

Ngày đăng: 26/09/2024, 17:27

TỪ KHÓA LIÊN QUAN

w