Class KnowledgeBuilderImpl

    • Field Detail

      • logger

        protected static final transient org.slf4j.Logger logger
    • 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 PackageBuilder

        PackageBuilderConfiguration 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.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)
      • createBuildContext

        protected BuildContext createBuildContext()
      • setBuildContext

        public void setBuildContext​(BuildContext buildContext)
      • 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.DroolsParserException
        IOException
      • 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.DroolsParserException
        IOException
      • 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.DroolsParserException
        IOException
      • 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.DroolsParserException
        IOException
      • addPackageFromDrl

        public void addPackageFromDrl​(org.kie.api.io.Resource resource)
                               throws org.drools.drl.parser.DroolsParserException,
                                      IOException
        Throws:
        org.drools.drl.parser.DroolsParserException
        IOException
      • 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.DroolsParserException
        IOException
      • addPackageFromXml

        public void addPackageFromXml​(org.kie.api.io.Resource resource)
                               throws org.drools.drl.parser.DroolsParserException,
                                      IOException
        Throws:
        org.drools.drl.parser.DroolsParserException
        IOException
      • addPackageFromDslr

        public void addPackageFromDslr​(org.kie.api.io.Resource resource)
                                throws org.drools.drl.parser.DroolsParserException,
                                       IOException
        Throws:
        org.drools.drl.parser.DroolsParserException
        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.
      • 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:
        addPackage in interface InternalKnowledgeBuilder
      • 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:
        computeIfAbsent in interface org.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)
      • processWindowDeclarations

        protected void processWindowDeclarations​(PackageRegistry pkgRegistry,
                                                 org.drools.drl.ast.descr.PackageDescr packageDescr)
      • getPackages

        public org.drools.core.definitions.InternalKnowledgePackage[] getPackages()
      • 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).
      • addGlobal

        public void addGlobal​(String name,
                              Class<?> type)
      • hasErrors

        public boolean hasErrors()
        This will return true if there were errors in the package building and compiling phase
        Specified by:
        hasErrors in interface org.kie.internal.builder.KnowledgeBuilder
      • getResults

        public org.kie.internal.builder.KnowledgeBuilderResults getResults​(org.kie.internal.builder.ResultSeverity... problemTypes)
        Specified by:
        getResults in interface org.kie.internal.builder.KnowledgeBuilder
      • hasResults

        public boolean hasResults​(org.kie.internal.builder.ResultSeverity... problemTypes)
        Specified by:
        hasResults in interface org.kie.internal.builder.KnowledgeBuilder
      • hasWarnings

        public boolean hasWarnings()
      • hasInfo

        public boolean hasInfo()
      • reportError

        public void reportError​(org.kie.internal.builder.KnowledgeBuilderError error)
        Specified by:
        reportError in interface org.kie.internal.builder.AssemblerContext
      • getErrors

        public PackageBuilderErrors getErrors()
        Specified by:
        getErrors in interface DroolsAssemblerContext
        Specified by:
        getErrors in interface org.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()
      • 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:
        undo in interface org.kie.internal.builder.KnowledgeBuilder
      • add

        public void add​(org.kie.api.io.Resource resource,
                        org.kie.api.io.ResourceType type)
        Specified by:
        add in interface org.kie.internal.builder.KnowledgeBuilder
      • batch

        public org.kie.internal.builder.CompositeKnowledgeBuilder batch()
        Specified by:
        batch in interface org.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:
        add in interface org.kie.internal.builder.KnowledgeBuilder
      • getKnowledgePackages

        public Collection<org.kie.api.definition.KiePackage> getKnowledgePackages()
        Specified by:
        getKnowledgePackages in interface org.kie.internal.builder.KnowledgeBuilder
      • newKieBase

        public org.kie.api.KieBase newKieBase()
        Specified by:
        newKieBase in interface org.kie.internal.builder.KnowledgeBuilder
      • newKnowledgeBase

        public org.kie.api.KieBase newKnowledgeBase​(org.kie.api.KieBaseConfiguration conf)
      • getTypeDeclaration

        public org.drools.core.rule.TypeDeclaration getTypeDeclaration​(org.drools.core.spi.ObjectType objectType)
        Specified by:
        getTypeDeclaration in interface DroolsAssemblerContext
      • 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)
      • getCachedOrCreate

        public <T> T getCachedOrCreate​(String key,
                                       Supplier<T> creator)
      • 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