/** * Execute a goal method. */ protected static IFuture<Boolean> executeGoalMethod(Method m, RProcessableElement goal, IEvent event, IInternalAccess component) { return invokeBooleanMethod(goal.getPojoElement(), m, goal.getModelElement(), event, null, component); }
/** * */ public List<Object> selectCandidates(MCapability mcapa) { List<Object> ret = new ArrayList<Object>(); MProcessableElement mpe = (MProcessableElement)element.getModelElement(); // todo: include a number of retries... int numcandidates = 1; if(mpe.isPostToAll()) { numcandidates = Integer.MAX_VALUE; } for(int i=0; i<numcandidates && candidates.size()>0; i++) { ret.add(getNextCandidate(mcapa)); } return ret; }
/** * Select candidates from the list of applicable plans. */ public List<ICandidateInfo> selectCandidates(MCapability mcapa, IInternalAccess ia) { List<ICandidateInfo> ret = new ArrayList<ICandidateInfo>(); MProcessableElement mpe = (MProcessableElement)element.getModelElement(); // todo: include a number of retries... int numcandidates = 1; if(mpe.isPostToAll()) { numcandidates = Integer.MAX_VALUE; } // todo: test if this works with posttoall because getNextCandidate() does not remove a candidate?! for(int i=0; i<numcandidates && candidates!=null && candidates.size()>0; i++) { ret.add(getNextCandidate(mcapa, ia)); } return ret; }
/** * Execute a goal method. */ protected IFuture<Boolean> executeGoalMethod(Method m, RProcessableElement goal, IEvent event) { return invokeBooleanMethod(goal.getPojoElement(), m, goal.getModelElement(), event, null); }
MProcessableElement mpe = (MProcessableElement)element.getModelElement(); String exclude = mpe.getExcludeMode(); if(((MProcessableElement)element.getModelElement()).isRebuild() || MProcessableElement.EXCLUDE_NEVER.equals(exclude))
MProcessableElement mpe = (MProcessableElement)element.getModelElement(); if(mpe.isRandomSelection())
res.add(result); Object[] params = BDIAgentFeature.getInjectionValues(m.getParameterTypes(), m.getParameterAnnotations(), rplan!=null? rplan.getModelElement(): rpe.getModelElement(), event, rplan, rpe, res, getAgent()); if(params==null) System.out.println("Invalid parameter assignment");
/** * Remove tried candidates from the actual candidate collection. */ protected void removeTriedCandidates() { MProcessableElement mpe = (MProcessableElement)element.getModelElement(); ExcludeMode exclude = mpe.getExcludeMode(); if(candidates!=null && candidates.size()>0 && !ExcludeMode.Never.equals(exclude) && element.getTriedPlans()!=null) { List<Object> cands = new ArrayList<Object>(candidates); for(Object candidate: cands) { for(IInternalPlan plan: element.getTriedPlans()) { if(plan.getCandidate().equals(candidate)) { if(isToExclude(plan, exclude)) { candidates.remove(candidate); break; } } } } } }
MElement melem = element.getModelElement(); if(melem instanceof MGoal) MProcessableElement mpe = (MProcessableElement)element.getModelElement(); if(mpe.isRandomSelection())
if(candidates==null || ((MProcessableElement)element.getModelElement()).isRebuild())
/** * After plan has finished the candidate will be removed from the APL. */ public void planFinished(IInternalPlan rplan) { MProcessableElement mpe = (MProcessableElement)element.getModelElement(); ExcludeMode exclude = mpe.getExcludeMode(); // always delete the rplan because the candidate can be reused Object cand = rplan.getCandidate(); if(cand instanceof CandidateInfoMPlan) ((CandidateInfoMPlan)cand).removePlan(); // Do nothing if APL exclude is never if(MProcessableElement.ExcludeMode.Never.equals(exclude)) return; if(isToExclude(rplan, exclude)) candidates.remove(rplan.getCandidate()); }
if(mgoals!=null && mgoals.contains(element.getModelElement())) if(msers!=null && msers.contains(element.getModelElement())) if(msgs!=null && msgs.contains(element.getModelElement())) if(ievs!=null && ievs.contains(element.getModelElement())) if(mtrgoals!=null && mtrgoals.contains(element.getModelElement())) if(msers!=null && msers.contains(element.getModelElement())) if(msgs!=null && msgs.contains(element.getModelElement())) if(ievs!=null && ievs.contains(element.getModelElement()))
if(mgoals!=null && mgoals.contains(element.getModelElement())) if(msers!=null && msers.contains(element.getModelElement())) .getInjectionValues(m.getParameterTypes(), m.getParameterAnnotations(), element.getModelElement(), null, null, element)); if(app instanceof Boolean)
/** * Test if parameter writes are currently allowed. * @throws Exception when write not ok. */ public void testWriteOK(MParameter mparam) { if(mparam!=null) { boolean ok = mparam.getDirection()==Direction.INOUT || getState()==null // in constructor -> initParameters || mparam.getDirection()==Direction.IN && getState()==State.INITIAL || mparam.getDirection()==Direction.OUT && getState()!=State.INITIAL; if(!ok) { throw new IllegalStateException("Cannot write parameter "+getModelElement().getName()+"."+mparam.getName()+" in state "+getState()+"."); } } } }
if(((MProcessableElement)element.getModelElement()).isRebuild()) candidates = null;
if(SUtil.equals(element.getModelElement().getCapabilityName(), capaname))
MGoal mgoal = (MGoal)rpe.getModelElement(); List<MParameter> params = mgoal.getParameters(); for(MParameter param: params)
MGoal mgoal = (MGoal)rpe.getModelElement(); List<MParameter> params = mgoal.getParameters(); for(MParameter param: params)
MGoal mgoal = (MGoal)rpe.getModelElement(); List<MParameter> params = mgoal.getParameters(); for(MParameter param: SUtil.safeList(params))
Object[] params = BDIAgentFeature.getInjectionValues(m.getParameterTypes(), m.getParameterAnnotations(), element.getModelElement(), null, null, element, ia); if(params==null) System.out.println("Invalid parameter assignment");