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 {
|
try {
|
||||||
|
|
||||||
KieContainerInstance kci = registry.getContainer(id);
|
KieContainerInstance kci = registry.getContainer(id);
|
||||||
|
|
||||||
Set<Class<?>> classes = kci.getExtraClasses();
|
Set<Class<?>> classes = kci.getExtraClasses();
|
||||||
Class foundClass = this.getClassFromName(classes, className);
|
Class foundClass = this.getClassFromName(classes, className);
|
||||||
if (foundClass != null) {
|
if (foundClass != null) {
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,7 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
kieContainerInstance.addExtraClasses(extraClasses);
|
kieContainerInstance.addExtraClasses(extraClasses);
|
||||||
|
this.rulesExecutionService.createRuleBasePackage(id, kieContainerInstance);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -160,6 +161,8 @@ public class DroolsChtijbugKieServerExtension implements KieServerExtension {
|
||||||
kieServerLoggingDefinition.OnDisposeKieBase();
|
kieServerLoggingDefinition.OnDisposeKieBase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
kieContainerInstance.clearExtraClasses();
|
||||||
|
rulesExecutionService.removeRuleBasePackage(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.chtijbug.kieserver.services.drools;
|
package org.chtijbug.kieserver.services.drools;
|
||||||
|
|
||||||
|
|
@ -31,6 +31,9 @@ import org.kie.server.services.api.KieServerRegistry;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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
|
* 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 static final Logger logger = LoggerFactory.getLogger(DroolsChtijbugRulesExecutionService.class);
|
||||||
|
|
||||||
private KieServerRegistry context;
|
private KieServerRegistry context;
|
||||||
private RuleBasePackage ruleBasePackage = null;
|
private Map<String, RuleBasePackage> ruleBasePackages = new HashMap<>();
|
||||||
private MessageHandlerResolver messageHandlerResolver;
|
private MessageHandlerResolver messageHandlerResolver;
|
||||||
private int MaxNumberRulesToExecute = 20000;
|
private int MaxNumberRulesToExecute = 20000;
|
||||||
private KieServerAddOnElement kieServerAddOnElement = null;
|
private KieServerAddOnElement kieServerAddOnElement = null;
|
||||||
|
|
@ -67,17 +70,23 @@ public class DroolsChtijbugRulesExecutionService {
|
||||||
return kieServerAddOnElement;
|
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
|
if (kci != null
|
||||||
&& kci.getKieContainer() != null
|
&& kci.getKieContainer() != null) {
|
||||||
&& ruleBasePackage == null) {
|
if (this.ruleBasePackages.containsKey(id) == false) {
|
||||||
|
|
||||||
KieContainer kieContainer = kci.getKieContainer();
|
KieContainer kieContainer = kci.getKieContainer();
|
||||||
ruleBasePackage = new RuleBaseSingleton(kieContainer, sessionMaxNumberRulesToExecute, kieServerAddOnElement);
|
RuleBasePackage ruleBasePackage = new RuleBaseSingleton(kieContainer, this.MaxNumberRulesToExecute, kieServerAddOnElement);
|
||||||
if (kieServerAddOnElement != null) {
|
if (kieServerAddOnElement != null) {
|
||||||
for (KieServerGlobalVariableDefinition kieServerGlobalVariableDefinition : kieServerAddOnElement.getKieServerGlobalVariableDefinitions()) {
|
for (KieServerGlobalVariableDefinition kieServerGlobalVariableDefinition : kieServerAddOnElement.getKieServerGlobalVariableDefinitions()) {
|
||||||
kieServerGlobalVariableDefinition.OnCreateKieBase(kieServerAddOnElement.getGlobals());
|
kieServerGlobalVariableDefinition.OnCreateKieBase(kieServerAddOnElement.getGlobals());
|
||||||
|
|
@ -89,8 +98,20 @@ public class DroolsChtijbugRulesExecutionService {
|
||||||
kieServerLoggingDefinition.OnCreateKieBase();
|
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();
|
ChtijbugHistoryListener chtijbugHistoryListener = new ChtijbugHistoryListener();
|
||||||
RuleBaseSession session = ruleBasePackage.createRuleBaseSession(sessionMaxNumberRulesToExecute, chtijbugHistoryListener, sessionName);
|
RuleBaseSession session = ruleBasePackage.createRuleBaseSession(sessionMaxNumberRulesToExecute, chtijbugHistoryListener, sessionName);
|
||||||
if (kieServerAddOnElement != null) {
|
if (kieServerAddOnElement != null) {
|
||||||
|
|
@ -109,6 +130,7 @@ public class DroolsChtijbugRulesExecutionService {
|
||||||
chtijbugObjectRequest.setObjectRequest(result);
|
chtijbugObjectRequest.setObjectRequest(result);
|
||||||
logger.debug("Returning OK response with content '{}'", chtijbugObjectRequest.getObjectRequest());
|
logger.debug("Returning OK response with content '{}'", chtijbugObjectRequest.getObjectRequest());
|
||||||
session.dispose();
|
session.dispose();
|
||||||
|
}
|
||||||
return chtijbugObjectRequest;
|
return chtijbugObjectRequest;
|
||||||
|
|
||||||
} catch (DroolsChtijbugException e) {
|
} catch (DroolsChtijbugException e) {
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue