BDI 에이전트와 작업해야하는데 JADEX 2.4를 사용 하겠지만 큰 문제가 있습니다. 설명서가 약간 나쁘고 에이전트간에 메시지를 교환 할 수 없습니다.JADEX 2.4의 Exchange 메시지
이 기사
http://www.activecomponents.org/bin/view/AC+Tutorial/05+Provided+Services을 읽고 그리고 난 내 코드하지만 성공에 같은 일을 시도하고있다. 나는 내 일을 위해 두 가지 일을하는 법을 알아야한다 : 한 요원에게서 다른 요원에게 메시지를 보내고 한 요원에게서 모든 요원에게 메시지를 보낸다. 누구든지 그렇게하는 법을 알고 있습니까?
ChatSystem.java
package agents;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import ....
@Service
public class ChatSystem implements IChatService{
@ServiceComponent
protected IInternalAccess agent;
protected IClockService clock;
protected DateFormat format;
@ServiceStart
public IFuture<IClockService> startService(){
format = new SimpleDateFormat("hh:mm:ss");
final Future<IClockService> ret = new Future<IClockService>();
IFuture<IClockService> fut = agent.getServiceContainer().getRequiredService("clockservice");
fut.addResultListener(new DelegationResultListener<IClockService>(ret)
{
public void customResultAvailable(IClockService result)
{
clock = result;
super.customResultAvailable(null);
}
});
return ret;
}
@Override
public IFuture<Void> message(String nick, String text,
boolean privatemessage) {
// TODO Auto-generated method stub
//System.out.println(" received at" + text);
System.out.println(agent.getComponentIdentifier().getLocalName()+" received at "
+" from: "+nick+" message: "+text);
return null;
}
}
HelperAgent.java
package agents;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import .....
@Agent
@Service
@RequiredServices({@RequiredService(name="clockservice", type=IClockService.class,[email protected](scope=RequiredServiceInfo.SCOPE_PLATFORM)),@RequiredService(name="chatservices", type=IClockService.class,[email protected](scope=RequiredServiceInfo.SCOPE_PLATFORM,dynamic=true),multiple=true)})
@ProvidedServices(@ProvidedService(type=IChatService.class, [email protected](ChatSystem.class)))
public class HelperAgent {
@Agent
protected MicroAgent agent;
@AgentBody
public void AgentBody()
{
IFuture<IClockService> fut = agent.getServiceContainer().getRequiredService("clockservice");
fut.addResultListener(new DefaultResultListener<IClockService>()
{
public void resultAvailable(IClockService cs)
{
System.out.println("Time for a chat, buddy: "+new Date(cs.getTime()));
}
});
IFuture<Collection<IChatService>> chatservices = agent.getServiceContainer().getRequiredServices("chatservices");
chatservices.addResultListener(new DefaultResultListener<Collection<IChatService>>()
{
public void resultAvailable(Collection<IChatService> result)
{
for(Iterator<IChatService> it=result.iterator(); it.hasNext();)
{
IChatService cs = it.next();
cs.message(agent.getComponentIdentifier().getName(), "test",false);
}
}
});
}
}
누구든지 나를 도울 수 : 내가 가지고
코드는 다음은? Jadex에서
안부