Dịch vụ thông báo sự kiện (event notification service) và mô hình công cụ JADE

Một phần của tài liệu Phát triển phần mềm hướng Agent (Trang 62 - 64)

Dịch vụ thông báo sự kiện (ENS) là một dịch vụ ở mức platform quản lý các thông báo phân tán của tất cả các sự kiện được sinh ra bởi mỗi node của platform. Dịch vụ này được gọi là

jade.core.event.Notification, được cài đặt trong gói jade.core.event và được khởi chạy mặc định

trong mỗi container. Mỗi khi có một sự kiện được sinh ra bởi một container, nó sẽ bị chặn bởi ENS và được định tuyến tới mọi agent đã đặt trước để được thông báo về các kiểu sự kiện. Nếu không có agent nào đặt trước thì ENS có hiệu năng không đáng kể. Thực tế, những node có hiệu năng thấp (do việc thông báo sự kiện) là container nơi cư trú của các agent đã đặt trước và là container sinh ra sự kiện được thông báo. Vì tất cả các agent công cụ có thể hoạt động khi cần, thậm chí tại thời điểm chạy trong quá trình vận hành platform, việc cải thiện hiệu năng có thể đạt được bằng cách chỉ bắt đầu chúng khi cần thiết. Có 4 loại sự kiện chính:

(1) Sự kiện liên quan đến vòng đời, còn được gọi là sự kiên kiểu platform (platform-type) vì chúng luôn liên quan đến container chính. Những sự kiện này liên quan đến những thay đổi trong vòng đời agent (ví dụ: born, dead, moved, suspended, resumed, frozen, thawed) và liên quan đến những thay đổi trong vòng đời container (ví dụ: added, removed).

(2) Sự kiện kiểu MTP-type được sinh ra bởi platform khi một MTP được kích hoạt (kết thúc) và khi một thông điệp được gửi/nhận bởi/từ một MTP, cụ thể là khi có một số phiên truyền thông liên platform (inter-platform).

(3) Sự kiện kiểu message-passing-type được sinh ra khi một thông điệp ACL được gửi, nhận, định tuyến hoặc được đưa vào hàng đợi thông điệp. Chúng là những sự kiện mà Sniffer thường sử dụng để giám sát.

(4) Sự kiện kiểu agent-internal-type liên quan đến những thay đổi trong trạng thái và hành vi của agent. Chúng là những sự kiện mà Introspector thường sử dụng để giám sát.

Các agent tương tác với ENS bằng cách trao đổi các thông điệp ACL với AMS. Agent có thể đặt trước với AMS để được thông báo về các kiểu sự kiện bằng cách sử dụng lớp AMSSubscriber

trong gói jade.domain.introspection.

Kiểu sự kiện message-passing-type và agent-internal-type nói cách khác chỉ được nằm trong container chính nơi mà agent tạo ra chúng cư trú. Việc chuyển chúng vào container chính thực tế sẽ làm giảm đáng kể hiệu năng của platform. Hậu quả là để được thông báo về các sự kiện message-passing và agent-internal liên quan đến agent đích cho trước, agent quan sát (observe agent) sẽ phải yêu cầu AMS đánh hơi và debug một cách rõ rang các agent đích. Điều này được thực hiện bằng các phương tiện của hành động SnifferOn và hành động DebugOn của JADEManagementOntology. Phần 2.5.1 miêu tả chi tiết cách yêu cầu các thao tác quản lý platform của AMS. Kết quả của hành động SniffOn là một agent phụ ToolNotifier được tạo ra trong container mà agent đích cư trú ở đó. Agent này lắng nghe sự kiện message-passing cục bộ

và chuyển tiếp chúng tới agent quan sát. Hệ thống thông báo sự kiện của JADE được minh họa trong Hình 2.15:

Hình 2.15: Hệ thống thông báo sự kiện của JADE

Hình 2.16: Biểu đồ lớp các công cụ của JADE

Mọi công cụ của JADE, ngoại trừ DummyAgent, đều kế thừa từ lớp jade.tools.ToolAgent – lớp

