* Copyright 2010 JBoss Inc
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
This class configures the knowledge package builder and compiler. Dialects and their DialectConfigurations are handled by the DialectRegistry Normally you will not need to look at this class, unless you want to override the defaults.
This class will automatically load default values from a number of places, accumulating properties from each location. This list of locations, in given priority is: System properties, home directory, working directory, META-INF/ of optionally provided classLoader META-INF/ of Thread.currentThread().getContextClassLoader() and META-INF/ of ClassLoader.getSystemClassLoader()
So if you want to set a default configuration value for all your new KnowledgeBuilder, you can simply set the property as a System property.
This class is not thread safe and it also contains state. After the KnowledgeBuilder is created, it makes the configuration immutable and there is no way to make it mutable again. This is to avoid inconsistent behaviour inside KnowledgeBuilder.
Two dialects are supported, Java and MVEL. Java is the default dialect.
The Java dialect supports the following configurations:
So for example if we wanted to create a new KnowledgeBuilder that used Janino as the default compiler we would do the following:
KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); config.setProperty("drools.dialect.java.compiler", "JANINO"); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder( config );
Remember the KnowledgeBuilderConfiguration could have taken a Properties instance with that setting in it at constructor time, or it could also discover from a disk based properties file too.
Available pre-configured Accumulate functions are: