Lớp TrainAgent có một số phương thức cơ bản sau:
Train find(Tupe tupe, String userAgentName)
Tìm kiếm chuyến tàu phù hợp với các ràng buộc bổ sung trong tham số tupe. Tham số thứ hai là tên của agent khách hàng. Nếu tìm được, trả về một chuyến tàu, nếu không sẽ trả về NULL.
Train refind(String userAgentName)
Tìm kiếm chuyến tàu mới mà không bổ sung thêm ràng buộc nào. Tham số duy nhất là tên của agent khách hàng. Nếu tìm được, trả về một chuyến tàu, nếu không, trả về NULL.
TrainReward reward(String userAgentName)
Tìm kiếm khuyến mại của một chuyến tàu vừa giới thiệu cho khách hàng được định danh trong tham số userAgentName. Nếu có, trả về kiểu khuyến mại của chuyến tàu, nếu không sẽ trả về NULL.
Trainfull deal(String userAgentName):
Tìm kiếm thông tin đầy đủ về chuyến tàu vừa được khách hàng chấp nhận, khách hàng này được định danh qua tham số userAgentName.
d. Cơ sở dữ liệu
Cơ sở dữ liệu của TrainAgentđược tổ chức như Hình 7.13. Trong đó:
Bảng Login: quản lí các thông tin đăng nhập hệ thống và tài khoản trong hệ thống của các nhà ga.
Bảng Route: Thông tin về chặng đường (nơi đi, nơi đến) của mỗi chuyến tàu. Bảng Train: Thông tin về mỗi chuyến tàu: tên, thời gian chạy trên mỗi chặng... Bảng Cost: Thông tin về các vị trí chố ngồi trên mỗi chuyến tàu: hạng của ghế, giá vé...
Bảng Capacity: Lưu thông tin về số chỗ trống của mỗi hạng vé trên mỗi chuyến tàu.
Bảng Reward: Hình thức khuyến mại có thể có của mỗi chuyến tàu. Bảng Presented: Lưu các chuyến tàu đã giới thiệu cho khách hàng. Bảng Exception: Lưu các chuyến tàu đã bị từ chối của mỗi khách hàng.
Bảng UserRequest: Lưu các yêu cầu ràng buộc của khách hàng về chuyến tàu họ muốn đi.
Bảng Result: Lưu kết quả thương lượng thành công với khách hàng.
7.3.4 MatchAgent
MatchAgent là một dạng agent đặc biệt:
− Không trực tiếp giao tiếp với con người hay các nguồn điều khiển trực tiếp từ bên ngoài khác, chỉ giao tiếp với các agent trong hệ thống
− Chỉ chạy nền cho hệ thống, được sinh ra khi khởi tạo hệ thống và chỉ chết đi khi hệ thống ngừng hoạt động.
MatchAgent có hai chức năng chính: − Quản lí các agent trong hệ thống.
− Môi giới cho thương lượng giữa UserAgent với HotelAgent và TrainAgent.
a. Mô hình kiến trúc
Kiến trúc bên trong của MatchAgent được mô tả trong Hình 7.14, bao gồm:
Bộ tạo thông điệp Message Creator: tạo ra các thông điệp để gửi đi các agent khác. Bộ xử lí thông điệp message processor xử lí và lọc các thông điệp nó nhận được.
Bộ đối sánh sự phù hợp Match Compare: làm nhiệm vụ đối sánh sự khả hợp giữa UserAgent với HotelAgent và TrainAgent. Bộ này cần sự trợ giúp của bộ xử lí truy vấn Search Query.
để cập nhật các thông tin về các agent khi chúng gửi thông báo đăng kí đến.
b. Sơ đồ hoạt động
Hình 7.15 mô tả mối quan hệ giữa các phương thức chính của lớp MatchAgent:
− Nếu nhận được thông tin đăng kí của HotelAgent thì gọi phương thức
saveHotel(HotelAddress) để lưu lại địa chỉ và khả năng của agent đó, phục vụ công việc môi giới sau này.
− Tương tự, khi nhận được thông điệp đăng kí của các TrainAgent thì gọi phương thức saveTrain(TrainAddress) để lưu lại khả năng và địa chỉ của các agent đó.
− Nếu nhận được yêu cầu môi giới của UserAgent thì gọi hai phương thức:
searchHotel(Location) và searchTrain(Location). Phương thức
searchHotel(Location) dùng để tìm ra HotelAgent có thể cung cấp dịch vụ Hotel cho UserAgent. Còn phương thức searchTrain(Location) dùng để tìm ra TrainAgent có thể cung cấp dịch vụ tàu hoả cho UserAgent.