cung cấp khả năng nhận các thông báo theo một cách thống nhất. Hình 2.16 minh họa biểu đồ lớp UML về các công cụ của JADE. Mỗi công cụ được cài đặt là một Agent mở rộng lớp

jade.core.Agent cơ sở. Điều này cho phép một số tính năng và sự đơn giản hóa quan trọng:

(1) Vòng đời của một công cụ JADE có thể được quản lý như các agent khác của platform. (2) Khả năng truyền thông điệp của Agent cơ sở có thể được sử dụng để cho phép sự tương

tác giữa công cụ và AMS, cụ thể là việc đặt trước các thông báo sự kiện của platform. (3) Một số thể hiện của cùng một công cụ có thể cùng tồn tại trên cùng một platform và thậm

chí trong cùng container.

Lớp jade.tools.ToolNotifier cài đặt các agent phụ trợ được dùng để chuyển tiếp các sự kiện message-passing và agent-internal tới các agent quan tâm chính là một ToolAgent. Cách này cho phép phát hiện xem agent đích hoặc agent quan sát đã kết thúc hay chưa. Lớp ToolNotifier được ghép với ENS và không được dự định dành cho các lập trình viên sử dụng.

CHƯƠNG 3

NHỮNG ĐẶC ĐIỂM CƠ BẢN CỦA JADE

Trong chương 2 chúng ta đã có được một cái nhìn tổng quan về JADE, phác họa kiến trúc ở mức cao và nêu ra chức năng của nó. Trong phần này chúng ta sẽ trình bày làm thế nào để phát triển hệ đa agent với JADE dựa vào những tính năng cơ bản mà JADE cung cấp như tạo các agent, thực thi nhiệm vụ của agent, làm cho agent có thể giao tiếp với nhau, và đưa ra các dịch vụ cũng như là tìm kiếm các dịch vụ trong mục trang vàng (yellow page). Bằng những tính năng này, những cái mà chỉ nằm trong dưới 10 lớp trong thư viện của JADE, là đã có thể cài đặt ứng dụng phân tán với một độ phức tạp nhất định. Trong chương sau, chúng ta sẽ mô tả các tính năng nâng cao, những tính năng mà tập trung vào những vấn đề phức tạp hơn. Tuy nhiên JADE phù hợp với câu triết lý “đi tới đâu trả tiền tới đó ”, ngụ ý rằng các lập trình viên không cần quan tâm đến các tính năng nâng cao cho đến khi họ cần hoặc mong muốn như vậy.

Như đã giới thiệu trong chương 2, JADE là công cụ thuần java bởi vậy tạo một hệ đa agent trên jade đơn thuân là tạo các lớp java mà không cần lập trình java quá chuyên nghiệp. Để minh họa các bước cần thiết để phát triển ứng dụng với Jade, phần này sẽ giới thiệu các case study đơn giản mà sử dụng xuyên suốt tài liệu này, đó là một hệ thống hướng agent cho phép người sử dụng trao đổi sách cũ. Trong hệ thống trao đổi sách này sẽ có 2 loại agent: agent bán và

agent mua. Mỗi một agent mua lấy đầu vào là các sách mà nó cần phải mua và cố gắng tìm kiếm

các agent bán hàng để mua các sách đó với giá chấp nhận được. Tương tự như vậy mỗi một agent bán hàng sẽ lấy đầu vào là các sách dùng để bán và có gắng sao cho sách bán được với giá cao nhất có thể. Cả agent bán và agent mua đều cài đặt một vài chiến lược đơn giản để thực hiên các đàm phán mua bán sao cho đạt được kết quả tốt nhất cho người sử dụng mà nó đại diện. Cả agent bán và mua có thể xuất hiện và biến mất trong hệ thống một cách động. Các vấn đề liên quan đến mua sách cụ thể, phân phối và thanh tóan được coi là ngoài phạm vi và không được quan tâm.

Một phần của tài liệu Phát triển phần mềm hướng Agent (Trang 62 - 64)