/** initializes engine components */ private synchronized void initEngine() { this.disconnectables = new LinkedList<Disconnectable>(); // this.caughtExceptions = new LinkedBlockingQueue<Throwable>(); this.reteNet = new Network(reteThreads, context); this.boundary = new ReteBoundary<PatternDescription>(this); // prerequisite: network this.matchers = new HashMap<PatternDescription, RetePatternMatcher>(); /* this.matchersScoped = new HashMap<PatternDescription, Map<Map<Integer,Scope>,RetePatternMatcher>>(); */ // prerequisite: network, framework, boundary, disconnectables this.manipulationListener = context.subscribePatternMatcherForUpdates(this); // prerequisite: boundary, disconnectables this.traceListener = context.subscribePatternMatcherForTraceInfluences(this); }