CHƯƠNG 3: THỰC NGHIỆM ỨNG DỤNG ĐÁNH GIÁ VÀ THU THẬP THÔNG TIN
3.1. Mô hình bài toán
3.1.2. Quản lý người dùng
Phía máy khách là một ứng dụng web thực hiện chức năng giao tiếp với người dùng thông qua giao diện trên trình duyệt và qua mạng Internet. Một số chức năng chính mà ứng dụng web cung cấp cho người dùng sử dụng như sau:
Hình 3.3: Biểu đồ ca sử dụng của người dùng.
Mô tả một số ca sử dụng quan trọng:
Chức năng xem các kết quả:
- Mô tả: ca sử dụng mô tả việc người dùng theo dõi các kết quả tìm kiếm tự động của hệ thống.
- Luồng sự kiện: ca sử dụng bắt đầu khi người dùng đăng nhập thành công vào hệ thống. Trên ứng dụng web sẽ hiển thị danh sách các từ khóa mà người dùng đăng kí, khi click vào bất kì từ khóa nào, ứng dụng web sẽ hiển thị tất cả kết quả mới nhất liên quan.
- Quan hệ: ca sử dụng này phải <<include>> ca sử dụng đăng nhập.
- Yêu cầu: người dùng đã đăng kí ít nhất 1 từ khóa.
Chức năng thêm từ khóa mới:
- Mô tả: ca sử dụng mô tả việc người dùng muốn thêm từ khóa tìm kiếm vào tài khoản của mình.
- Luồng sự kiện: người dùng chọn phần “Thêm từ khóa”. Sau đó nhập từ khóa mà mình mong muốn vào form.
- Quan hệ: ca sử dụng này phải <<include>> ca sử dụng đăng nhập.
Chức năng dừng\bắt đầu theo dõi từ khóa:
- Mô tả: ca sử dụng mô tả việc người dùng muốn dừng theo dõi hoặc bắt đầu theo dõi một từ khóa đã dừng.
- Luồng sự kiện: người dùng chọn phần “Xem thông tin cá nhân” để xem thông tin chi tiết về tài khoản và các từ khóa của mình. Trong cột Status người dùng chọn “Started” để dừng theo dõi một từ khóa đang được theo dõi. Và “Stopped” để bắt đầu theo dõi một từ khóa đang bị dừng.
- Quan hệ: ca sử dụng này phải <<include>> ca sử dụng đăng nhập.
Ứng dụng web đƣợc xây dựng trên framework Struts 2 theo mô hình MVC nên các lớp đƣợc chia thành các tầng Model, Controller, View rõ ràng:
- Tầng Model chứa các model của hệ thống, tương ứng với mỗi model sẽ là một bảng với các trường tương đương trong hệ quản trị cơ sở dữ liệu MySQL. Gồm các class:
Bảng 3.1: Các class trong package Model
- Tầng Controller chứa các hàm điều khiển, so sánh. Tầng Action chứa các action của hệ thống xử lý các yêu cầu từ các trang View của người dùng. Gồm các class sau:
Tên class Mô tả
ResultModel Gồm các thuộc tính của các tin bài kết quả: id, title, description, displayUrl, url, sourceCode.
Keyword Gồm các thuộc tính của từ khóa: id, keyname.
User Gồm các thuộc tính của người dùng: id, username, password, email.
TrendModel Gồm các thuộc tính của các từ khóa hot: trend_id, name, searches, url.
Bảng 3.2: Các class trong package Controller
Tên class Mô tả
ArticleController
Xử lý các action liên quan đến các tin bài nhƣ hiển thị, phân trang, thêm, xóa từ khóa, ..
UserController
Xử lý các action liên quan đến người dùng như đăng kí tài khoản, đăng nhập đăng xuất.
- Tầng View là các JSP hiển thị giao diện, kết quả cho người dùng theo dõi, tương tác.
- Ngoài ra trong hệ thống theo dõi thông tin trên Internet còn có thêm một tầng DAO chịu trách nhiệm xử lý các truy vấn liên quan trực tiếp đến cơ sở dữ liệu nhƣ các truy vấn SELECT, UPDATE, INSERT, … gồm các class:
Bảng 3.3: Các class của package DAO
Tên class Mô tả
ArticleDao Gồm các hàm xử lý việc lấy, thêm, update các trường dữ liệu trong cơ sở dữ liệu lưu trữ các tin bài.
ReferenceDB Gồm các hàm xử lý việc truy vấn đến cơ sở dữ liệu lưu trữ các từ khóa.
UserDAO Gồm các hàm xử lý việc truy vấn đến cơ sở dữ liệu quản lý người dùng.
- Và package Util chứa các hàm dùng chung của cả hệ thống nhƣ hàm connect đến cơ sở dữ liệu, và file cấu hình, gồm các class:
Bảng 3.4: Các class của package Util
Tên class Mô tả
Config Chứa các biến final của chương trình
ConnectDB Chứa hàm kết nối đến cơ sở dữ liệu MongoDB.
ConnectMySQL Chứa hàm kết nối đến cơ sở dữ liệu MySQL.
Mỗi class chứa các hàm để thực hiện các chức năng khác nhau. Trong đó có hai chức năng quan trọng cơ bản là hiển thị các kết quả tìm kiếm cho người dùng, và chức năng quản lý người dùng của hệ thống. Các class chính cho các chức năng hiển thị kết quả cho người dùng như trong biểu đồ lớp sau:
Hình 3.4: Biểu đồ lớp chức năng liên quan đến tin bài.
Vai trò của một số hàm chính trong biểu đồ lớp trong Hình 3.4 trên:
- Khi người dùng muốn xem các tin bài liên quan đến một từ khóa nào đó, lệnh thực hiện từ các tầng View là các trang jsp, nó sẽ gọi Action tương ứng là retrieve() trong class ArticleAction. Action sẽ gọi hàm retrieve() của class ArticleController, lớp controller sẽ quyết định hành động tiếp theo của chương trình, và cuối cùng trả về kết quả cho trang View.
- Người dùng có thể xem trực tiếp trang web gốc của kết quả, hoặc có thể xem bản sao lưu mà hệ thống đã lưu trữ tại thời điểm tìm kiếm thông qua action retrieveAContent().
Biểu đồ lớp của các chức năng quản lý người dùng:
Hình 3.5: Biểu đồ lớp của các chức năng quản lý người dùng.
Các hàm phục vụ một số chức năng chính nhƣ là
- Chức năng đăng nhập: người dùng sẽ gọi action login(), trước tiên trong action đó sẽ gọi các hàm validateFromLogin() để kiểm tra định dạng của các trường username và password. Sau đó sẽ quyết định hành động tiếp theo.
- Tương tự với chức năng tạo người dùng mới, action register() sẽ hoạt động để kiểm tra định dạng của form. Sau đó sẽ quyết định hành động tiếp theo là cho phép đăng kí thành công, hoặc đăng kí thất bại.
- Chức năng thêm keyword mới vào danh sách các keywords của người dùng qua action addKeyword(). Tương tự, hàm addKeyword() của tầng Controller sẽ đƣợc gọi và nó sẽ quyết định hành động tiếp theo.
- Tương tự như vậy, chức năng xóa keyword nào đó của người dùng qua action deleteKeyword().
- Chức năng tạm dừng hoặc khởi động lại việc theo dõi một từ khóa nào đó thông qua Action changeStatus().
Ngoài ra, ứng dụng web còn lấy và hiển thị những từ khóa đƣợc tìm kiếm nhiều nhất được google thống kê trên Google xu hướng[3] thông qua lớp Action TrendsAction, và TrendsModel.