/** * Init method. */ @AgentCreated public IFuture<Void> init() { this.rulesystem = new RuleSystem(agent); this.resubscribers = new ArrayList<SubscriptionIntermediateFuture<RuleEvent>>(); return IFuture.DONE; }
/** * */ public void clear() { T[] clone = delegate.toArray((T[])new Object[delegate.size()]); delegate.clear(); for(Object t: clone) { unobserveValue(t); getRuleSystem().addEvent(new Event(addevent, t)); publishToolBeliefEvent(); } }
/** * Get the rulebase. */ public IRulebase getRulebase() { return rulesystem.getRulebase(); }
/** * Add an external event to the rule engine. * It will process the event and fire rules * accordingly. * @param event The event. */ public IIntermediateFuture<RuleEvent> addEvent(IEvent event) { final SubscriptionIntermediateFuture<RuleEvent> ret = (SubscriptionIntermediateFuture<RuleEvent>)SFuture.getNoTimeoutFuture(SubscriptionIntermediateFuture.class, agent); rulesystem.addEvent(event); // todo: process more than one event until quiescience? rulesystem.processEvent().addResultListener(new IntermediateDelegationResultListener<RuleEvent>(ret) { public void customIntermediateResultAvailable(RuleEvent result) { super.customIntermediateResultAvailable(result); publishEvent(result); } }); return ret; }
rulesystem.processAllEvents(); return ret || (inited && rulesystem!=null && rulesystem.isEventAvailable());
rs.unobserveObject(oldval); rs.addEvent(new Event(ev1, val)); rs.processAllEvents();
rs.addEvent(ev); if(rs.isQueueEvents()) rs.processAllEvents();
rs.addEvent(ev); System.out.println("Ex in observe: "+e.getMessage()); Object val = event.getSource(); rs.unobserveObject(val, self); ret.setResult(null);
/** * */ public void unobserveValue(Object val, IInternalAccess agent) { getRuleSystem(agent).unobserveObject(val, eventadder); }
rulesystem.getRulebase().addRule(rule); rulesystem.getRulebase().addRule(rule); rulesystem.getRulebase().addRule(rule); rulesystem.getRulebase().addRule(rule); rulesystem.getRulebase().addRule(rule); events.add(new EventType(new String[]{ChangeEvent.GOALADOPTED, mgoal.getName()})); rule.setEvents(events); rulesystem.getRulebase().addRule(rule); events.add(new EventType(new String[]{ChangeEvent.GOALADOPTED, mgoal.getName()})); rule.setEvents(events); rulesystem.getRulebase().addRule(rule); rulesystem.getRulebase().addRule(rule); events.add(new EventType(new String[]{ChangeEvent.GOALADOPTED, mgoal.getName()})); rule.setEvents(events); rulesystem.getRulebase().addRule(rule); rulesystem.getRulebase().addRule(rule); events.add(new EventType(new String[]{ChangeEvent.GOALADOPTED, mgoal.getName()})); rule.setEvents(events); rulesystem.getRulebase().addRule(rule);
public void exceptionOccurred(Exception exception) { exception.printStackTrace(); // ex = exception; // System.out.println("processAllEvents.PAE start"); processAllEvents().addResultListener(new DelegationResultListener<Void>(ret)); } });
/** * */ public void observeValue(final Object val, IInternalAccess agent) { if(val!=null) getRuleSystem(agent).observeObject(val, true, false, eventadder); }
try processEvent().addResultListener(new IResultListener<Collection<RuleEvent>>()
rs.unobserveObject(oldval); rs.addEvent(ev); rs.processAllEvents();
/** * Add an external event to the rule engine. * It will process the event and fire rules * accordingly. * @param event The event. */ public IIntermediateFuture<RuleEvent> addEvent(IEvent event) { final SubscriptionIntermediateFuture<RuleEvent> ret = (SubscriptionIntermediateFuture<RuleEvent>)SFuture.getNoTimeoutFuture(SubscriptionIntermediateFuture.class, agent); rulesystem.addEvent(event); // todo: process more than one event until quiescience? rulesystem.processEvent().addResultListener(new IntermediateDelegationResultListener<RuleEvent>(ret) { public void customIntermediateResultAvailable(RuleEvent result) { super.customIntermediateResultAvailable(result); publishEvent(result); } }); return ret; }
rs.addEvent(ev); if(rs.isQueueEvents()) rs.processAllEvents();
getRuleSystem().addEvent(ev); System.out.println("Ex in observe: "+e.getMessage()); Object val = event.getSource(); getRuleSystem().unobserveObject(val, self); ret.setResult(null);
/** * Components with autonomous behavior may override this method * to implement a recurring execution cycle. * @return true, if the execution should continue, false, if the component may become idle. */ protected boolean executeCycle() { assert isComponentThread(); // Evaluate conditions in addition to executing steps. boolean again = false; IInternalBDIAgentFeature bdif = getComponent().getComponentFeature(IInternalBDIAgentFeature.class); boolean inited = ((IInternalBDILifecycleFeature)getComponent().getComponentFeature(ILifecycleComponentFeature.class)).isInited(); if(inited && bdif.getRuleSystem()!=null && bdif.getRuleSystem().isEventAvailable()) { // System.out.println("executeCycle.PAE start"); IFuture<Void> fut = bdif.getRuleSystem().processAllEvents(); if(!fut.isDone()) getComponent().getLogger().warning("No async actions allowed."); again = true; } return again; }
/** * */ public void unobserveValue(Object val) { getRuleSystem().unobserveObject(val); }
public void resultAvailable(Collection<RuleEvent> result) { // System.out.println("processAllEvents.PAE start"); processAllEvents().addResultListener(new DelegationResultListener<Void>(ret)); }