Tương tác với DF agent

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

DF là một agent, nó có thể tương tác với nó như với bất kỳ agent khác bằng cách trao đổi các thông điệp ACL sử dụng một ngôn ngữ có nội dung thích hợp (ví dụ ngôn ngữ SL0) và một ontology thích hợp (ví dụ FIPA-agent-management ontology) như được định nghĩa trong các đặc tả FIPA. Để đơn giản hóa các tương tác này, Jade cung cấp lớp jade.domain.DFService mà có thể xuất bản và tìm kiếm các dịch vụ qua nhiều lời gọi phương thức.

3.4.2.1 Công bố dịch vụ

Một agent muốn đưa ra một hoặc nhiều dịch vụ phải cung cấp DF với một mô tả bao gồm AID riêng của mình, một danh sách các dịch vụ cung cấp tùy chọn danh sách các ngôn ngữ và ontology để các agent khác sử dụng để tương tác với nó. Mỗi mô tả dịch vụ được công bố phải bao gồm loại dịch vụ, tên dịch vụ, các ngôn ngữ và các ontology được yêu cầu để sử dụng dịch vụ và tập các thuộc tính đặc trưng của dịch vụ dưới dạng cặp giá trị khóa. Các lớp

DFAgentDescription, SerivceDescription và Property, bao gồm trong gói jade.domain.FIPAAgentManagement , đại diện cho các khái niệm trừu tượng này.

Để công bố một dịch vụ, một agent phải tạo một mô tả thích hợp (như một thể hiện của lớp DFAgentDescription) và gọi phương thức tĩnh register() của lớp DFService. Với ví dụ tham

khảo book-trading, các agent người bán đăng ký khả năng bán của chúng (một dịch vụ kiểu ‘Book-selling’) trong phương thức setup() của chúng như sau :

protected void setup() { ...

// Register the book-selling service in the yellow pages

DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID());

ServiceDescription sd = new ServiceDescription(); sd.setType("Book-selling"); sd.setName(getLocalName()+"-Book-selling"); dfd.addServices(sd); try { DFService.register(this, dfd); }

catch (FIPAException fe) { fe.printStackTrace(); }

... }

Chú ý rằng trong ví dụ đơn giản này chúng ta không đặc tả bất kỳ ngôn ngữ, ontology hoặc các thuộc tính đặc trưng dịch vụ nào. Khi một agent kết thúc, nó thực hiện xóa các dịch vụ đã công bố:

protected void takeDown() {

// Deregister from the yellow pages try {

DFService.deregister(this); }

catch (FIPAException fe) { fe.printStackTrace(); }

... }

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