3.3.1.1 Thiết kế CSDL
a) Các bảng dữ liệu dùng cho việc giám sát taxi
Dưới đây là danh sách các bảng CSDL liên quan đến các chức năng: Giám sát taxi: Theo dõi tình trạng, tọa độ, loại xe... trên bản đồ. Quản lý liên lạc giữa taxi và tổng đài: Liên lạc, cảnh báo, tắc đường... Quản lý phiên làm việc của lái taxi trong ngày.
Hình 12: Các bảng dữ liệu cho mục đích giám sát taxi Mô tả các bảng
Bảng Xe: Lưu trữ thông tin về toàn bộ taxi trong hệ thống
Bảng LoaiXe: Lưu thông tin các loại xe và đặc điểm từng loại xe
Bảng TrangThaiXe: Lưu các trạng thái xe, xe có 5 trạng thái là đang chở khách, đang rảnh rỗi, đang đi đón khách, đang Idle và đang offline.
Bảng NguoiQuanLyXe: Lưu thông tin về người quản lý xe
Bảng ThongDiepXe: Lưu trữ thông điệp từ tổng đài gửi đến cho các xe Bảng TinTuc: Lưu các thông báo của comet(webservice notification)
Bảng ThongTinLamViec: Lưu thông tin về các phiên làm việc của xe và lái xe
Bảng NguoiLaiXe: Lưu thông tin người lái xe Bảng TacDuong: Lưu thông tin các điểm tắc đường
Để xem các thông tin cụ thể về từng trường trong bảng, xin vào phần phụ lục 1.
Hình 13: Toàn cảnh các bảng trong cơ sở dữ liệu
Trên đây là mô hình toàn cảnh các bảng trong CSDL. Theo như phân bố các chức năng của hệ thống thì ta chia các bảng này thành các nhóm khác nhau:
Nhóm giám sát taxi: Gồm các bảng như Xe, LoaiXe, TrangThaiXe, TacDuong, ThongTinLamViec.
Nhóm quản lý khách hàng: Gồm các bảng KhachHangTamThoi, KhachHang và bảng NguoiLaiXe
Nhóm thông tin liên lạc: Gồm các bảng ThongDiep, KieuThongDiep, TinTuc, ThongDiepXe
Nhóm quản lý người dùng: Gồm các bảng như Login, NguoiDieuHanh, NhanVienTongDai, NguoiQuanLyXe.
3.3.1.2 Thiết kế server và mô tả phương thức làm việc a) Thiết kế sơ đồ Class tổng quát
Dưới đây là sơ đồ thiết kế lớp của server điều phối và quản lý taxi. Sơ đồ này được chia thành ba phần theo thiết kế kiến trúc đã chỉ định sẵn. Mỗi phần có chức năng và nhiệm vụ riêng sẽ được trình bày cụ thể bên dưới.
Nhiệm vụ của server, về tổng quát thì để nhận các yêu cầu từ phía web client hoặc device. Chuyển các yêu cầu đó từ khối interface sang khối BusinessLogic để xử lý. Khối này có nhiệm vụ chuẩn bị các dữ liệu cần thiết, mã hóa, gửi sang khối DataAccess để lưu trữ dữ liệu hoặc để truy xuất dữ liệu.
Hình 14: Sơ đồ thiết kế class ứng dụng cho tổng đài b) Khối Interface layer
Khối Interface layer nằm tận cùng bên phải của hệ thống, đây là khối giao tiếp chính của hệ thống với bên ngoài. Bao gồm có giao tiếp với thiết bị Android, giao tiếp với web client. Theo quan sát trong hình thì khối này gồm có hai class chính là interface_provider và service_provider.
interface_provider
Có thể được gọi là cổng giao tiếp của web client, nơi đây chứa các phương thức để xử lý các JSON_REQUEST từ phía web client gửi lên. Sau đó, tùy vào loại message mà class này sẽ gọi các phương thức tương ứng từ các class thuộc khối BusinessLogic. Khối này còn làm nhiệm vụ đóng gói các kết quả thu được thành JSON_OBJECT để gửi về cho web client.
service_provider
Tương tự như class trên, đây là class cung cấp các phương thức giao tiếp với thiết bị thông qua các chuẩn của webservice. Class này cài đặt NUSOAP, vốn là một class hỗ trợ webservice cho PHP. Với NUSOAP, ta có thể đăng kí các phương thức muốn tạo service, và NUSOAP sẽ tự động sinh file WSDL cho ta.
Sơ đồ thực hiện được hiểu như sau:
Hình 16: Service provider c) Khối BusinessLogic layer
BusinessLogic là khối xử lý thông tin chính của server. Khối này nằm trung gian giữa khối DataAccess và Interface, chứa các controller để thực hiện các xử lý thông tin thu nhận từ server. Khối này gồm các controller class như sau:
CarController: Class này chuyên dùng để xử lý các thông tin liên quan đến taxi. Bao gồm có các phương thức:
o getTaxiInfo(): Phương thức này dùng để gọi thông tin các taxi, bao gồm thông tin về mã xe, tọa độ, đặc điểm.
o insertTaxiInfo(): Cập nhật thông tin taxi
MessageController: Class này chuyên dùng cho việc xử lý các tin nhắn qua lại giữa taxi và tổng đài, bao gồm:
o Tin nhắn liên lạc: deviceGetMessage(), deviceSendMessage()
o Các tin nhắn điều phối xe: insertNewDispatchData(), checkForNews()
d) Khối DataAccess layer
DataAccess là khối dùng để thực hiện các truy xuất CSDL. Khối này nằm trong cùng, có nhiệm vụ thiết lập các kết nối đến CSDL MySQL, nhận các lệnh truy xuất từ phía server và tạo các truy vấn đến CSDL. Khối này có 3 thành phần chính:
DBController: Chứa các phương thức xây dựng các truy vấn phù hợp, trả các rows kết quả thu nhận được từ CSDL cho khối BusinessLogic.
DBConnector: Chứa hai phương thức cơ bản là executeQuery và executeUpdate.