Class ReteEngine

    • Field Detail

      • reteNet

        protected Network reteNet
      • reteThreads

        protected final int reteThreads
      • deleteAndRederiveEvaluation

        protected final boolean deleteAndRederiveEvaluation
        Since:
        2.2
      • disconnectables

        protected java.util.Collection<Disconnectable> disconnectables
      • parallelExecutionEnabled

        protected final boolean parallelExecutionEnabled
    • Constructor Detail

      • ReteEngine

        public ReteEngine​(IQueryBackendContext context,
                          int reteThreads)
        Parameters:
        context - the context of the pattern matcher, conveying all information from the outside world.
        reteThreads - the number of threads to operate the RETE network with; 0 means single-threaded operation, 1 starts an asynchronous thread to operate the RETE net, >1 uses multiple RETE containers.
    • Method Detail

      • isDeleteAndRederiveEvaluation

        public boolean isDeleteAndRederiveEvaluation()
        Since:
        2.2
      • flushUpdates

        public void flushUpdates()
        Description copied from interface: IQueryBackend
        Propagates all pending updates in this query backend. The implementation of this method is optional, and it can be ignored entirely if the backend does not delay updates.
        Specified by:
        flushUpdates in interface IQueryBackend
      • killEngine

        public void killEngine()
        Deconstructs the engine to get rid of it finally
      • reset

        public void reset()
        Resets the engine to an after-initialization phase
      • accessMatcher

        public RetePatternMatcher accessMatcher​(PQuery query)
        Accesses the patternmatcher for a given pattern, constructs one if a matcher is not available yet.
        Parameters:
        query - the pattern to be matched.
        Returns:
        a patternmatcher object that can match occurences of the given pattern.
        Throws:
        ViatraQueryRuntimeException - if construction fails.
      • buildMatchersCoalesced

        public void buildMatchersCoalesced​(java.util.Collection<PQuery> specifications)
        Constructs RETE pattern matchers for a collection of patterns, if they are not available yet. Model traversal during the whole construction period is coalesced (which may have an effect on performance, depending on the matcher context).
        Parameters:
        specifications - the patterns to be matched.
        Throws:
        ViatraQueryRuntimeException - if construction fails.
      • constructionWrapper

        public <T> T constructionWrapper​(java.util.concurrent.Callable<T> payload)
        Since:
        2.4
      • executeDelayedCommands

        public void executeDelayedCommands()
        Since:
        2.3
      • settle

        public void settle()
        Waits until the pattern matcher is in a steady state and output can be retrieved.
      • settle

        public void settle​(java.lang.Runnable action)
        Waits until the pattern matcher is in a steady state and output can be retrieved. When steady state is reached, a retrieval action is executed before the steady state ceases.
        Parameters:
        action - the action to be run when reaching the steady-state.
      • getReteNet

        public Network getReteNet()
        Returns:
        the reteNet
      • getBoundary

        public ReteBoundary getBoundary()
        Returns:
        the boundary
      • setCompiler

        public void setCompiler​(ReteRecipeCompiler builder)
        Parameters:
        builder - the pattern matcher builder to set
      • addDisconnectable

        public void addDisconnectable​(Disconnectable disc)
        Parameters:
        disc - the new Disconnectable adapter.
      • isParallelExecutionEnabled

        public boolean isParallelExecutionEnabled()
        Returns:
        the parallelExecutionEnabled
      • getLogger

        public org.apache.log4j.Logger getLogger()
      • isDisposedOrUninitialized

        public boolean isDisposedOrUninitialized()
        Since:
        2.9
      • peekExistingResultProvider

        public IQueryResultProvider peekExistingResultProvider​(PQuery query)
        Description copied from interface: IQueryBackend
        Returns an existing result provider for a given query, if it was previously constructed, returns null otherwise. Will not construct and initialize new result providers.
        Specified by:
        peekExistingResultProvider in interface IQueryBackend
      • isCaching

        public boolean isCaching()
        Specified by:
        isCaching in interface IQueryBackend
        Returns:
        true iff this backend is incremental, i.e. it caches the results of queries for quick retrieval, and can provide update notifications on result set changes.
      • getHintConfiguration

        public IQueryBackendHintProvider getHintConfiguration()
        Since:
        1.5
        No Reference:
        Internal API, subject to change