/** * Add a new rule. * @param rule The rule. */ public IFuture<Void> addRule(IRule<?> rule) { Future<Void> ret = new Future<Void>(); try { getRulebase().addRule(rule); Set<Integer> evs = new HashSet<Integer>(); Integer callid = Integer.valueOf(ret.hashCode()); callfutures.put(callid, ret); opencalls.put(callid, evs); notifySubscribers(new RuleAddedEvent(callid.intValue(), rule), evs).addResultListener(new DelegationResultListener<Void>(ret)); } catch(RuntimeException e) { ret.setException(e); } return ret; }
/** * Remove a belief listener. * @param name The belief name. * @param listener The belief listener. */ public void removeBeliefListener(String name, IBeliefListener listener) { name = bdimodel.getCapability().getBeliefReferences().containsKey(name) ? bdimodel.getCapability().getBeliefReferences().get(name) : name; String rulename = name+"_belief_listener_"+System.identityHashCode(listener); getRuleSystem().getRulebase().removeRule(rulename); }
/** * Notify the current state. */ protected void notifyCurrentState(SubscriptionIntermediateFuture<IRulebaseEvent> sub) { for(IRule<?> rule: rulebase.getRules()) { if(!sub.addIntermediateResultIfUndone(new RuleAddedEvent(-1, rule))) { rbsubscribers.remove(sub); } } } }
public void intermediateResultAvailable(IRulebaseEvent event) { if(event instanceof RuleAddedEvent) { rulesystem.getRulebase().addRule(((RuleAddedEvent)event).getRule()); // System.out.println("Added rule: "+event); } else if(event instanceof RuleRemovedEvent) { rulesystem.getRulebase().removeRule(((RuleRemovedEvent)event).getRuleName()); // System.out.println("Removed rule: "+event); } ((ARulebaseEvent)event).setFinished(subscription); }
/** * 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); }
public void intermediateResultAvailable(IRulebaseEvent event) { if(event instanceof RuleAddedEvent) { rulesystem.getRulebase().addRule(((RuleAddedEvent)event).getRule()); // System.out.println("Added rule: "+event); } else if(event instanceof RuleRemovedEvent) { rulesystem.getRulebase().removeRule(((RuleRemovedEvent)event).getRuleName()); // System.out.println("Removed rule: "+event); } ((ARulebaseEvent)event).setFinished(subscription); }
/** * Add a new rule. * @param rule The rule. */ public IFuture<Void> addRule(IRule<?> rule) { Future<Void> ret = new Future<Void>(); try { getRulebase().addRule(rule); Set<Integer> evs = new HashSet<Integer>(); Integer callid = Integer.valueOf(ret.hashCode()); callfutures.put(callid, ret); opencalls.put(callid, evs); notifySubscribers(new RuleAddedEvent(callid.intValue(), rule), evs).addResultListener(new DelegationResultListener<Void>(ret)); } catch(RuntimeException e) { ret.setException(e); } return ret; }
/** * Remove a belief listener. * @param name The belief name. * @param listener The belief listener. */ public void removeBeliefListener(String name, IBeliefListener listener) { name = bdimodel.getCapability().getBeliefReferences().containsKey(name) ? bdimodel.getCapability().getBeliefReferences().get(name) : name; String rulename = name+"_belief_listener_"+System.identityHashCode(listener); getRuleSystem().getRulebase().removeRule(rulename); }
/** * Notify the current state. */ protected void notifyCurrentState(SubscriptionIntermediateFuture<IRulebaseEvent> sub) { for(IRule<?> rule: rulebase.getRules()) { if(!sub.addIntermediateResultIfUndone(new RuleAddedEvent(-1, rule))) { rbsubscribers.remove(sub); } } } }
rulebase.addRule(rule);
/** * Remove a belief listener. * @param name The belief name. * @param listener The belief listener. */ public void removeBeliefListener(String name, IBeliefListener listener) { BDIModel bdimodel = (BDIModel)getInterpreter().getMicroModel(); name = bdimodel.getBeliefMappings().containsKey(name) ? bdimodel.getBeliefMappings().get(name) : name; BDIAgentInterpreter ip = (BDIAgentInterpreter)getInterpreter(); String rulename = name+"_belief_listener_"+System.identityHashCode(listener); ip.getRuleSystem().getRulebase().removeRule(rulename); }
List<IRule<?>> rules = rulebase.getRules(event.getType());
public void resultAvailable(final ITimer timer) { if(timer!=null) rescom.setTimer(timer); 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) { // if(rescom.equals(getResumeCommand())) { setDispatchedElement(new ChangeEvent(event)); RPlan.executePlan(RPlan.this, ia, rescom); } return IFuture.DONE; } }); rule.addEvent(et); ip.getRuleSystem().getRulebase().addRule(rule); } });
/** * Remove a rule. * @param rule The rule. */ public IFuture<Void> removeRule(String rulename) { Future<Void> ret = new Future<Void>(); try { getRulebase().removeRule(rulename); Set<Integer> evs = new HashSet<Integer>(); Integer callid = Integer.valueOf(ret.hashCode()); callfutures.put(callid, ret); opencalls.put(callid, evs); notifySubscribers(new RuleRemovedEvent(callid.intValue(), rulename), evs).addResultListener(new DelegationResultListener<Void>(ret)); } catch(RuntimeException e) { ret.setException(e); } return ret; }
public void resultAvailable(final ITimer timer) { if(timer!=null) rescom.setTimer(timer); Rule<Void> rule = new Rule<Void>(rulename, filter==null? ICondition.TRUE_CONDITION: new ICondition() { public IFuture<Tuple2<Boolean, Object>> evaluate(IEvent event) { return new Future<Tuple2<Boolean, Object>>(filter.filter((ChangeInfo<?>)event.getContent())? ICondition.TRUE: ICondition.FALSE); } }, new IAction<Void>() { public IFuture<Void> execute(IEvent event, IRule<Void> rule, Object context, Object condresult) { // if(rescom.equals(getResumeCommand())) // { setDispatchedElement(new ChangeEvent(event)); rescom.execute(null); // RPlan.executePlan(RPlan.this, getAgent(), rescom); // } return IFuture.DONE; } }); // rule.addEvent(et); rule.setEvents(ets); getRuleSystem().getRulebase().addRule(rule); } });
/** * Remove a rule. * @param rule The rule. */ public IFuture<Void> removeRule(String rulename) { Future<Void> ret = new Future<Void>(); try { getRulebase().removeRule(rulename); Set<Integer> evs = new HashSet<Integer>(); Integer callid = Integer.valueOf(ret.hashCode()); callfutures.put(callid, ret); opencalls.put(callid, evs); notifySubscribers(new RuleRemovedEvent(callid.intValue(), rulename), evs).addResultListener(new DelegationResultListener<Void>(ret)); } catch(RuntimeException e) { ret.setException(e); } return ret; }
public void resultAvailable(final ITimer timer) { if(timer!=null) rescom.setTimer(timer); 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) { // if(rescom.equals(getResumeCommand())) { setDispatchedElement(new ChangeEvent(event)); RPlan.executePlan(RPlan.this, ia, rescom); } return IFuture.DONE; } }); rule.addEvent(eta); rule.addEvent(etb); ip.getRuleSystem().getRulebase().addRule(rule); } });
public IFuture<Void> execute(IEvent event, IRule<Void> rule, Object context, Object condresult) { // Remove rule and continue after wait bdif.getRuleSystem().getRulebase().removeRule(rule.getName()); ret.setResult(null); return IFuture.DONE; } });
public void resultAvailable(final ITimer timer) { if(timer!=null) rescom.setTimer(timer); Rule<Void> rule = new Rule<Void>(rulename, cond!=null? cond: ICondition.TRUE_CONDITION, new IAction<Void>() { public IFuture<Void> execute(IEvent event, IRule<Void> rule, Object context, Object condresult) { // if(rescom.equals(getResumeCommand())) { setDispatchedElement(new ChangeEvent(event)); RPlan.executePlan(RPlan.this, ia, rescom); } return IFuture.DONE; } }); for(String ev: events) { rule.addEvent(new EventType(ev)); } ip.getRuleSystem().getRulebase().addRule(rule); } });
public IFuture<Void> execute(IEvent event, IRule<Void> rule, Object context, Object condresult) { // Remove rule and continue after wait bdif.getRuleSystem().getRulebase().removeRule(rule.getName()); ret.setResult(null); return IFuture.DONE; } });