Bug Multiple Container not working.
First created was defining the rulebasepackage for the others
This commit is contained in:
parent
5dfd7bcbd7
commit
5d6aff13a5
3 changed files with 50 additions and 24 deletions
|
|
@ -159,6 +159,7 @@ public class GenericResource {
|
|||
try {
|
||||
|
||||
KieContainerInstance kci = registry.getContainer(id);
|
||||
|
||||
Set<Class<?>> classes = kci.getExtraClasses();
|
||||
Class foundClass = this.getClassFromName(classes, className);
|
||||
if (foundClass != null) {
|
||||
|
|
|
|||
|
|
@ -130,6 +130,7 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
|
|||
}
|
||||
|
||||
kieContainerInstance.addExtraClasses(extraClasses);
|
||||
this.rulesExecutionService.createRuleBasePackage(id, kieContainerInstance);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -160,6 +161,8 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
|
|||
kieServerLoggingDefinition.OnDisposeKieBase();
|
||||
}
|
||||
}
|
||||
kieContainerInstance.clearExtraClasses();
|
||||
rulesExecutionService.removeRuleBasePackage(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
*/
|
||||
|
||||
package org.chtijbug.kieserver.services.drools;
|
||||
|
||||
|
|
@ -31,6 +31,9 @@ import org.kie.server.services.api.KieServerRegistry;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Direct rules execution service that allow use of typed objects instead of string only
|
||||
*/
|
||||
|
|
@ -38,7 +41,7 @@ public class DroolsChtijbugRulesExecutionService {
|
|||
private static final Logger logger = LoggerFactory.getLogger(DroolsChtijbugRulesExecutionService.class);
|
||||
|
||||
private KieServerRegistry context;
|
||||
private RuleBasePackage ruleBasePackage = null;
|
||||
private Map<String, RuleBasePackage> ruleBasePackages = new HashMap<>();
|
||||
private MessageHandlerResolver messageHandlerResolver;
|
||||
private int MaxNumberRulesToExecute = 20000;
|
||||
private KieServerAddOnElement kieServerAddOnElement = null;
|
||||
|
|
@ -67,17 +70,23 @@ public class DroolsChtijbugRulesExecutionService {
|
|||
return kieServerAddOnElement;
|
||||
}
|
||||
|
||||
public ChtijbugObjectRequest FireAllRulesAndStartProcess(KieContainerInstance kci, ChtijbugObjectRequest chtijbugObjectRequest, String processID, String sessionName, int sessionMaxNumberRulesToExecute) {
|
||||
public void removeRuleBasePackage(String id) {
|
||||
if (this.ruleBasePackages.containsKey(id) == true) {
|
||||
RuleBasePackage ruleBasePackage = this.ruleBasePackages.get(id);
|
||||
ruleBasePackage.dispose();
|
||||
this.ruleBasePackages.remove(id);
|
||||
}
|
||||
|
||||
Object result = null;
|
||||
try {
|
||||
|
||||
}
|
||||
|
||||
public void createRuleBasePackage(String id, KieContainerInstance kci) {
|
||||
if (kci != null
|
||||
&& kci.getKieContainer() != null
|
||||
&& ruleBasePackage == null) {
|
||||
&& kci.getKieContainer() != null) {
|
||||
if (this.ruleBasePackages.containsKey(id) == false) {
|
||||
|
||||
KieContainer kieContainer = kci.getKieContainer();
|
||||
ruleBasePackage = new RuleBaseSingleton(kieContainer, sessionMaxNumberRulesToExecute, kieServerAddOnElement);
|
||||
RuleBasePackage ruleBasePackage = new RuleBaseSingleton(kieContainer, this.MaxNumberRulesToExecute, kieServerAddOnElement);
|
||||
if (kieServerAddOnElement != null) {
|
||||
for (KieServerGlobalVariableDefinition kieServerGlobalVariableDefinition : kieServerAddOnElement.getKieServerGlobalVariableDefinitions()) {
|
||||
kieServerGlobalVariableDefinition.OnCreateKieBase(kieServerAddOnElement.getGlobals());
|
||||
|
|
@ -89,8 +98,20 @@ public class DroolsChtijbugRulesExecutionService {
|
|||
kieServerLoggingDefinition.OnCreateKieBase();
|
||||
}
|
||||
}
|
||||
this.ruleBasePackages.put(id, ruleBasePackage);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ChtijbugObjectRequest FireAllRulesAndStartProcess(KieContainerInstance kci, ChtijbugObjectRequest chtijbugObjectRequest, String processID, String sessionName, int sessionMaxNumberRulesToExecute) {
|
||||
|
||||
Object result = null;
|
||||
|
||||
try {
|
||||
|
||||
RuleBasePackage ruleBasePackage = this.ruleBasePackages.get(kci.getResource().getContainerId());
|
||||
if (ruleBasePackage != null) {
|
||||
ChtijbugHistoryListener chtijbugHistoryListener = new ChtijbugHistoryListener();
|
||||
RuleBaseSession session = ruleBasePackage.createRuleBaseSession(sessionMaxNumberRulesToExecute, chtijbugHistoryListener, sessionName);
|
||||
if (kieServerAddOnElement != null) {
|
||||
|
|
@ -109,6 +130,7 @@ public class DroolsChtijbugRulesExecutionService {
|
|||
chtijbugObjectRequest.setObjectRequest(result);
|
||||
logger.debug("Returning OK response with content '{}'", chtijbugObjectRequest.getObjectRequest());
|
||||
session.dispose();
|
||||
}
|
||||
return chtijbugObjectRequest;
|
||||
|
||||
} catch (DroolsChtijbugException e) {
|
||||
|
|
|
|||
Loading…
Add table
editor.link_modal.header
Reference in a new issue