/** * Creates a new rule engine that is initialized over the given * ViatraQueryEngine and an agenda without rules. * @param engine * @return the prepared rule engine */ public static RuleEngine createViatraQueryRuleEngine(final ViatraQueryEngine engine) { return EventDrivenVM.createRuleEngine(ViatraQueryEventRealm.create(engine)); }
/** * Creates a new execution schema that is initialized over the given ViatraQueryEngine, creates an executor and * agenda with the given rule specifications and prepares a scheduler using the provided factory. * * @param engine * @param schedulerFactory * @param specifications * @return the prepared execution schema */ public static ExecutionSchema createViatraQueryExecutionSchema(final ViatraQueryEngine engine, final ISchedulerFactory schedulerFactory, final Set<RuleSpecification<?>> specifications) { return EventDrivenVM.createExecutionSchema(ViatraQueryEventRealm.create(engine), schedulerFactory, specifications); }
/** * Creates a new adaptable {@link RuleEngine} based on the input {@link ViatraQueryEngine} */ public RuleEngine createAdaptableRuleEngine(ViatraQueryEngine queryEngine) { AdaptableConflictResolver conflictResolver = new AdaptableConflictResolver(new ArbitraryOrderConflictResolver(), this); Agenda debugAgenda = new Agenda(conflictResolver); debugAgenda.setActivationListener( new AdaptableActivationNotificationListener(debugAgenda.getActivationListener(), this)); RuleBase debugRulebase = new AdaptableRuleBase(ViatraQueryEventRealm.create(queryEngine), debugAgenda, this); return RuleEngine.create(debugRulebase); }
/** * Creates a new adaptable {@link ExecutionSchema} based on the input parameters. */ public ExecutionSchema createAdaptableExecutionSchema(ViatraQueryEngine queryEngine, ISchedulerFactory schedulerFactory, ConflictResolver conflictResolver) { IExecutor executor = new AdaptableExecutor(new Executor(), this); ConflictResolver adaptableConflictResolver = new AdaptableConflictResolver(conflictResolver, this); Agenda debugAgenda = new Agenda(adaptableConflictResolver); debugAgenda.setActivationListener( new AdaptableActivationNotificationListener(debugAgenda.getActivationListener(), this)); RuleBase debugRulebase = new AdaptableRuleBase(ViatraQueryEventRealm.create(queryEngine), debugAgenda, this); ScheduledExecution execution = new ScheduledExecution(debugRulebase, executor); Scheduler scheduler = schedulerFactory.prepareScheduler(execution); final ExecutionSchema schema = ExecutionSchema.create(scheduler); schema.setConflictResolver(adaptableConflictResolver); return schema; }