miércoles, 17 de octubre de 2007

PFC: POA

De lo que he podido entender de la documentación que he leído acerca de agentes, y acerca de JADE, un agente es un objeto que actúa siguiendo uno o varios comportamientos. A un objeto Agent se le añaden objetos Behaviour los cuales llevan programado la lógica de un algoritmo concreto.
El agente, cuando nace - los vamos a tratar como seres - llevan a cabo una... puesta a punto con la cual se registran en un directorio virtual de nombres y recogen información del entorno para llevar a cabo su funcionamiento

public class Jane extends Agent
{
...
protected void setup()
{
Object[] args = this.getArguments();
...
DFService.register(this, new DFAgentDescription());
...
addBehaviour(new Smart(this));
...
}
...
}

Por si sólo, el agente no hace nada, solamente existe en la JVM (Java Virtual Machine). Para que haga algo debe llevar asociado algún comportamiento como un SimpleBehaviour o un CyclicBehaviour: ejecutándose una sola vez durante la vida del agente o ejecutándose repetidamente, respectivamente. En código, y de manera esquemática seria algo cómo:

public class Smart extends SimpleBehaviour
{
...
public void action()
{
//lógica del algoritmo que se debe ejecutar
}
public boolean done()
{
//¿ha terminado?
}
}

Como un agente lleva asociados comportamientos que debe utilizar - la clase Agent puede tener varios Behaviours, en la jerga se dice que contiene un pool de Behaviour- se pueden implementar dentro de la clase Agent que hayamos creado, o cómo clase externa, en su correspondiente fichero
El método action() es el encargado de ejecutar los pasos del comportamiento del agente, mientras que el método setup() se encarga de inicializar variables de estado que pueda usar un agente.

Con esto, y sabiendo que un agente se comporta como un Thread - siempre está ahí hasta que lo matas o muere por algún fallo - el estilo de programación cambia bastante. De usar simples clases controladoras, por las que pueda pasar el flujo importante de una aplicación y se ejecutan de manera secuencial, podemos tener varios objetos Agent y ejerciendo el control de la aplicación o código servidor o como gusten. Pasamos a desarrollar una POA o Programación Orientada a Agentes.

No hay comentarios: