Như đã được miêu tả trong phần 6.1.3.3, agent có thể tương tác trực tiếp với dịch vụ mà cung cấp Service Helper. Để minh họa làm sao mà một dịch vụ có thể cung cấp một helper, the Logging Service được mở rộng để cho phép agent thay đổi thuộc tính verbose của nó.
Một phong cách lập trình được khuyến cáo ở đây bao gồm định nghĩa giao diện LoggingHelper mở rộng từ lớp ServiceHelper và một lớp nội LoggingHelper của lớp dịch vụ chính. Giao diện LoggingHelper có thể là các dòng sau:
1: package bookTrading.logging; 2:
3: import jade.core.*; 4:
5: public interface LoggingHelper extends ServiceHelper { 6: public void setVerbose(boolean verbose);
7: }
Một dịch vụ cung cấp một helper bằng cài đặt phương thức getHelper của giao diện Service. Phương thức này được gọi mỗi khi một agent lấy helpẻ cho dịch vụ đó lần đầu tiên. Điều này cho phép dịch vụ sử dụng một đối tượng helper cho tất cả agent hoặc một helper cho mỗi agent. 1: . . .
2: private ServiceHelper helper = new LoggingHelperImpl(); 3: . . .
4: public ServiceHelper getHelper (Agent a) { 5: return helper;
6: } 7: . . .
8: public class LoggingHelperImpl implements LoggingHelper { 9: public void init(Agent a) {
10: } 11:
12: public void setVerbose (boolean v) { 13: verbose = v;
14: } 15: } 16: . . .
Phương thức init() được định nghĩa ở dòng 9 là phương thức duy nhất bao gồm giao diện ServiceHelper và được gọi trước khi trả về một đối tượng helper cho một agent yêu cầu nó ở lần đâu tiên. Khi sử dụng đối tượng helper cho mỗi agent, nó cho phép liên kết đối tượng helper với agent được liên kết với nó. Vì trong trường hợp này, một đối tượng helper đơn được sử dụng cho mọi agent, nên thân của nó rỗng.
CHƯƠNG 7
PHÁT TRIỂN HỆĐA AGENT
VỚI PHƯƠNG PHÁP LUẬN MaSE VÀ JADE
Chương này bàn về vấn đề sử dụng phương pháp luận MaSE kết hợp với Jade khi phát triển các hệ phân tán trong thế giới thực. Cho đến nay có rất nhiều phương pháp luận cũng như rất nhiều khung (framework) được phát triển để xây dựng các hệ đa agent phức tạp. Một số phương pháp luận như Gaia, Tropos, Ingenias, MaSE (Multi-agent Systems Engineering)…và một số khung như TuCSoN (TUple Centre Spread Over the Network), JADE (Java Agent DEvelopment Framework), Jadex, DESIRE (Design and Specification of Interacting Reasoning components)… đã được giới thiệu. Chương này tập trung trình bày phương pháp luận MaSE kết hợp với nền tảng JADE và một case study Quản lý Hội thảo. Hệ thống này cho phép các tác giả gửi bài báo đến hội đồng và cho phép hội đồng gán trách nhiệm cho các thành viên tham gia nhận xét. Sau đó hệ thống đưa ra quyết định chấp nhận bài báo hay không. Lý do lựa chọn MaSE là vì phương pháp này khá gần gũi với những người đã từng phát triển các hệ thống theo cách tiếp cận hướng đối tượng và lý do lựa chọn JADE là vì đây là một framework dễ sử dụng, đã trở thành chuẩn công nghiệp để phát triển các hệ đa agent phức tạp và đặc biệt là tạo thuận lợi cho những người đã từng lập trình bằng ngôn ngữ Java.