Quá trình di chuyển có thể đƣợc khởi tạo bởi chính Agent hoặc bởi một Agent khác trong cùng Place hoặc bởi một Agent đang tồn tại ngoài Place. Sau đó Agent đƣợc gửi đi từ Place hiện tại và đƣợ nhận bởi Agent đến.
Cả hai Place hiện tại và Place đến đều quản lý tiến trình gửi. Khi Place gửi kết nối đƣợc với Place đến, thì Place đến hoặc hoàn thành tiến trình hoặc trả về
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
thông báo lỗi cho Place gửi. Nếu Place gửi không kết nối đƣợc với Place đến thì nó sẽ gửi một thông báo lỗi đến Agent.
a) Gửi Agent: Khi Agent chuẩn bị di chuyển, nó phải nhận biết đƣợc nơi đến của nó. Khi vị trí của nơi đến đã xác định, Mobile Agent thông báo cho hệ thống Agent cục bộ: nó muốn di chuyển đến hệ thống Agent đến. Thông báo này đƣợc gửi qua một lệnh API bên trong giữa Agent và hệ thống Agent ( lệnh go()). Khi hệ thống Agent nhận đƣợc yêu cầu di chuyển của Agent nó sẽ thực hiện các việc sau:
- Tạm dừng Agent: Agent đƣợc cảnh báo về việc di chuyển sắp xảy ra, và đƣợc cho phép chuẩn bị khởi hành.
- Phát hành ( Serialize) Agent: Agent - trạng thái và lớp của nó – đƣợc phát hành bời bộ xử lý. Phát hành là tiến trình tạo một đại diện của đối tƣợng Agent để di chuyển trên mạng. Sự phát hành Agent bao gồm cả trạng thái thực hiện của nó (khung stack).
- Mã hóa Agent phát hành: Lúc này, bộ xử lý sẽ mã hóa Agent phát hành cho 1 giao thức di chuyển đã chọn.
- Gửi Agent đi: bộ xử lý thiết lập 1 kết nối mạng với host đến và chuyển Agent phát hành đã mã hóa đến đó.
b) Tiếp nhận Agent: Trƣớc khi một bộ xử lý nhận Agent, nó phải xác định nó có chấp nhận một Agent đến từ Host gửi hay không. Chỉ sau khi ngƣời gửi xác nhận với bộ xử lý nơi nhận, thì tiến trình nhận Agent xảy ra nhƣ sau:
- Nhận Agent: khi bộ xử lý nơi nhận đồng ý cuộc di chuyển, Agent đã mã hóa đƣợc tiếp nhận.
- Giải mã: bộ xử lý sẽ giải mã Agent đến.
- Deserialize Agent: đại diện của Agent đƣợc tạo. Lớp Agent đƣợc khởi tạo và trạng thái của Agent chuyển đên đƣợc phục hồi.
- Tiếp tục thực hiện Agent: Agent tiếp tục thực hiện công việc đang thực hiện tại nơi đến.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Hình 1.9. Di chuyển Agent trên mạng
c) Di chuyển lớp Agent: Agent không thể tiếp tục thực hiện trong bộ xử lý của nơi đến mà không có lớp của nó. Có một số phƣơng pháp để lớp Agent hiện diện tại bộ xử lý của nó, phụ thuộc vào vị trí của lớp:
- Lớp đã có ở nơi đến: trong trƣờng hợp này thì không cần di chuyển lớp (hình 1.10a). Agent đƣợc chuyển đến chỉ cần chứa thông tin để nhận diện lớp, chẳng hạn nhƣ tên lớp. Nó cũng có thể chứa thêm thông tin mô tả vị trí của định nghĩa lớp.
Server Code của Class
Nguồn
Code của Class
Agent
Đích
Code của Class
Agent
(c)
(b
Hình 1.10. Di chuyển lớp của Agent
(a)Class ở nơi đến, (b) class ở nơi gốc, (c)Class ởServer
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
- Lớp ở nơi gửi: Nếu lớp có ở nơi gửi – và thƣờng là trong trƣờng hợp này – nó đƣợc di chuyển đi 1 cách dễ dàng cùng với trạng thái của Agent đến bộ xử lý của nơi đến (hình 1.10b).
- Mã theo nhu cầu: trƣờng hợp này lớp có tại server và bộ xử lý của nới đến phải lấy lớp tại server (hình 1.10c). Trong trƣờng hợp này, bộ xử lý của nơi đến phải thực hiện thêm một kết nối mạng để lấy lớp Agent.
Sau khi Agent đƣợc khởi tạo, nó thƣờng tạo ra các đối tƣợng khác. Dĩ nhiên, lớp của các đối tƣợng này cần cho việc tạo đối tƣợng và cần để tiếp tục việc thực thi. Nếu bất kỳ lớp nào không tồn tại cho bộ xử lý, nó phải đƣợc chuyển đến từ nơi gửi hay từ ngƣời gửi Agent.