Package org.drools.compiler.builder.impl
Class KnowledgeBuilderImpl
- java.lang.Object
-
- org.drools.compiler.builder.impl.KnowledgeBuilderImpl
-
- All Implemented Interfaces:
DroolsAssemblerContext,InternalKnowledgeBuilder,org.kie.internal.builder.AssemblerContext,org.kie.internal.builder.KnowledgeBuilder,org.kie.internal.builder.ProcessBuilder,org.kie.internal.builder.RuleBuilder
public class KnowledgeBuilderImpl extends Object implements InternalKnowledgeBuilder
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceKnowledgeBuilderImpl.AssetFilterstatic classKnowledgeBuilderImpl.ForkJoinPoolHolder-
Nested classes/interfaces inherited from interface org.drools.compiler.builder.InternalKnowledgeBuilder
InternalKnowledgeBuilder.Empty, InternalKnowledgeBuilder.ResourceRemovalResult
-
-
Field Summary
Fields Modifier and Type Field Description protected static org.slf4j.Loggerlogger
-
Constructor Summary
Constructors Constructor Description KnowledgeBuilderImpl()Use this when package is starting from scratch.KnowledgeBuilderImpl(KnowledgeBuilderConfigurationImpl configuration)Pass a specific configuration for the PackageBuilderKnowledgeBuilderImpl(org.drools.core.definitions.InternalKnowledgePackage pkg)This will allow you to merge rules into this pre existing package.KnowledgeBuilderImpl(org.drools.core.definitions.InternalKnowledgePackage pkg, KnowledgeBuilderConfigurationImpl configuration)KnowledgeBuilderImpl(org.drools.kiesession.rulebase.InternalKnowledgeBase kBase)KnowledgeBuilderImpl(org.drools.kiesession.rulebase.InternalKnowledgeBase kBase, KnowledgeBuilderConfigurationImpl configuration)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidadd(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type)voidadd(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type, org.kie.api.io.ResourceConfiguration configuration)voidaddBuilderResult(org.kie.internal.builder.KnowledgeBuilderResult result)voidaddDsl(org.kie.api.io.Resource resource)voidaddGlobal(String name, Class<?> type)voidaddKnowledgeResource(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type, org.kie.api.io.ResourceConfiguration configuration)voidaddPackage(org.drools.core.definitions.InternalKnowledgePackage newPkg)voidaddPackage(org.drools.drl.ast.descr.PackageDescr packageDescr)Adds a package from a Descr/AST also triggering its compilation and the generation of the corresponding rete/phreak networkvoidaddPackageFromDecisionTable(org.kie.api.io.Resource resource, org.kie.api.io.ResourceConfiguration configuration)voidaddPackageFromDrl(Reader reader)Load a rule package from DRL source.voidaddPackageFromDrl(Reader reader, org.kie.api.io.Resource sourceResource)Load a rule package from DRL source and associate all loaded artifacts with the given resource.voidaddPackageFromDrl(org.kie.api.io.Resource resource)voidaddPackageFromDslr(org.kie.api.io.Resource resource)voidaddPackageFromTemplate(org.kie.api.io.Resource resource)voidaddPackageFromXml(Reader reader)Load a rule package from XML source.voidaddPackageFromXml(org.kie.api.io.Resource resource)voidaddProcessFromXml(Reader processSource)Deprecated.voidaddProcessFromXml(org.kie.api.io.Resource resource)Deprecated.voidaddRuleFlow(Reader processSource)Add a ruleflow (.rfm) asset to this package.org.kie.internal.builder.CompositeKnowledgeBuilderbatch()protected voidbuildEntryPoints(Collection<CompositePackageDescr> packages)protected voidbuildOtherDeclarations(Collection<CompositePackageDescr> packages)voidbuildPackages(Collection<CompositePackageDescr> packages)voidbuildPackagesWithoutRules(Collection<CompositePackageDescr> packages)protected voidbuildRules(Collection<CompositePackageDescr> packages)protected voidbuildTypeDeclarations(Collection<CompositePackageDescr> packages)voidcompileAll()protected voidcompileKnowledgePackages(org.drools.drl.ast.descr.PackageDescr packageDescr, PackageRegistry pkgRegistry)protected voidcompileRete(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)<T extends org.kie.api.internal.io.ResourceTypePackage<?>>
TcomputeIfAbsent(org.kie.api.io.ResourceType resourceType, String namespace, Function<? super org.kie.api.io.ResourceType,T> mappingFunction)protected BuildContextcreateBuildContext()static FilecreateDumpDrlFile(File dumpDir, String fileName, String extension)protected voiddoFirstBuildStep(Collection<CompositePackageDescr> packages)Performs the actual building of rules, but may be empty in subclassesprotected voiddoSecondBuildStep(Collection<CompositePackageDescr> packages)Used by subclasses that need to perform the build after the assemblersorg.drools.core.rule.TypeDeclarationgetAndRegisterTypeDeclaration(Class<?> cls, String packageName)BuildContextgetBuildContext()KnowledgeBuilderConfigurationImplgetBuilderConfiguration()Return the PackageBuilderConfiguration for this PackageBuilder session<T> TgetCachedOrCreate(String key, Supplier<T> creator)org.drools.drl.parser.lang.dsl.DefaultExpandergetDslExpander()Returns an expander for DSLs (only if there is a DSL configured for this package).PackageBuilderErrorsgetErrors()Map<String,Class<?>>getGlobals()org.drools.kiesession.rulebase.InternalKnowledgeBasegetKnowledgeBase()Collection<org.kie.api.definition.KiePackage>getKnowledgePackages()PackageRegistrygetOrCreatePackageRegistry(org.drools.drl.ast.descr.PackageDescr packageDescr)org.drools.core.definitions.InternalKnowledgePackagegetPackage(String name)List<org.drools.drl.ast.descr.PackageDescr>getPackageDescrs(String packageName)Collection<String>getPackageNames()Map<String,PackageRegistry>getPackageRegistry()PackageRegistrygetPackageRegistry(String name)org.drools.core.definitions.InternalKnowledgePackage[]getPackages()ProcessBuildergetProcessBuilder()org.kie.api.builder.ReleaseIdgetReleaseId()org.kie.internal.builder.KnowledgeBuilderResultsgetResults(org.kie.internal.builder.ResultSeverity... problemTypes)ClassLoadergetRootClassLoader()org.drools.core.rule.TypeDeclarationgetTypeDeclaration(Class<?> cls)org.drools.core.rule.TypeDeclarationgetTypeDeclaration(org.drools.core.spi.ObjectType objectType)List<DroolsWarning>getWarnings()booleanhasErrors()This will return true if there were errors in the package building and compiling phasebooleanhasInfo()booleanhasResults(org.kie.internal.builder.ResultSeverity... problemTypes)booleanhasWarnings()protected voidinitPackageRegistries(Collection<CompositePackageDescr> packages)org.kie.api.KieBasenewKieBase()org.kie.api.KieBasenewKnowledgeBase(org.kie.api.KieBaseConfiguration conf)protected voidnormalizeAnnotations(org.drools.drl.ast.descr.AnnotatedBaseDescr annotationsContainer, org.drools.core.addon.TypeResolver typeResolver, boolean isStrict)voidnormalizeRuleAnnotations(org.drools.drl.ast.descr.PackageDescr packageDescr, org.drools.core.addon.TypeResolver typeResolver)voidnormalizeTypeDeclarationAnnotations(org.drools.drl.ast.descr.PackageDescr packageDescr, org.drools.core.addon.TypeResolver typeResolver)protected voidprocessAccumulateFunctions(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)protected voidprocessFunctions(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)protected voidprocessGlobals(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)protected voidprocessKieBaseTypes()protected voidprocessOtherDeclarations(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)protected voidprocessWindowDeclarations(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)voidregisterBuildResource(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type)voidregisterBuildResources(List<org.kie.api.io.Resource> resources)voidregisterPackage(org.drools.drl.ast.descr.PackageDescr packageDescr)voidreloadAll()InternalKnowledgeBuilder.ResourceRemovalResultremoveObjectsGeneratedFromResource(org.kie.api.io.Resource resource)voidreportError(org.kie.internal.builder.KnowledgeBuilderError error)voidresetErrors()Reset the error list.voidresetProblems()voidresetWarnings()voidrewireAllClassObjectTypes()voidsetAssetFilter(KnowledgeBuilderImpl.AssetFilter assetFilter)voidsetBuildContext(BuildContext buildContext)voidsetReleaseId(org.kie.api.builder.ReleaseId releaseId)voidundo()voidupdateResults()voidupdateResults(List<org.kie.internal.builder.KnowledgeBuilderResult> results)protected voidvalidateUniqueRuleNames(org.drools.drl.ast.descr.PackageDescr packageDescr)protected voidwireAllRules()
-
-
-
Constructor Detail
-
KnowledgeBuilderImpl
public KnowledgeBuilderImpl()
Use this when package is starting from scratch.
-
KnowledgeBuilderImpl
public KnowledgeBuilderImpl(org.drools.core.definitions.InternalKnowledgePackage pkg)
This will allow you to merge rules into this pre existing package.
-
KnowledgeBuilderImpl
public KnowledgeBuilderImpl(org.drools.kiesession.rulebase.InternalKnowledgeBase kBase)
-
KnowledgeBuilderImpl
public KnowledgeBuilderImpl(KnowledgeBuilderConfigurationImpl configuration)
Pass a specific configuration for the PackageBuilderPackageBuilderConfiguration is not thread safe and it also contains state. Once it is created and used in one or more PackageBuilders it should be considered immutable. Do not modify its properties while it is being used by a PackageBuilder.
-
KnowledgeBuilderImpl
public KnowledgeBuilderImpl(org.drools.core.definitions.InternalKnowledgePackage pkg, KnowledgeBuilderConfigurationImpl configuration)
-
KnowledgeBuilderImpl
public KnowledgeBuilderImpl(org.drools.kiesession.rulebase.InternalKnowledgeBase kBase, KnowledgeBuilderConfigurationImpl configuration)
-
-
Method Detail
-
getReleaseId
public org.kie.api.builder.ReleaseId getReleaseId()
-
setReleaseId
public void setReleaseId(org.kie.api.builder.ReleaseId releaseId)
-
getBuildContext
public BuildContext getBuildContext()
-
createBuildContext
protected BuildContext createBuildContext()
-
setBuildContext
public void setBuildContext(BuildContext buildContext)
-
getKnowledgeBase
public org.drools.kiesession.rulebase.InternalKnowledgeBase getKnowledgeBase()
- Specified by:
getKnowledgeBasein interfaceDroolsAssemblerContext
-
addPackageFromDrl
public void addPackageFromDrl(Reader reader) throws org.drools.drl.parser.DroolsParserException, IOException
Load a rule package from DRL source.- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
addPackageFromDrl
public void addPackageFromDrl(Reader reader, org.kie.api.io.Resource sourceResource) throws org.drools.drl.parser.DroolsParserException, IOException
Load a rule package from DRL source and associate all loaded artifacts with the given resource.- Parameters:
reader-sourceResource- the source resource for the read artifacts- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
addPackageFromDecisionTable
public void addPackageFromDecisionTable(org.kie.api.io.Resource resource, org.kie.api.io.ResourceConfiguration configuration) throws org.drools.drl.parser.DroolsParserException, IOException- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
createDumpDrlFile
public static File createDumpDrlFile(File dumpDir, String fileName, String extension)
-
addPackageFromTemplate
public void addPackageFromTemplate(org.kie.api.io.Resource resource) throws org.drools.drl.parser.DroolsParserException, IOException- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
addPackageFromDrl
public void addPackageFromDrl(org.kie.api.io.Resource resource) throws org.drools.drl.parser.DroolsParserException, IOException- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
addPackageFromXml
public void addPackageFromXml(Reader reader) throws org.drools.drl.parser.DroolsParserException, IOException
Load a rule package from XML source.- Parameters:
reader-- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
addPackageFromXml
public void addPackageFromXml(org.kie.api.io.Resource resource) throws org.drools.drl.parser.DroolsParserException, IOException- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
addPackageFromDslr
public void addPackageFromDslr(org.kie.api.io.Resource resource) throws org.drools.drl.parser.DroolsParserException, IOException- Throws:
org.drools.drl.parser.DroolsParserExceptionIOException
-
addDsl
public void addDsl(org.kie.api.io.Resource resource) throws IOException- Throws:
IOException
-
addRuleFlow
public void addRuleFlow(Reader processSource)
Add a ruleflow (.rfm) asset to this package.
-
addProcessFromXml
@Deprecated public void addProcessFromXml(org.kie.api.io.Resource resource)
Deprecated.
-
getProcessBuilder
public ProcessBuilder getProcessBuilder()
-
addProcessFromXml
@Deprecated public void addProcessFromXml(Reader processSource)
Deprecated.
-
addKnowledgeResource
public void addKnowledgeResource(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type, org.kie.api.io.ResourceConfiguration configuration)
-
addPackage
public void addPackage(org.drools.drl.ast.descr.PackageDescr packageDescr)
Adds a package from a Descr/AST also triggering its compilation and the generation of the corresponding rete/phreak network- Specified by:
addPackagein interfaceInternalKnowledgeBuilder
-
compileKnowledgePackages
protected void compileKnowledgePackages(org.drools.drl.ast.descr.PackageDescr packageDescr, PackageRegistry pkgRegistry)
-
wireAllRules
protected void wireAllRules()
-
processKieBaseTypes
protected void processKieBaseTypes()
-
compileRete
protected void compileRete(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)
-
addBuilderResult
public void addBuilderResult(org.kie.internal.builder.KnowledgeBuilderResult result)
-
computeIfAbsent
public <T extends org.kie.api.internal.io.ResourceTypePackage<?>> T computeIfAbsent(org.kie.api.io.ResourceType resourceType, String namespace, Function<? super org.kie.api.io.ResourceType,T> mappingFunction)- Specified by:
computeIfAbsentin interfaceorg.kie.internal.builder.AssemblerContext
-
getOrCreatePackageRegistry
public PackageRegistry getOrCreatePackageRegistry(org.drools.drl.ast.descr.PackageDescr packageDescr)
-
registerPackage
public void registerPackage(org.drools.drl.ast.descr.PackageDescr packageDescr)
-
updateResults
public void updateResults()
-
updateResults
public void updateResults(List<org.kie.internal.builder.KnowledgeBuilderResult> results)
-
compileAll
public void compileAll()
-
reloadAll
public void reloadAll()
-
addPackage
public void addPackage(org.drools.core.definitions.InternalKnowledgePackage newPkg)
-
validateUniqueRuleNames
protected void validateUniqueRuleNames(org.drools.drl.ast.descr.PackageDescr packageDescr)
-
processOtherDeclarations
protected void processOtherDeclarations(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)
-
processGlobals
protected void processGlobals(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)
-
processAccumulateFunctions
protected void processAccumulateFunctions(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)
-
processFunctions
protected void processFunctions(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)
-
getAndRegisterTypeDeclaration
public org.drools.core.rule.TypeDeclaration getAndRegisterTypeDeclaration(Class<?> cls, String packageName)
- Specified by:
getAndRegisterTypeDeclarationin interfaceDroolsAssemblerContext
-
processWindowDeclarations
protected void processWindowDeclarations(PackageRegistry pkgRegistry, org.drools.drl.ast.descr.PackageDescr packageDescr)
-
getPackages
public org.drools.core.definitions.InternalKnowledgePackage[] getPackages()
-
getBuilderConfiguration
public KnowledgeBuilderConfigurationImpl getBuilderConfiguration()
Return the PackageBuilderConfiguration for this PackageBuilder session- Specified by:
getBuilderConfigurationin interfaceDroolsAssemblerContext- Returns:
- The PackageBuilderConfiguration
-
getPackageRegistry
public PackageRegistry getPackageRegistry(String name)
- Specified by:
getPackageRegistryin interfaceDroolsAssemblerContext
-
getPackage
public org.drools.core.definitions.InternalKnowledgePackage getPackage(String name)
- Specified by:
getPackagein interfaceInternalKnowledgeBuilder
-
getPackageRegistry
public Map<String,PackageRegistry> getPackageRegistry()
-
getPackageNames
public Collection<String> getPackageNames()
-
getPackageDescrs
public List<org.drools.drl.ast.descr.PackageDescr> getPackageDescrs(String packageName)
- Specified by:
getPackageDescrsin interfaceDroolsAssemblerContext
-
getDslExpander
public org.drools.drl.parser.lang.dsl.DefaultExpander getDslExpander()
Returns an expander for DSLs (only if there is a DSL configured for this package).
-
getGlobals
public Map<String,Class<?>> getGlobals()
- Specified by:
getGlobalsin interfaceDroolsAssemblerContext
-
hasErrors
public boolean hasErrors()
This will return true if there were errors in the package building and compiling phase- Specified by:
hasErrorsin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
getResults
public org.kie.internal.builder.KnowledgeBuilderResults getResults(org.kie.internal.builder.ResultSeverity... problemTypes)
- Specified by:
getResultsin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
hasResults
public boolean hasResults(org.kie.internal.builder.ResultSeverity... problemTypes)
- Specified by:
hasResultsin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
hasWarnings
public boolean hasWarnings()
-
hasInfo
public boolean hasInfo()
-
getWarnings
public List<DroolsWarning> getWarnings()
-
reportError
public void reportError(org.kie.internal.builder.KnowledgeBuilderError error)
- Specified by:
reportErrorin interfaceorg.kie.internal.builder.AssemblerContext
-
getErrors
public PackageBuilderErrors getErrors()
- Specified by:
getErrorsin interfaceDroolsAssemblerContext- Specified by:
getErrorsin interfaceorg.kie.internal.builder.KnowledgeBuilder- Returns:
- A list of Error objects that resulted from building and compiling the package.
-
resetErrors
public void resetErrors()
Reset the error list. This is useful when incrementally building packages. Care should be used when building this, if you clear this when there were errors on items that a rule depends on (eg functions), then you will get spurious errors which will not be that helpful.
-
resetWarnings
public void resetWarnings()
-
resetProblems
public void resetProblems()
-
getRootClassLoader
public ClassLoader getRootClassLoader()
- Specified by:
getRootClassLoaderin interfaceDroolsAssemblerContext
-
registerBuildResource
public void registerBuildResource(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type)
-
registerBuildResources
public void registerBuildResources(List<org.kie.api.io.Resource> resources)
-
undo
public void undo()
- Specified by:
undoin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
removeObjectsGeneratedFromResource
public InternalKnowledgeBuilder.ResourceRemovalResult removeObjectsGeneratedFromResource(org.kie.api.io.Resource resource)
- Specified by:
removeObjectsGeneratedFromResourcein interfaceInternalKnowledgeBuilder
-
rewireAllClassObjectTypes
public void rewireAllClassObjectTypes()
- Specified by:
rewireAllClassObjectTypesin interfaceInternalKnowledgeBuilder
-
setAssetFilter
public void setAssetFilter(KnowledgeBuilderImpl.AssetFilter assetFilter)
-
add
public void add(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type)- Specified by:
addin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
batch
public org.kie.internal.builder.CompositeKnowledgeBuilder batch()
- Specified by:
batchin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
add
public void add(org.kie.api.io.Resource resource, org.kie.api.io.ResourceType type, org.kie.api.io.ResourceConfiguration configuration)- Specified by:
addin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
getKnowledgePackages
public Collection<org.kie.api.definition.KiePackage> getKnowledgePackages()
- Specified by:
getKnowledgePackagesin interfaceorg.kie.internal.builder.KnowledgeBuilder
-
newKieBase
public org.kie.api.KieBase newKieBase()
- Specified by:
newKieBasein interfaceorg.kie.internal.builder.KnowledgeBuilder
-
newKnowledgeBase
public org.kie.api.KieBase newKnowledgeBase(org.kie.api.KieBaseConfiguration conf)
-
getTypeDeclaration
public org.drools.core.rule.TypeDeclaration getTypeDeclaration(Class<?> cls)
- Specified by:
getTypeDeclarationin interfaceDroolsAssemblerContext
-
getTypeDeclaration
public org.drools.core.rule.TypeDeclaration getTypeDeclaration(org.drools.core.spi.ObjectType objectType)
- Specified by:
getTypeDeclarationin interfaceDroolsAssemblerContext
-
normalizeTypeDeclarationAnnotations
public void normalizeTypeDeclarationAnnotations(org.drools.drl.ast.descr.PackageDescr packageDescr, org.drools.core.addon.TypeResolver typeResolver)
-
normalizeRuleAnnotations
public void normalizeRuleAnnotations(org.drools.drl.ast.descr.PackageDescr packageDescr, org.drools.core.addon.TypeResolver typeResolver)
-
normalizeAnnotations
protected void normalizeAnnotations(org.drools.drl.ast.descr.AnnotatedBaseDescr annotationsContainer, org.drools.core.addon.TypeResolver typeResolver, boolean isStrict)
-
buildPackages
public final void buildPackages(Collection<CompositePackageDescr> packages)
-
doFirstBuildStep
protected void doFirstBuildStep(Collection<CompositePackageDescr> packages)
Performs the actual building of rules, but may be empty in subclasses
-
doSecondBuildStep
protected void doSecondBuildStep(Collection<CompositePackageDescr> packages)
Used by subclasses that need to perform the build after the assemblers
-
buildPackagesWithoutRules
public void buildPackagesWithoutRules(Collection<CompositePackageDescr> packages)
-
initPackageRegistries
protected void initPackageRegistries(Collection<CompositePackageDescr> packages)
-
buildEntryPoints
protected void buildEntryPoints(Collection<CompositePackageDescr> packages)
-
buildTypeDeclarations
protected void buildTypeDeclarations(Collection<CompositePackageDescr> packages)
-
buildOtherDeclarations
protected void buildOtherDeclarations(Collection<CompositePackageDescr> packages)
-
buildRules
protected void buildRules(Collection<CompositePackageDescr> packages)
-
-