View Javadoc

1   /**
2    * Copyright 2005-2013 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krms.api.engine;
17  
18  /**
19   * Interface for the engine that is used to resolve {@link Term}s.
20   * 
21   * @author Kuali Rice Team (rice.collab@kuali.org)
22   *
23   */
24  public interface TermResolutionEngine {
25  
26  	/**
27  	 * Resolves a given term into a fact
28  	 * @param term the {@link Term} to resolve
29  	 * @return the fact value for the given {@link Term}
30  	 * @throws {@link TermResolutionException} if the given {@link Term} can't be resolved
31  	 */
32  	<T> T resolveTerm(Term term) throws TermResolutionException;
33  	
34  	/**
35  	 * Adds a fact value to the {@link TermResolutionEngine}'s internal state
36  	 * @param term the named Term
37  	 * @param value the fact value
38  	 */
39  	void addTermValue(Term term, Object value);
40  	
41  	/**
42  	 * Adds a {@link TermResolver} to the {@link TermResolutionEngine}.  Once added, it may
43  	 * be used (unsurprisingly) by the engine to resolve {@link Term}s.
44  	 * @param termResolver the {@link TermResolver} to add.
45  	 */
46  	void addTermResolver(TermResolver<?> termResolver);
47  	
48  }