- Quá trình phân tích moving agent theo UM L:
API VÀ LẬP TRÌNH 1 Lập trình agent:
1. Lập trình agent:
Khi general administrator và các agent place được khởi tạo, người sử dụng framework có thể lập trình agent để thực hiện các công việc mà họ mong muốn. Để hổ trợ cho lập trình agent, framework cung cấp một AgentInterface, một class ảo Agent, Class Itinerary, interface Run và class ảo Runner cho người sử dụng để họ dựa vào đó mà lập trình.
Người lập trình tạo ra agent là để thực hiện các công việc chuyên biệt trên những host được định sẵn trước đó. Như vậy người lập trình agent cần đặc tả những yếu tố sau:
♦ Agent dự định sẽ đi đến những agent place nào ? như ta đã biết đặc điểm của agent trong mobility framework là xác định trước lộ trình.
♦ Những công việc agent dự định thực hiện : cần lưu ý agent có khả năng thực hiện một nhóm các tác vụ trên một host nào đó, người lập trình agent phải định nghĩa các tác vụ theo từng host, nghĩa là tại một host agent sẽ làm những công việc hoàn tất nào đó.
♦ Agent làm việc độc lập hay có sự cộng tác với các agent khác ? ở đây đi vào hai khía cạnh là đồng bộ và chia sẻ dữ liệu. Sự đồng bộ và chia sẻ dữ liệu được xác định sẽ diễn ra tại các agent place định trước nào đó.
Để dễ cho lập trình agent, ta đi theo trình tự sau:
♦ Đặc tả các tác vụ trên từng agent place trước.
♦ Đặc tả lộ trình bao gồm: đặc tả IP và port của từng agent place mà agent đến, nhúng tác vụ ta đã định nghĩa ở bước 1 vào agent place này, định nghĩa sự hợp tác làm việc với các agent khác nếu có.
Chi tiết lập trình như sau:
1.1 Tạo class của agent:
Để tạo một agent, tích hợp nó vào framework và kích khởi cho nó di chuyển thì người sử dụng cần tạo ra một class extends từ class Agent. Giả sử ta đặc tên cho class này là MyAgent, ta khai báo như sau:
public class MyAgent extends Agent{}
Trong class này để mô tả đầy dủ các yếu tố của agent, người lập trình phải override method public void initialize() của class Agent.
Ta sẽ quay lại nội dung lập trình trong method này sau, vì như đã nói ở trên ta đặc tả các tác vụ của agent trước.
Người lập trình phải xác định agent đi qua bao nhiêu agent place, ứng với mỗi agent place, tác vụ được định nghĩa bằng một class extends từ class Runner. Class Runner chỉ có một method run() rỗng, người lập trình có thể tự ý lập trình các tác vụ bằng cách override method này.
Giả sử như agent đi qua agent place thứ nhất là nó làm mỗi một tác vụ là xuất ra màn hình câu Hello World!, thì lập trình như sau:
class Runner1 extends Runner{ public void run(){
System.out.println("Hello World !"); }
}
Như vậy agent đi qua bao nhiêu agent place thì người lập trình phải định nghĩa bấy nhiêu class như vậy.
Các class này là các inner class của class agent được user lập trình.
1.3 Method initialize():
Sau khi đặc tả xong tác vụ, ta đi vào chi tiết của method initialize().
Đầu tiên ta định nghĩa loại agent, nếu agent làm công việc độc lập thì agent này thuộc kiểu normal, ngược lại nếu nó có hợp tác với các agent khác trong quá trình thực hiện công việc thì nó thuộc kiểu collaboration.
Định nghĩa kiểu bằng method setType(String type)
Tiếp theo tạo ra các đối tượng của các inner class đặc tả tác vụ của agent, các đối tượng này sẽ được add vào itinerary.
Cuối cùng tạo đối tượng itinerary, đây là dãy các đối tượng thuộc class Itinerary đặc tả IP, port của từng destination, các tác vụ agent thực hiện trên destination này, sự hợp tác của agent với các agent khác. Trong class Itinerary, có các methods sau:
♦setURL(String IP, String port): cho phép đặc tả IP và port của agent place mà agent muốn di chuyển đến.
♦setOperation(Object runner): cho phép add đối tượng thực hiện các tác vụ khi agent đến agent place này.
♦receivingData(String source): đặc tả việc agent chờ nhận dữ liệu từ agent khác trong nhóm.
♦sharingData(String des, Object data): đặc tả việc agent muốn gởi đối tượng dữ liệu data đến cho một agent khác trong nhóm.
♦setWaitSynchronization(String source) : đặc tả việc agent chờ nhận tín hiệu đồng bộ từ agent khác.
♦setSendSynchronization(String des) : đặc tả việc agent gởi tín hiệu đồng bộ đến các agent khác.
1.4 Biên dịch:
Dịch file này thành file .class và đặt file.class này vào thư mục code_agent.