Class DefaultRuleEngineKieModuleSwapper
- java.lang.Object
-
- de.hybris.platform.ruleengine.init.impl.DefaultRuleEngineKieModuleSwapper
-
- All Implemented Interfaces:
RuleEngineKieModuleSwapper
public class DefaultRuleEngineKieModuleSwapper extends java.lang.Object implements RuleEngineKieModuleSwapper
Default (drools-based) implementation of theRuleEngineKieModuleSwapperinterface
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringWORKER_PRE_DESTROY_TIMEOUT
-
Constructor Summary
Constructors Constructor Description DefaultRuleEngineKieModuleSwapper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringactivateKieModule(DroolsKIEModuleModel module)Updates the instance ofDroolsKIEModuleModelwith information about affectively deployedReleaseIdversionvoidaddKieBase(org.kie.api.builder.model.KieModuleModel module, DroolsKIEBaseModel base)Adds newKieBaseModelto aKieModuleModelwith all rulesvoidaddKieBase(org.kie.api.builder.model.KieModuleModel module, org.kie.api.builder.KieFileSystem kfs, DroolsKIEBaseModel base, KIEModuleCacheBuilder cache)Adds newKieBaseModelto aKieModuleModelwith all rulesvoidaddKieSession(org.kie.api.builder.model.KieBaseModel base, DroolsKIESessionModel session)Adds instance of newKieSessionModeltoKieBaseModelprotected ResultItemaddNewResultItemOf(RuleEngineActionResult result, MessageLevel messageLevel, java.lang.String message)voidaddRules(org.kie.api.builder.KieFileSystem kfs, DroolsKIEBaseModel base, KIEModuleCacheBuilder cache)Adds rules from a givenDroolsKIEBaseModeltoKieFileSystemvoidaddRulesToCache(DroolsKIEBaseModel base, KIEModuleCacheBuilder cache)Add cacheable data of rules of the latest versions belonging to the KieBase into the cache.voidbeforeDestroy()This method to be called by containers (like spring container) as destroy methodprotected org.drools.compiler.kie.builder.impl.MemoryKieModulecloneForIncrementalCompilation(org.drools.compiler.kie.builder.impl.MemoryKieModule origKieModule, org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kModuleModel)Method creates the clone of theKieModule, having the specifiedReleaseId.protected voidcompleteWithFailure(org.kie.api.builder.ReleaseId releaseId, RuleEngineActionResult result, KieContainerListener listener)protected voidcopyChanges(org.drools.compiler.kie.builder.impl.MemoryKieModule trgKieModule, org.drools.compiler.kie.builder.impl.MemoryKieModule srcKieModule)org.apache.commons.lang3.tuple.Pair<org.kie.api.builder.KieModule,KIEModuleCacheBuilder>createKieModule(DroolsKIEModuleModel module, RuleEngineActionResult result)Creates the new instance ofKieModule, based on information contained inDroolsKIEModuleModelprotected org.apache.commons.lang3.tuple.Pair<org.kie.api.builder.KieModule,KIEModuleCacheBuilder>createKieModule(DroolsKIEModuleModel module, RuleEngineActionResult result, boolean enableIncrementalUpdate)protected voiddeleteRulesFromKieModule(org.drools.compiler.kie.builder.impl.MemoryKieModule kieModule, java.util.Collection<DroolsRuleModel> rules)Removes the specified collection ofDroolsRuleModelrules fromKieModuleprotected java.util.List<org.kie.api.builder.KieBuilder>deployRules(DroolsKIEModuleModel module, org.kie.api.builder.model.KieModuleModel kieModuleModel, DroolsKIEBaseModel kieBase, KIEModuleCacheBuilder cache)protected voiddeployRulesIncrementally(org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kieModuleModel, org.kie.api.builder.KieModule kieModule, java.util.Collection<DroolsRuleModel> rulesToAdd, java.util.Collection<DroolsRuleModel> rulesToRemove, RuleEngineActionResult result)Deploy incrementally the rule engine updates.protected <R extends D,D extends AbstractRuleEngineRuleModel>
java.util.Set<R>filterByBiggestVersion(java.util.Collection<D> rulesForVersion)protected ConcurrentMapFactorygetConcurrentMapFactory()protected ConfigurationServicegetConfigurationService()protected ContentMatchRulesFiltergetContentMatchRulesFilter()protected TenantgetCurrentTenant()java.util.Optional<org.kie.api.builder.ReleaseId>getDeployedReleaseId(DroolsKIEModuleModel module, java.lang.String deployedMvnVersion)Returns (optional)ReleaseIdfor a deployed version of theKieModuleModelprotected EngineRuleDaogetEngineRuleDao()protected IncrementalRuleEngineUpdateStrategygetIncrementalRuleEngineUpdateStrategy()protected InitializeModegetInitializeMode(ExecutionContext executionContext)protected KieModuleServicegetKieModuleService()protected org.kie.api.KieServicesgetKieServices()protected ModelServicegetModelService()protected java.lang.StringgetNextWorkerName()org.kie.api.builder.ReleaseIdgetReleaseId(DroolsKIEModuleModel module)Creates the new instance ofReleaseIdbased onDroolsKIEModuleModelprotected RuleEngineBootstrap<org.kie.api.KieServices,org.kie.api.runtime.KieContainer,DroolsKIEModuleModel>getRuleEngineBootstrap()protected RuleEngineCacheServicegetRuleEngineCacheService()protected RulePublishingSpliteratorgetRulePublishingSpliterator()protected RulesModuleDaogetRulesModuleDao()protected SuspendResumeTaskManagergetSuspendResumeTaskManager()protected java.util.concurrent.ThreadFactorygetTenantAwareThreadFactory()protected longgetWorkerPreDestroyTimeout()org.kie.api.runtime.KieContainerinitializeNewKieContainer(DroolsKIEModuleModel module, org.kie.api.builder.KieModule kieModule, RuleEngineActionResult result)Creates the new instance ofKieContainerfor a givenKieModuleprotected voidinitializeNewModule(DroolsKIEModuleModel module, KieContainerListener listener, boolean enableIncrementalUpdates, RuleEngineActionResult result)protected booleanisInitialEngineStartup(org.kie.api.builder.ReleaseId releaseId, java.lang.String newDeployedMvnVersion)protected booleanisRuleValid(AbstractRuleEngineRuleModel rule)protected voidmergeFileSystemToKieModule(org.drools.compiler.kie.builder.impl.MemoryKieModule partialKieModule, MemoryFileSystem mainMemoryFileSystem)protected org.kie.api.builder.KieModulemergePartialKieModules(org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kieModuleModel, java.util.List<org.kie.api.builder.KieBuilder> kieBuilders)protected org.kie.api.builder.KieModulemergePartialKieModules(org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kieModuleModel, org.kie.api.builder.KieModule partialKieModule)protected voidnewKieModule(DroolsKIEModuleModel module, KieContainerListener listener, boolean enableIncrementalUpdates, RuleEngineActionResult result)protected java.lang.ObjectonSwapFailed(java.lang.Throwable t, RuleEngineActionResult result, java.util.function.Supplier<java.lang.Object> resetFlagSupplier)protected java.util.Optional<org.apache.commons.lang3.tuple.Pair<java.util.Collection<DroolsRuleModel>,java.util.Collection<DroolsRuleModel>>>prepareIncrementalUpdate(org.kie.api.builder.ReleaseId releaseId, DroolsKIEBaseModel kieBase)Given theReleaseIdof the deployedKieModulethe method returns the tuple consisting of rules to add/update and rules to delete.protected voidregisterWorker(java.lang.String moduleName, java.lang.Thread worker)booleanremoveKieModuleIfPresent(org.kie.api.builder.ReleaseId releaseId, RuleEngineActionResult result)Tries to remove theKieModulewith givenReleaseIdfromKieRepositorybooleanremoveOldKieModuleIfPresent(RuleEngineActionResult result)Tries to remove the oldKieModulefromKieRepositoryprotected booleanrestoreKieModule(DroolsKIEModuleModel module, KieContainerListener listener, RuleEngineActionResult result)voidsetConcurrentMapFactory(ConcurrentMapFactory concurrentMapFactory)voidsetConfigurationService(ConfigurationService configurationService)voidsetContentMatchRulesFilter(ContentMatchRulesFilter contentMatchRulesFilter)voidsetCurrentTenant(Tenant currentTenant)voidsetEngineRuleDao(EngineRuleDao engineRuleDao)voidsetIncrementalRuleEngineUpdateStrategy(IncrementalRuleEngineUpdateStrategy incrementalRuleEngineUpdateStrategy)voidsetKieModuleService(KieModuleService kieModuleService)protected voidsetKieServices(org.kie.api.KieServices kieServices)voidsetModelService(ModelService modelService)voidsetRuleEngineBootstrap(RuleEngineBootstrap<org.kie.api.KieServices,org.kie.api.runtime.KieContainer,DroolsKIEModuleModel> ruleEngineBootstrap)voidsetRuleEngineCacheService(RuleEngineCacheService ruleEngineCacheService)voidsetRulePublishingSpliterator(RulePublishingSpliterator rulePublishingSpliterator)voidsetRulesModuleDao(RulesModuleDao rulesModuleDao)voidsetSuspendResumeTaskManager(SuspendResumeTaskManager suspendResumeTaskManager)voidsetTenantAwareThreadFactory(java.util.concurrent.ThreadFactory tenantAwareThreadFactory)voidsetup()voidsetUpKieServices()Initializes theKieServicesinstancejava.util.List<java.lang.Object>switchKieModule(DroolsKIEModuleModel module, KieContainerListener listener, java.util.LinkedList<java.util.function.Supplier<java.lang.Object>> postTaskList, boolean enableIncrementalUpdate, RuleEngineActionResult result)Swaps synchroneously to a new KieModule.voidswitchKieModuleAsync(java.lang.String moduleName, KieContainerListener listener, java.util.List<java.lang.Object> resultsAccumulator, java.util.function.Supplier<java.lang.Object> resetFlagSupplier, java.util.List<java.util.function.Supplier<java.lang.Object>> postTaskList, boolean enableIncrementalUpdate, RuleEngineActionResult result)Swaps asynchroneously to a new KieModule.protected java.lang.RunnableswitchKieModuleRunnableTask(java.lang.String moduleName, KieContainerListener listener, java.util.List<java.lang.Object> resultsAccumulator, java.util.function.Supplier<java.lang.Object> resetFlagSupplier, java.util.List<java.util.function.Supplier<java.lang.Object>> postTaskList, boolean enableIncrementalUpdate, RuleEngineActionResult result)protected voidverifyErrors(RuleEngineActionResult result, java.util.List<org.kie.api.builder.Message> messages)voidwaitForSwappingToFinish()Block until the whole swapping task/tasks are finishedprotected voidwaitForSwappingToFinish(java.lang.String moduleName)protected voidwaitWhileWorkerIsRunning(java.lang.Thread worker)voidwriteKModuleXML(org.kie.api.builder.model.KieModuleModel module, org.kie.api.builder.KieFileSystem kfs)Creates the XML representation ofKieModuleModeland writes it toKieFileSystemvoidwritePomXML(DroolsKIEModuleModel module, org.kie.api.builder.KieFileSystem kfs)Write the building POM XML toKieFileSystemprotected voidwriteRulesToKieFileSystem(org.kie.api.builder.KieFileSystem kfs, java.util.Collection<DroolsRuleModel> rules)
-
-
-
Field Detail
-
WORKER_PRE_DESTROY_TIMEOUT
public static final java.lang.String WORKER_PRE_DESTROY_TIMEOUT
- See Also:
- Constant Field Values
-
-
Method Detail
-
switchKieModule
public java.util.List<java.lang.Object> switchKieModule(DroolsKIEModuleModel module, KieContainerListener listener, java.util.LinkedList<java.util.function.Supplier<java.lang.Object>> postTaskList, boolean enableIncrementalUpdate, RuleEngineActionResult result)
Description copied from interface:RuleEngineKieModuleSwapperSwaps synchroneously to a new KieModule. It's a blocking call- Specified by:
switchKieModulein interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance of theAbstractRulesModuleModelmodulelistener- instance ofKieContainerListenerthat fires when the switch of Kie Container is completepostTaskList- chain of post-task operations incapsulated as a linked list ofSupplierinstancesenableIncrementalUpdate- flag, if true, enables for incremental updates of the rule engine kie moduleresult- instance ofRuleEngineActionResultto be used in cluster nodes notification- Returns:
- the list that will contain the method execution results including the post-tasks
-
switchKieModuleAsync
public void switchKieModuleAsync(java.lang.String moduleName, KieContainerListener listener, java.util.List<java.lang.Object> resultsAccumulator, java.util.function.Supplier<java.lang.Object> resetFlagSupplier, java.util.List<java.util.function.Supplier<java.lang.Object>> postTaskList, boolean enableIncrementalUpdate, RuleEngineActionResult result)Description copied from interface:RuleEngineKieModuleSwapperSwaps asynchroneously to a new KieModule. It's a non-blocking call- Specified by:
switchKieModuleAsyncin interfaceRuleEngineKieModuleSwapper- Parameters:
moduleName- kie module namelistener- instance ofKieContainerListenerthat fires when the switch of Kie Container is completeresultsAccumulator- the list that will contain the method execution results including the post-tasksresetFlagSupplier- the task to perform after the sync call finishes the task (whether it was successfull or not )postTaskList- chain of post-task operations incapsulated as a linked list ofSupplierinstancesenableIncrementalUpdate- flag, if true, enables for incremental updates of the rule engine kie moduleresult- instance ofRuleEngineActionResultto be used in cluster nodes notification
-
waitForSwappingToFinish
public void waitForSwappingToFinish()
Description copied from interface:RuleEngineKieModuleSwapperBlock until the whole swapping task/tasks are finished- Specified by:
waitForSwappingToFinishin interfaceRuleEngineKieModuleSwapper
-
waitForSwappingToFinish
protected void waitForSwappingToFinish(java.lang.String moduleName)
-
getNextWorkerName
protected java.lang.String getNextWorkerName()
-
waitWhileWorkerIsRunning
protected void waitWhileWorkerIsRunning(java.lang.Thread worker)
-
beforeDestroy
public void beforeDestroy()
This method to be called by containers (like spring container) as destroy method
-
writeKModuleXML
public void writeKModuleXML(org.kie.api.builder.model.KieModuleModel module, org.kie.api.builder.KieFileSystem kfs)Description copied from interface:RuleEngineKieModuleSwapperCreates the XML representation ofKieModuleModeland writes it toKieFileSystem- Specified by:
writeKModuleXMLin interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofKieModuleModelkfs- instance ofKieFileSystem
-
writePomXML
public void writePomXML(DroolsKIEModuleModel module, org.kie.api.builder.KieFileSystem kfs)
Description copied from interface:RuleEngineKieModuleSwapperWrite the building POM XML toKieFileSystem- Specified by:
writePomXMLin interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofDroolsKIEModuleModelto be used forReleaseIdcreationkfs- instance ofKieFileSystem
-
getReleaseId
public org.kie.api.builder.ReleaseId getReleaseId(DroolsKIEModuleModel module)
Description copied from interface:RuleEngineKieModuleSwapperCreates the new instance ofReleaseIdbased onDroolsKIEModuleModel- Specified by:
getReleaseIdin interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofDroolsKIEModuleModel- Returns:
- newly created
ReleaseId
-
createKieModule
public org.apache.commons.lang3.tuple.Pair<org.kie.api.builder.KieModule,KIEModuleCacheBuilder> createKieModule(DroolsKIEModuleModel module, RuleEngineActionResult result)
Description copied from interface:RuleEngineKieModuleSwapperCreates the new instance ofKieModule, based on information contained inDroolsKIEModuleModel- Specified by:
createKieModulein interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofDroolsKIEModuleModelresult- instance ofRuleEngineActionResultto be used in cluster nodes notification- Returns:
- pair of the newly created instance of
KieModuleand the corresponding caching structure for the created module
-
createKieModule
protected org.apache.commons.lang3.tuple.Pair<org.kie.api.builder.KieModule,KIEModuleCacheBuilder> createKieModule(DroolsKIEModuleModel module, RuleEngineActionResult result, boolean enableIncrementalUpdate)
-
copyChanges
protected void copyChanges(org.drools.compiler.kie.builder.impl.MemoryKieModule trgKieModule, org.drools.compiler.kie.builder.impl.MemoryKieModule srcKieModule)
-
cloneForIncrementalCompilation
protected org.drools.compiler.kie.builder.impl.MemoryKieModule cloneForIncrementalCompilation(org.drools.compiler.kie.builder.impl.MemoryKieModule origKieModule, org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kModuleModel)Method creates the clone of theKieModule, having the specifiedReleaseId. It creates the new instance ofMemoryKieModulewith givenReleaseId,KieModuleModeland new instance ofMemoryFileSystem, copying from originalKieModuleall the relevant information (including file system content). (The#clone.mark();is used to reset the map of modified files since last mark).- Parameters:
origKieModule- The instance ofMemoryKieModuleto clonereleaseId- The newReleaseIdfor a cloneMemoryKieModulekModuleModel- instance of newKieModuleModelfor a cloneKieModule- Returns:
- clone of
MemoryKieModulewith givenReleaseId
-
prepareIncrementalUpdate
protected java.util.Optional<org.apache.commons.lang3.tuple.Pair<java.util.Collection<DroolsRuleModel>,java.util.Collection<DroolsRuleModel>>> prepareIncrementalUpdate(org.kie.api.builder.ReleaseId releaseId, DroolsKIEBaseModel kieBase)
Given theReleaseIdof the deployedKieModulethe method returns the tuple consisting of rules to add/update and rules to delete. Before returning the tuple the method applies the strategy to decide whether the incremental update is applicable. If it is not applicable the emptyOptionalis returned- Parameters:
releaseId-ReleaseIdof the currently deployed kie modulekieBase-DroolsKIEBaseModelcontaining the set of rules to deploy- Returns:
- a
Paircontaining the rules to add/update (left-hand-side) and the rules to delete (right-hand-side)
-
deployRulesIncrementally
protected void deployRulesIncrementally(org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kieModuleModel, org.kie.api.builder.KieModule kieModule, java.util.Collection<DroolsRuleModel> rulesToAdd, java.util.Collection<DroolsRuleModel> rulesToRemove, RuleEngineActionResult result)Deploy incrementally the rule engine updates. It accepts the newReleaseId, newKieModuleModel, the cloneMemoryKieModuleand based on the collections of rules to add/update and delete, applies the incremental rule engine updates. In order to add/update the rule engine the new instance ofKieBuilderis created. After the properKieBuilderSetwith updates is created, theKieBuilderSet.#build()method is called. if the update was successful, the updated information is copied from "incremental"KieModuleto the cloneKieModule(methodcopyChanges(MemoryKieModule, MemoryKieModule))- Parameters:
releaseId- newReleaseIdkieModuleModel- newKieModuleModelkieModule- cloneKieModulerulesToAdd- a collection ofDroolsRuleModelrules to add/updaterulesToRemove- a collection ofDroolsRuleModelrules to removeresult- instance ofRuleEngineActionResultaccumulating the results of deploy
-
verifyErrors
protected void verifyErrors(RuleEngineActionResult result, java.util.List<org.kie.api.builder.Message> messages)
-
mergePartialKieModules
protected org.kie.api.builder.KieModule mergePartialKieModules(org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kieModuleModel, org.kie.api.builder.KieModule partialKieModule)
-
mergeFileSystemToKieModule
protected void mergeFileSystemToKieModule(org.drools.compiler.kie.builder.impl.MemoryKieModule partialKieModule, MemoryFileSystem mainMemoryFileSystem)
-
mergePartialKieModules
protected org.kie.api.builder.KieModule mergePartialKieModules(org.kie.api.builder.ReleaseId releaseId, org.kie.api.builder.model.KieModuleModel kieModuleModel, java.util.List<org.kie.api.builder.KieBuilder> kieBuilders)
-
addKieBase
public void addKieBase(org.kie.api.builder.model.KieModuleModel module, org.kie.api.builder.KieFileSystem kfs, DroolsKIEBaseModel base, KIEModuleCacheBuilder cache)Description copied from interface:RuleEngineKieModuleSwapperAdds newKieBaseModelto aKieModuleModelwith all rules- Specified by:
addKieBasein interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofKieModuleModelto add theKieBaseModeltokfs- instance ofKieFileSystembase- instance ofDroolsKIEBaseModelthat keeps the information for aKieBaseModelto be createdcache- the caching structure for the module being initialized
-
addKieBase
public void addKieBase(org.kie.api.builder.model.KieModuleModel module, DroolsKIEBaseModel base)Description copied from interface:RuleEngineKieModuleSwapperAdds newKieBaseModelto aKieModuleModelwith all rules- Specified by:
addKieBasein interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofKieModuleModelto add theKieBaseModeltobase- instance ofDroolsKIEBaseModelthat keeps the information for aKieBaseModelto be created
-
addKieSession
public void addKieSession(org.kie.api.builder.model.KieBaseModel base, DroolsKIESessionModel session)Description copied from interface:RuleEngineKieModuleSwapperAdds instance of newKieSessionModeltoKieBaseModel- Specified by:
addKieSessionin interfaceRuleEngineKieModuleSwapper- Parameters:
base- instance ofKieBaseModelsession- instance ofDroolsKIESessionModelcontaining the information for newKieSessionModel
-
activateKieModule
public java.lang.String activateKieModule(DroolsKIEModuleModel module)
Description copied from interface:RuleEngineKieModuleSwapperUpdates the instance ofDroolsKIEModuleModelwith information about affectively deployedReleaseIdversion- Specified by:
activateKieModulein interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofDroolsKIEModuleModel- Returns:
- version of deployed
ReleaseId
-
removeKieModuleIfPresent
public boolean removeKieModuleIfPresent(org.kie.api.builder.ReleaseId releaseId, RuleEngineActionResult result)Description copied from interface:RuleEngineKieModuleSwapperTries to remove theKieModulewith givenReleaseIdfromKieRepository- Specified by:
removeKieModuleIfPresentin interfaceRuleEngineKieModuleSwapper- Parameters:
releaseId- the instance ofReleaseIdcorresponding to aKieModuleto be removedresult- instance ofRuleEngineActionResultto be used in cluster nodes notification removal- Returns:
- true if the module was found and removed, false otherwise
-
removeOldKieModuleIfPresent
public boolean removeOldKieModuleIfPresent(RuleEngineActionResult result)
Description copied from interface:RuleEngineKieModuleSwapperTries to remove the oldKieModulefromKieRepository- Specified by:
removeOldKieModuleIfPresentin interfaceRuleEngineKieModuleSwapper- Parameters:
result- instance ofRuleEngineActionResultto be used in cluster nodes notification removal- Returns:
- true if the module was found and removed, false otherwise
-
addRules
public void addRules(org.kie.api.builder.KieFileSystem kfs, DroolsKIEBaseModel base, KIEModuleCacheBuilder cache)Description copied from interface:RuleEngineKieModuleSwapperAdds rules from a givenDroolsKIEBaseModeltoKieFileSystem- Specified by:
addRulesin interfaceRuleEngineKieModuleSwapper- Parameters:
kfs- instance ofKieFileSystembase- instance ofDroolsKIEBaseModelcontaining the reference to the rules to publishcache- the caching structure for the module being initialized
-
filterByBiggestVersion
protected <R extends D,D extends AbstractRuleEngineRuleModel> java.util.Set<R> filterByBiggestVersion(java.util.Collection<D> rulesForVersion)
-
isRuleValid
protected boolean isRuleValid(AbstractRuleEngineRuleModel rule)
-
writeRulesToKieFileSystem
protected void writeRulesToKieFileSystem(org.kie.api.builder.KieFileSystem kfs, java.util.Collection<DroolsRuleModel> rules)
-
deleteRulesFromKieModule
protected void deleteRulesFromKieModule(org.drools.compiler.kie.builder.impl.MemoryKieModule kieModule, java.util.Collection<DroolsRuleModel> rules)Removes the specified collection ofDroolsRuleModelrules fromKieModule- Parameters:
kieModule- the instance of cloneKieModuleto remove rules fromrules- Collection ofDroolsRuleModelrules to delete
-
getDeployedReleaseId
public java.util.Optional<org.kie.api.builder.ReleaseId> getDeployedReleaseId(DroolsKIEModuleModel module, java.lang.String deployedMvnVersion)
Description copied from interface:RuleEngineKieModuleSwapperReturns (optional)ReleaseIdfor a deployed version of theKieModuleModel- Specified by:
getDeployedReleaseIdin interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofDroolsKIEModuleModeldeployedMvnVersion- currently deployed releaseId version of the Kie Module, if known- Returns:
- instance of
Optional.of(ReleaseId) if theReleaseIdcould be created,Optional.empty() otherwise
-
setUpKieServices
public void setUpKieServices()
Description copied from interface:RuleEngineKieModuleSwapperInitializes theKieServicesinstance- Specified by:
setUpKieServicesin interfaceRuleEngineKieModuleSwapper
-
setup
@PostConstruct public void setup()
-
deployRules
protected java.util.List<org.kie.api.builder.KieBuilder> deployRules(DroolsKIEModuleModel module, org.kie.api.builder.model.KieModuleModel kieModuleModel, DroolsKIEBaseModel kieBase, KIEModuleCacheBuilder cache)
-
initializeNewKieContainer
public org.kie.api.runtime.KieContainer initializeNewKieContainer(DroolsKIEModuleModel module, org.kie.api.builder.KieModule kieModule, RuleEngineActionResult result)
Description copied from interface:RuleEngineKieModuleSwapperCreates the new instance ofKieContainerfor a givenKieModule- Specified by:
initializeNewKieContainerin interfaceRuleEngineKieModuleSwapper- Parameters:
module- instance ofDroolsKIEModuleModelkieModule- instance ofKieModuleresult- instance ofRuleEngineActionResultto be used in cluster nodes notification- Returns:
- new
KieContainerinstance
-
initializeNewModule
protected void initializeNewModule(DroolsKIEModuleModel module, KieContainerListener listener, boolean enableIncrementalUpdates, RuleEngineActionResult result)
-
getInitializeMode
protected InitializeMode getInitializeMode(ExecutionContext executionContext)
-
restoreKieModule
protected boolean restoreKieModule(DroolsKIEModuleModel module, KieContainerListener listener, RuleEngineActionResult result)
-
newKieModule
protected void newKieModule(DroolsKIEModuleModel module, KieContainerListener listener, boolean enableIncrementalUpdates, RuleEngineActionResult result)
-
addRulesToCache
public void addRulesToCache(DroolsKIEBaseModel base, KIEModuleCacheBuilder cache)
Description copied from interface:RuleEngineKieModuleSwapperAdd cacheable data of rules of the latest versions belonging to the KieBase into the cache.- Specified by:
addRulesToCachein interfaceRuleEngineKieModuleSwapper- Parameters:
base- KieBase of the rules to be processedcache- CacheBuilder to cache rule data
-
completeWithFailure
protected void completeWithFailure(org.kie.api.builder.ReleaseId releaseId, RuleEngineActionResult result, KieContainerListener listener)
-
addNewResultItemOf
protected ResultItem addNewResultItemOf(RuleEngineActionResult result, MessageLevel messageLevel, java.lang.String message)
-
registerWorker
protected void registerWorker(java.lang.String moduleName, java.lang.Thread worker)
-
switchKieModuleRunnableTask
protected java.lang.Runnable switchKieModuleRunnableTask(java.lang.String moduleName, KieContainerListener listener, java.util.List<java.lang.Object> resultsAccumulator, java.util.function.Supplier<java.lang.Object> resetFlagSupplier, java.util.List<java.util.function.Supplier<java.lang.Object>> postTaskList, boolean enableIncrementalUpdate, RuleEngineActionResult result)
-
onSwapFailed
protected java.lang.Object onSwapFailed(java.lang.Throwable t, RuleEngineActionResult result, java.util.function.Supplier<java.lang.Object> resetFlagSupplier)
-
isInitialEngineStartup
protected boolean isInitialEngineStartup(org.kie.api.builder.ReleaseId releaseId, java.lang.String newDeployedMvnVersion)
-
getKieServices
protected org.kie.api.KieServices getKieServices()
-
setKieServices
protected void setKieServices(org.kie.api.KieServices kieServices)
-
getConfigurationService
protected ConfigurationService getConfigurationService()
-
setConfigurationService
public void setConfigurationService(ConfigurationService configurationService)
-
getCurrentTenant
protected Tenant getCurrentTenant()
-
setCurrentTenant
public void setCurrentTenant(Tenant currentTenant)
-
getTenantAwareThreadFactory
protected java.util.concurrent.ThreadFactory getTenantAwareThreadFactory()
-
setTenantAwareThreadFactory
public void setTenantAwareThreadFactory(java.util.concurrent.ThreadFactory tenantAwareThreadFactory)
-
getModelService
protected ModelService getModelService()
-
setModelService
public void setModelService(ModelService modelService)
-
getRuleEngineCacheService
protected RuleEngineCacheService getRuleEngineCacheService()
-
setRuleEngineCacheService
public void setRuleEngineCacheService(RuleEngineCacheService ruleEngineCacheService)
-
getRulesModuleDao
protected RulesModuleDao getRulesModuleDao()
-
setRulesModuleDao
public void setRulesModuleDao(RulesModuleDao rulesModuleDao)
-
getConcurrentMapFactory
protected ConcurrentMapFactory getConcurrentMapFactory()
-
setConcurrentMapFactory
public void setConcurrentMapFactory(ConcurrentMapFactory concurrentMapFactory)
-
getRulePublishingSpliterator
protected RulePublishingSpliterator getRulePublishingSpliterator()
-
setRulePublishingSpliterator
public void setRulePublishingSpliterator(RulePublishingSpliterator rulePublishingSpliterator)
-
getContentMatchRulesFilter
protected ContentMatchRulesFilter getContentMatchRulesFilter()
-
setContentMatchRulesFilter
public void setContentMatchRulesFilter(ContentMatchRulesFilter contentMatchRulesFilter)
-
getIncrementalRuleEngineUpdateStrategy
protected IncrementalRuleEngineUpdateStrategy getIncrementalRuleEngineUpdateStrategy()
-
setIncrementalRuleEngineUpdateStrategy
public void setIncrementalRuleEngineUpdateStrategy(IncrementalRuleEngineUpdateStrategy incrementalRuleEngineUpdateStrategy)
-
getRuleEngineBootstrap
protected RuleEngineBootstrap<org.kie.api.KieServices,org.kie.api.runtime.KieContainer,DroolsKIEModuleModel> getRuleEngineBootstrap()
-
setRuleEngineBootstrap
public void setRuleEngineBootstrap(RuleEngineBootstrap<org.kie.api.KieServices,org.kie.api.runtime.KieContainer,DroolsKIEModuleModel> ruleEngineBootstrap)
-
getWorkerPreDestroyTimeout
protected long getWorkerPreDestroyTimeout()
-
getSuspendResumeTaskManager
protected SuspendResumeTaskManager getSuspendResumeTaskManager()
-
setSuspendResumeTaskManager
public void setSuspendResumeTaskManager(SuspendResumeTaskManager suspendResumeTaskManager)
-
getKieModuleService
protected KieModuleService getKieModuleService()
-
setKieModuleService
public void setKieModuleService(KieModuleService kieModuleService)
-
getEngineRuleDao
protected EngineRuleDao getEngineRuleDao()
-
setEngineRuleDao
public void setEngineRuleDao(EngineRuleDao engineRuleDao)
-
-