Package org.drools.core
Class RuleBaseConfiguration
- java.lang.Object
-
- org.drools.core.RuleBaseConfiguration
-
- All Implemented Interfaces:
Externalizable
,Serializable
,org.kie.api.conf.KieBaseOptionsConfiguration
,org.kie.api.KieBaseConfiguration
,org.kie.api.PropertiesConfiguration
public class RuleBaseConfiguration extends Object implements org.kie.api.KieBaseConfiguration, Externalizable
Available configuration options:drools.maintainTms = <true|false> drools.sequential = <true|false> drools.sequential.agenda = <sequential|dynamic> drools.removeIdentities = <true|false> drools.shareAlphaNodes = <true|false> drools.shareBetaNodes = <true|false> drools.alphaNodeHashingThreshold = <1...n> drools.alphaNodeRangeIndexThreshold = <1...n> drools.betaNodeRangeIndexEnabled = <true|false> drools.sessionPool = <1...n> drools.compositeKeyDepth = <1..3> drools.indexLeftBetaMemory = <true/false> drools.indexRightBetaMemory = <true/false> drools.equalityBehavior = <identity|equality> drools.conflictResolver = <qualified class name> drools.consequenceExceptionHandler = <qualified class name> drools.ruleBaseUpdateHandler = <qualified class name> drools.sessionClock = <qualified class name> drools.mbeans = <enabled|disabled> drools.classLoaderCacheEnabled = <true|false> drools.declarativeAgendaEnabled = <true|false> drools.permgenThreshold = <1...n> drools.jittingThreshold = <1...n>
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RuleBaseConfiguration.AssertBehaviour
static class
RuleBaseConfiguration.SequentialAgenda
-
Field Summary
Fields Modifier and Type Field Description static boolean
DEFAULT_PHREAK
static boolean
DEFAULT_SESSION_CACHE
static String
DEFAULT_SIGN_ON_SERIALIZATION
protected static org.slf4j.Logger
logger
-
Constructor Summary
Constructors Constructor Description RuleBaseConfiguration()
Creates a new rulebase with a default parent class loader set according to the following algorithm: If a Thread.currentThread().getContextClassLoader() returns a non-null class loader, it will be used as the parent class loader for this rulebase class loaders, otherwise, the RuleBaseConfiguration.class.getClassLoader() class loader will be used.RuleBaseConfiguration(ClassLoader... classLoaders)
A constructor that sets the parent classloader to be used while dealing with this rule baseRuleBaseConfiguration(Properties properties)
Creates a new rulebase configuration using the provided properties as configuration options.RuleBaseConfiguration(Properties properties, ClassLoader... classLoaders)
A constructor that sets the classloader to be used as the parent classloader of this rule base classloaders, and the properties to be used as base configuration options
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addActivationListener(String name, ActivationListenerFactory factory)
void
enforceSingleThreadEvaluation()
ActivationListenerFactory
getActivationListenerFactory(String name)
AgendaGroupFactory
getAgendaGroupFactory()
int
getAlphaNodeHashingThreshold()
int
getAlphaNodeRangeIndexThreshold()
RuleBaseConfiguration.AssertBehaviour
getAssertBehaviour()
org.kie.internal.utils.ChainedProperties
getChainedProperties()
ClassLoader
getClassLoader()
int
getCompositeKeyDepth()
String
getConsequenceExceptionHandler()
static RuleBaseConfiguration
getDefaultInstance()
org.kie.api.conf.EventProcessingOption
getEventProcessingMode()
org.kie.internal.conf.IndexPrecedenceOption
getIndexPrecedenceOption()
int
getJittingThreshold()
int
getMaxThreads()
Returns the configured number of maximum threads to use for concurrent propagation when multi-thread evaluation is enabled.<T extends org.kie.api.conf.SingleValueKieBaseOption>
TgetOption(Class<T> option)
<T extends org.kie.api.conf.MultiValueKieBaseOption>
TgetOption(Class<T> option, String key)
int
getPermGenThreshold()
String
getProperty(String name)
String
getRuleBaseUpdateHandler()
RuleBaseConfiguration.SequentialAgenda
getSequentialAgenda()
int
getSessionPoolSize()
List<Map<String,Object>>
getWorkDefinitions()
boolean
isAdvancedProcessRuleIntegration()
boolean
isBetaNodeRangeIndexEnabled()
boolean
isDeclarativeAgenda()
boolean
isImmutable()
Returns true if this configuration object is immutable or false otherwise.boolean
isIndexLeftBetaMemory()
boolean
isIndexRightBetaMemory()
boolean
isMaintainTms()
boolean
isMBeansEnabled()
Returns true if the management and monitoring through MBeans is activeboolean
isMultithreadEvaluation()
Returns true if the partitioning of the rulebase is enabled and false otherwise.boolean
isMutabilityEnabled()
boolean
isRemoveIdentities()
boolean
isSequential()
boolean
isShareAlphaNodes()
boolean
isShareBetaNodes()
void
makeImmutable()
Makes the configuration object immutable.void
readExternal(ObjectInput in)
void
setAdvancedProcessRuleIntegration(boolean advancedProcessRuleIntegration)
void
setAlphaNodeHashingThreshold(int alphaNodeHashingThreshold)
void
setAlphaNodeRangeIndexThreshold(int alphaNodeRangeIndexThreshold)
void
setAssertBehaviour(RuleBaseConfiguration.AssertBehaviour assertBehaviour)
void
setBetaNodeRangeIndexEnabled(boolean betaNodeRangeIndexEnabled)
void
setClassLoader(ClassLoader classLoader)
void
setCompositeKeyDepth(int compositeKeyDepth)
void
setConsequenceExceptionHandler(String consequenceExceptionHandler)
void
setDeclarativeAgendaEnabled(boolean enabled)
Enable declarative agendavoid
setEventProcessingMode(org.kie.api.conf.EventProcessingOption mode)
void
setIndexLeftBetaMemory(boolean indexLeftBetaMemory)
void
setIndexPrecedenceOption(org.kie.internal.conf.IndexPrecedenceOption precedence)
void
setIndexRightBetaMemory(boolean indexRightBetaMemory)
void
setJittingThreshold(int jittingThreshold)
void
setMaintainTms(boolean maintainTms)
void
setMaxThreads(int maxThreads)
If multi-thread evaluation is enabled, this parameter configures the maximum number of threads each session can use for concurrent Rete propagation.void
setMBeansEnabled(boolean mbeansEnabled)
Defines if the RuleBase should expose management and monitoring MBeansvoid
setMultithreadEvaluation(boolean enableMultithread)
Defines if the RuleBase should be executed using a pool of threads for evaluating the rules ("true"), or if the rulebase should work in classic single thread mode ("false").void
setMutabilityEnabled(boolean mutabilityEnabled)
<T extends org.kie.api.conf.KieBaseOption>
voidsetOption(T option)
void
setPermGenThreshold(int permGenThreshold)
void
setProperty(String name, String value)
void
setRemoveIdentities(boolean removeIdentities)
void
setRuleBaseUpdateHandler(String ruleBaseUpdateHandler)
void
setSequential(boolean sequential)
void
setSequentialAgenda(RuleBaseConfiguration.SequentialAgenda sequentialAgenda)
void
setSessionPoolSize(int sessionPoolSize)
void
setShareAlphaNodes(boolean shareAlphaNodes)
void
setShareBetaNodes(boolean shareBetaNodes)
void
writeExternal(ObjectOutput out)
-
-
-
Field Detail
-
DEFAULT_PHREAK
public static final boolean DEFAULT_PHREAK
- See Also:
- Constant Field Values
-
DEFAULT_SESSION_CACHE
public static final boolean DEFAULT_SESSION_CACHE
- See Also:
- Constant Field Values
-
DEFAULT_SIGN_ON_SERIALIZATION
public static final String DEFAULT_SIGN_ON_SERIALIZATION
- See Also:
- Constant Field Values
-
logger
protected static final transient org.slf4j.Logger logger
-
-
Constructor Detail
-
RuleBaseConfiguration
public RuleBaseConfiguration(Properties properties)
Creates a new rulebase configuration using the provided properties as configuration options. Also, if a Thread.currentThread().getContextClassLoader() returns a non-null class loader, it will be used as the parent classloader for this rulebase class loaders, otherwise, the RuleBaseConfiguration.class.getClassLoader() class loader will be used.- Parameters:
properties
-
-
RuleBaseConfiguration
public RuleBaseConfiguration()
Creates a new rulebase with a default parent class loader set according to the following algorithm: If a Thread.currentThread().getContextClassLoader() returns a non-null class loader, it will be used as the parent class loader for this rulebase class loaders, otherwise, the RuleBaseConfiguration.class.getClassLoader() class loader will be used.
-
RuleBaseConfiguration
public RuleBaseConfiguration(ClassLoader... classLoaders)
A constructor that sets the parent classloader to be used while dealing with this rule base- Parameters:
classLoaders
-
-
RuleBaseConfiguration
public RuleBaseConfiguration(Properties properties, ClassLoader... classLoaders)
A constructor that sets the classloader to be used as the parent classloader of this rule base classloaders, and the properties to be used as base configuration options- Parameters:
classLoaders
-properties
-
-
-
Method Detail
-
getDefaultInstance
public static RuleBaseConfiguration getDefaultInstance()
-
writeExternal
public void writeExternal(ObjectOutput out) throws IOException
- Specified by:
writeExternal
in interfaceExternalizable
- Throws:
IOException
-
readExternal
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
- Specified by:
readExternal
in interfaceExternalizable
- Throws:
IOException
ClassNotFoundException
-
setProperty
public void setProperty(String name, String value)
- Specified by:
setProperty
in interfaceorg.kie.api.PropertiesConfiguration
-
getProperty
public String getProperty(String name)
- Specified by:
getProperty
in interfaceorg.kie.api.PropertiesConfiguration
-
makeImmutable
public void makeImmutable()
Makes the configuration object immutable. Once it becomes immutable, there is no way to make it mutable again. This is done to keep consistency.
-
isImmutable
public boolean isImmutable()
Returns true if this configuration object is immutable or false otherwise.- Returns:
-
setSequential
public void setSequential(boolean sequential)
-
isSequential
public boolean isSequential()
-
isMaintainTms
public boolean isMaintainTms()
-
setMaintainTms
public void setMaintainTms(boolean maintainTms)
-
isRemoveIdentities
public boolean isRemoveIdentities()
-
setRemoveIdentities
public void setRemoveIdentities(boolean removeIdentities)
-
isShareAlphaNodes
public boolean isShareAlphaNodes()
-
setShareAlphaNodes
public void setShareAlphaNodes(boolean shareAlphaNodes)
-
isShareBetaNodes
public boolean isShareBetaNodes()
-
setShareBetaNodes
public void setShareBetaNodes(boolean shareBetaNodes)
-
getPermGenThreshold
public int getPermGenThreshold()
-
setPermGenThreshold
public void setPermGenThreshold(int permGenThreshold)
-
getJittingThreshold
public int getJittingThreshold()
-
setJittingThreshold
public void setJittingThreshold(int jittingThreshold)
-
getAlphaNodeHashingThreshold
public int getAlphaNodeHashingThreshold()
-
setAlphaNodeHashingThreshold
public void setAlphaNodeHashingThreshold(int alphaNodeHashingThreshold)
-
getAlphaNodeRangeIndexThreshold
public int getAlphaNodeRangeIndexThreshold()
-
setAlphaNodeRangeIndexThreshold
public void setAlphaNodeRangeIndexThreshold(int alphaNodeRangeIndexThreshold)
-
isBetaNodeRangeIndexEnabled
public boolean isBetaNodeRangeIndexEnabled()
-
setBetaNodeRangeIndexEnabled
public void setBetaNodeRangeIndexEnabled(boolean betaNodeRangeIndexEnabled)
-
getSessionPoolSize
public int getSessionPoolSize()
-
setSessionPoolSize
public void setSessionPoolSize(int sessionPoolSize)
-
getAssertBehaviour
public RuleBaseConfiguration.AssertBehaviour getAssertBehaviour()
-
setAssertBehaviour
public void setAssertBehaviour(RuleBaseConfiguration.AssertBehaviour assertBehaviour)
-
getEventProcessingMode
public org.kie.api.conf.EventProcessingOption getEventProcessingMode()
-
setEventProcessingMode
public void setEventProcessingMode(org.kie.api.conf.EventProcessingOption mode)
-
getCompositeKeyDepth
public int getCompositeKeyDepth()
-
setCompositeKeyDepth
public void setCompositeKeyDepth(int compositeKeyDepth)
-
isIndexLeftBetaMemory
public boolean isIndexLeftBetaMemory()
-
setIndexLeftBetaMemory
public void setIndexLeftBetaMemory(boolean indexLeftBetaMemory)
-
isIndexRightBetaMemory
public boolean isIndexRightBetaMemory()
-
setIndexRightBetaMemory
public void setIndexRightBetaMemory(boolean indexRightBetaMemory)
-
getIndexPrecedenceOption
public org.kie.internal.conf.IndexPrecedenceOption getIndexPrecedenceOption()
-
setIndexPrecedenceOption
public void setIndexPrecedenceOption(org.kie.internal.conf.IndexPrecedenceOption precedence)
-
getConsequenceExceptionHandler
public String getConsequenceExceptionHandler()
-
setConsequenceExceptionHandler
public void setConsequenceExceptionHandler(String consequenceExceptionHandler)
-
getRuleBaseUpdateHandler
public String getRuleBaseUpdateHandler()
-
setRuleBaseUpdateHandler
public void setRuleBaseUpdateHandler(String ruleBaseUpdateHandler)
-
getAgendaGroupFactory
public AgendaGroupFactory getAgendaGroupFactory()
-
getSequentialAgenda
public RuleBaseConfiguration.SequentialAgenda getSequentialAgenda()
-
setSequentialAgenda
public void setSequentialAgenda(RuleBaseConfiguration.SequentialAgenda sequentialAgenda)
-
setMultithreadEvaluation
public void setMultithreadEvaluation(boolean enableMultithread)
Defines if the RuleBase should be executed using a pool of threads for evaluating the rules ("true"), or if the rulebase should work in classic single thread mode ("false").- Parameters:
enableMultithread
- true for multi-thread or false for single-thread. Default is false.
-
enforceSingleThreadEvaluation
public void enforceSingleThreadEvaluation()
-
isMultithreadEvaluation
public boolean isMultithreadEvaluation()
Returns true if the partitioning of the rulebase is enabled and false otherwise. Default is false.- Returns:
-
setMaxThreads
public void setMaxThreads(int maxThreads)
If multi-thread evaluation is enabled, this parameter configures the maximum number of threads each session can use for concurrent Rete propagation.- Parameters:
maxThreads
- the maximum number of threads to use. If 0 or a negative number is set, the engine will use number of threads equal to the number of partitions in the rule base. Default number of threads is 0.
-
getMaxThreads
public int getMaxThreads()
Returns the configured number of maximum threads to use for concurrent propagation when multi-thread evaluation is enabled. Default is zero.- Returns:
-
isDeclarativeAgenda
public boolean isDeclarativeAgenda()
-
setDeclarativeAgendaEnabled
public void setDeclarativeAgendaEnabled(boolean enabled)
Enable declarative agenda- Parameters:
enabled
-
-
isAdvancedProcessRuleIntegration
public boolean isAdvancedProcessRuleIntegration()
-
setAdvancedProcessRuleIntegration
public void setAdvancedProcessRuleIntegration(boolean advancedProcessRuleIntegration)
-
addActivationListener
public void addActivationListener(String name, ActivationListenerFactory factory)
-
getActivationListenerFactory
public ActivationListenerFactory getActivationListenerFactory(String name)
-
getClassLoader
public ClassLoader getClassLoader()
-
setClassLoader
public void setClassLoader(ClassLoader classLoader)
-
setMBeansEnabled
public void setMBeansEnabled(boolean mbeansEnabled)
Defines if the RuleBase should expose management and monitoring MBeans- Parameters:
mbeansEnabled
- true for multi-thread or false for single-thread. Default is false.
-
isMBeansEnabled
public boolean isMBeansEnabled()
Returns true if the management and monitoring through MBeans is active- Returns:
-
setMutabilityEnabled
public void setMutabilityEnabled(boolean mutabilityEnabled)
-
isMutabilityEnabled
public boolean isMutabilityEnabled()
-
getOption
public <T extends org.kie.api.conf.SingleValueKieBaseOption> T getOption(Class<T> option)
- Specified by:
getOption
in interfaceorg.kie.api.conf.KieBaseOptionsConfiguration
-
setOption
public <T extends org.kie.api.conf.KieBaseOption> void setOption(T option)
- Specified by:
setOption
in interfaceorg.kie.api.conf.KieBaseOptionsConfiguration
-
getOption
public <T extends org.kie.api.conf.MultiValueKieBaseOption> T getOption(Class<T> option, String key)
- Specified by:
getOption
in interfaceorg.kie.api.conf.KieBaseOptionsConfiguration
-
getChainedProperties
public org.kie.internal.utils.ChainedProperties getChainedProperties()
-
-