Сообщения, посылаемые агентами можно разделить на два вида:

  • запросы, посылаемые агентом-координатором;
  • сообщения-ответы.

Пусть событие SomeEvent2-посылка сообщения агента-координатора какому-либо агенту, в зависимости от протокола взаимодействия:

public event MyEventHandler SomeEvent2;

MyEvent evt2 = new MyEvent();

Agent_K  ob2 = new Agent_K ();

evt2.OnSomeEvent2(id);

Тогда событие SomeEvent- посылка ответного сообщения агенту-координатору, причем данное событие вызывается из события SomeEvent2, организуя таким образом реакцию на сообщение.

Агенты создаются как экземпляры класса:

Agent agent_a = new Agent();

Для каждого вида сообщений агентов необходим обработчик:

class Agent_K{

public void handler(object source, MyEventArgs arg2) {..}

class Agent {

public void handler(object source, MyEventArgs arg) {…}}

Для поддержки функционирования событий необходимо задать делегат:

delegate void MyEventHandler(object source, MyEventArgs arg);

В классе MyEventArgs производном от класса EventArgs создаются поля, которые являются параметрами сообщений согласно стандарту FIPA ACL:

class MyEventArgs : EventArgs {

public int protocol_id ;

public string sender;

public string receiver;

public string reply_to;

public string content;

Взаимодействие начинается с посылки агентом-координатором сообщений агентам в соответствии с протоколом- схема которого отражена в базе знаний. Также в базе знаний происходит определение содержания сообщения.