(C) 版权所有 1985-2001 Microsoft Corp.
*** function: _i_CSwarmProcess__activateIn_(), file: /src/swarm/src/activity/Swa
> Swarm has already been activated. A swarm cannot be activated more than
> once.
import swarm.objectbase.Swarm;
import swarm.objectbase.SwarmImpl;
import swarm.activity.ScheduleImpl;
import swarm.activity.Activity;
import swarm.activity.ActionGroupImpl;
import swarm.collections.ListImpl;
import swarm.collections.ListImpl;
import swarm.defobj.Zone;
import swarm.Globals;
import swarm.Selector;
class Agent{
char id;
Agent (char id){
this.id=id;
}
public void agentStep(){
System.out.println(id + ":" + Globals.env.getCurrentTime());
}
}
public class ActionGroupDemo extends SwarmImpl{
ScheduleImpl schedule;
ActionGroupImpl actionGroup;
ListImpl list;
char Id='a';
ActionGroupDemo(Zone aZone){
super (aZone);
list=new ListImpl(aZone);
swarmStep();
actionGroup=new ActionGroupImpl(aZone);
schedule=new ScheduleImpl(aZone);
try{
Selector agentSel=new Selector(Agent.class,"agentStep",false);
Selector swarmSel=new Selector(ActionGroupDemo.class,"swarmStep",false);
actionGroup.createActionForEach$message(list,agentSel);
actionGroup.createActionTo$message(this,swarmSel);
schedule.at$createAction(0,actionGroup);
schedule.at$createAction(1,actionGroup);
schedule.at$createAction(2,actionGroup);
}catch (Exception e){
e.printStackTrace(System.err);
System.exit(1);
System.out.println("recaught: "+e);
}
}
public void swarmStep(){
list.addLast(new Agent(Id));
Id++;
}
public Activity activateIn(Swarm context){
super.activateIn(context);
super.activateIn(this);
return getActivity();
}
public static void main(String[] args){
Globals.env.initSwarm("ActionGroupDemo","2.1","r@r",args);
Swarm swarm=new ActionGroupDemo(Globals.env.globalZone);
swarm.buildObjects();
swarm.buildActions();
swarm.activateIn(null).run();
}
}