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.base.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​(org.drools.kiesession.rulebase.InternalKnowledgeBase kBase,
                                    org.kie.internal.builder.KnowledgeBuilderConfiguration configuration)
      • KnowledgeBuilderImpl

        public KnowledgeBuilderImpl​(org.kie.internal.builder.KnowledgeBuilderConfiguration 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.base.definitions.InternalKnowledgePackage pkg,
                                    org.kie.internal.builder.KnowledgeBuilderConfiguration 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​(java.io.Reader reader)
                               throws org.drools.drl.parser.DroolsParserException,
                                      java.io.IOException
        Load a rule package from DRL source.
        Throws:
        org.drools.drl.parser.DroolsParserException
        java.io.IOException
      • addPackageFromDrl

        public void addPackageFromDrl​(java.io.Reader reader,
                                      org.kie.api.io.Resource sourceResource)
                               throws org.drools.drl.parser.DroolsParserException,
                                      java.io.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
        java.io.IOException
      • createDumpDrlFile

        public static java.io.File createDumpDrlFile​(java.io.File dumpDir,
                                                     java.lang.String fileName,
                                                     java.lang.String extension)
      • addDsl

        public void addDsl​(org.kie.api.io.Resource resource)
                    throws java.io.IOException
        Throws:
        java.io.IOException
      • addRuleFlow

        public void addRuleFlow​(java.io.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​(java.io.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 final 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
      • addPackageWithResource

        protected void addPackageWithResource​(org.drools.drl.ast.descr.PackageDescr packageDescr,
                                              org.kie.api.io.Resource resource)
      • wireAllRules

        protected void wireAllRules()
      • processKieBaseTypes

        protected void processKieBaseTypes()
      • computeIfAbsent

        public <T extends org.kie.api.internal.io.ResourceTypePackage<?>> T computeIfAbsent​(org.kie.api.io.ResourceType resourceType,
                                                                                            java.lang.String namespace,
                                                                                            java.util.function.Function<? super org.kie.api.io.ResourceType,​T> mappingFunction)
        Specified by:
        computeIfAbsent in interface org.kie.internal.builder.AssemblerContext
      • registerPackage

        public void registerPackage​(org.drools.drl.ast.descr.PackageDescr packageDescr)
      • filterAccepts

        public boolean filterAccepts​(org.kie.internal.builder.ResourceChange.Type type,
                                     java.lang.String namespace,
                                     java.lang.String name)
        Specified by:
        filterAccepts in interface TypeDeclarationContext
      • updateResults

        public void updateResults()
      • updateResults

        public void updateResults​(java.util.List<org.kie.internal.builder.KnowledgeBuilderResult> results)
      • compileAll

        public void compileAll()
      • reloadAll

        public void reloadAll()
      • addPackage

        public void addPackage​(org.drools.base.definitions.InternalKnowledgePackage newPkg)
      • getPackages

        public org.drools.base.definitions.InternalKnowledgePackage[] getPackages()
      • getPackage

        public org.drools.base.definitions.InternalKnowledgePackage getPackage​(java.lang.String name)
        Specified by:
        getPackage in interface InternalKnowledgeBuilder
      • 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​(java.lang.String name,
                              java.lang.reflect.Type type)
        Specified by:
        addGlobal in interface GlobalVariableContext
      • hasErrors

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

        public org.kie.internal.builder.KnowledgeBuilderResults getResults​(org.kie.internal.builder.ResultSeverity... problemTypes)
        Description copied from interface: BuildResultCollector
        Return the knowledge builder results for the listed severities.
        Specified by:
        getResults in interface BuildResultCollector
        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 BuildResultCollector
        Specified by:
        hasResults in interface org.kie.internal.builder.KnowledgeBuilder
      • hasWarnings

        public boolean hasWarnings()
      • hasInfo

        public boolean hasInfo()
      • getWarnings

        public java.util.List<DroolsWarning> getWarnings()
      • 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​(java.util.List<org.kie.api.io.Resource> resources)
      • undo

        public void undo()
        Specified by:
        undo in interface org.kie.internal.builder.KnowledgeBuilder
      • setAssetFilter

        public void setAssetFilter​(AssetFilter assetFilter)
      • getAssetFilter

        protected AssetFilter getAssetFilter()
      • 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 java.util.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)
      • getCachedOrCreate

        public <T> T getCachedOrCreate​(java.lang.String key,
                                       java.util.function.Supplier<T> creator)
      • buildPackages

        public final void buildPackages​(java.util.Collection<CompositePackageDescr> packages)
      • doFirstBuildStep

        protected void doFirstBuildStep​(java.util.Collection<CompositePackageDescr> packages)
        Performs the actual building of rules, but may be empty in subclasses
      • doSecondBuildStep

        protected void doSecondBuildStep​(java.util.Collection<CompositePackageDescr> packages)
        Used by subclasses that need to perform the build after the assemblers
      • buildPackagesWithoutRules

        public void buildPackagesWithoutRules​(java.util.Collection<CompositePackageDescr> packages)