/** * Add a listener * @param listener The listener. */ public void addResultListener(IResultListener<E> listener) { super.addResultListener(new BDIComponentResultListener<E>(listener, getAgent())); } }
/** * Start the finishing of the plan. */ public void setFinishing() { assert finished==null; assert getAgent().getComponentFeature(IExecutionFeature.class).isComponentThread(); finished = new Future<Void>(); }
/** * Publish a tool event. */ public void publishToolPlanEvent(String evtype) { if(getAgent().getComponentFeature0(IMonitoringComponentFeature.class)!=null && getAgent().getComponentFeature(IMonitoringComponentFeature.class).hasEventTargets(PublishTarget.TOSUBSCRIBERS, PublishEventLevel.FINE)) { long time = System.currentTimeMillis();//getClockService().getTime(); MonitoringEvent mev = new MonitoringEvent(); mev.setSourceIdentifier(getAgent().getComponentIdentifier()); mev.setTime(time); PlanInfo info = PlanInfo.createPlanInfo(this); mev.setType(evtype+"."+IMonitoringEvent.SOURCE_CATEGORY_PLAN); // mev.setProperty("sourcename", element.toString()); mev.setProperty("sourcetype", info.getType()); mev.setProperty("details", info); mev.setLevel(PublishEventLevel.FINE); getAgent().getComponentFeature(IMonitoringComponentFeature.class).publishEvent(mev, PublishTarget.TOSUBSCRIBERS); } }
IBDIModel bdim = getAgent().getComponentFeature(IInternalBDIAgentFeature.class).getBDIModel(); final MGoal mgoal = bdim.getCapability().getGoal(goal.getClass().getName()); if(mgoal==null) throw new RuntimeException("Unknown goal type: "+goal); final RGoal rgoal = new RGoal(getAgent(), mgoal, goal, null, null, null, null); rgoal.setParent(this); IFuture<ITimer> cont = createTimer(timeout, getAgent(), rescom); cont.addResultListener(new DefaultResultListener<ITimer>()
final MethodInfo mi = mplan.getBody().getContextConditionMethod(rplan.getAgent().getClassLoader()); boolean context = true; if(mi!=null) IFuture<Boolean> fut = BDILifecycleAgentFeature.invokeBooleanMethod(rplan.getBody().getBody(), mi.getMethod(rplan.getAgent().getClassLoader()), mplan, null, rplan, rplan.getAgent()); context = BDILifecycleAgentFeature.evaluateCondition(rplan.getAgent(), mplan.getContextCondition(), rplan.getModelElement(), Collections.singletonMap(rplan.getFetcherName(), (Object)rplan)); ret.setResult(context);
getAgent().getComponentFeature(IExecutionFeature.class).waitForDelay(delay, new IComponentStep<Void>()
/** * Set up a rule for the waitqueue to signal to what kinds of events this plan * in principle reacts to. */ public void internalSetupEventsRule(List<EventType> events) { final String rulename = getId()+"_waitqueue"; Rule<Void> rule = new Rule<Void>(rulename, ICondition.TRUE_CONDITION, new IAction<Void>() { public IFuture<Void> execute(IEvent event, IRule<Void> rule, Object context, Object condresult) { // System.out.println("Added to waitqueue: "+event); addToWaitqueue(new ChangeEvent(event)); return IFuture.DONE; } }); rule.setEvents(events); getAgent().getComponentFeature(IInternalBDIAgentFeature.class).getRuleSystem().getRulebase().updateRule(rule); }
AdoptGoalAction.adoptGoal(getAgent(), rgoal);
IFuture<ITimer> cont = createTimer(timeout, getAgent(), rescom); cont.addResultListener(new DefaultResultListener<ITimer>()
assert getAgent().getComponentFeature(IExecutionFeature.class).isComponentThread();
IFuture<ITimer> cont = createTimer(timeout, getAgent(), rescom); cont.addResultListener(new DefaultResultListener<ITimer>()
if(rplan.getReason() instanceof RProcessableElement) ((RProcessableElement)rplan.getReason()).planFinished(rplan.getAgent(), null);