@Test(timeout=10000) public void testDynamicRuleRemovalsUnusedWorkingMemorySubNetwork() throws Exception { InternalKnowledgeBase kbase = (InternalKnowledgeBase) loadKnowledgeBase( "test_DynamicRulesWithSubnetwork1.drl", "test_DynamicRulesWithSubnetwork2.drl", "test_DynamicRulesWithSubnetwork.drl" ); assertEquals( 2, kbase.getKiePackages().size() ); assertEquals( 4, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeRule( "org.drools.compiler", "Apply Discount on all books" ); assertEquals( 3, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeRule( "org.drools.compiler", "like book" ); assertEquals( 2, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeKiePackage( "org.drools.compiler" ); assertEquals( 1, kbase.getKiePackages().size() ); }
protected Class<? extends RuleUnit> getStartingRuleUnit(String startingRule) throws IllegalStateException { if (kbase == null) { throw new IllegalStateException("Cannot determine starting rule unit. KieBase is null"); } InternalKnowledgeBase ikb = (InternalKnowledgeBase) kbase; Map<String, InternalKnowledgePackage> pkgs = ikb.getPackagesMap(); RuleImpl ruleImpl; for (String pkgName : calculatePossiblePackageNames()) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = ikb.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; }
protected Class<? extends RuleUnit> getStartingRuleUnit(String startingRule, InternalKnowledgeBase ikb, List<String> possiblePackages) { Map<String, InternalKnowledgePackage> pkgs = ikb.getPackagesMap(); RuleImpl ruleImpl; for (String pkgName : possiblePackages) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = ikb.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; }
protected Class<? extends RuleUnit> getStartingRuleUnit(String startingRule, InternalKnowledgeBase ikb, List<String> possiblePackages) { Map<String, InternalKnowledgePackage> pkgs = ikb.getPackagesMap(); RuleImpl ruleImpl = null; for (String pkgName : possiblePackages) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = ikb.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; }
protected Class<? extends RuleUnit> startingRuleUnit(String startingRule, String modelId, String...knownPackageNames) { List<String> possiblePackages = calculatePossiblePackageNames(modelId, knownPackageNames); InternalKnowledgeBase internalKnowledgeBase = (InternalKnowledgeBase) kieBase; Map<String,InternalKnowledgePackage> pkgs = internalKnowledgeBase.getPackagesMap(); RuleImpl ruleImpl; for (String pkgName: possiblePackages) { if (pkgs.containsKey(pkgName)) { InternalKnowledgePackage pkg = pkgs.get(pkgName); ruleImpl = pkg.getRule(startingRule); if (ruleImpl != null) { RuleUnitDescription descr = internalKnowledgeBase.getRuleUnitDescriptionRegistry().getDescription(ruleImpl).orElse(null); if (descr != null) { return descr.getRuleUnitClass(); } } } } return null; } }
@Test(timeout=10000) public void testDynamicRuleRemovalsUnusedWorkingMemorySubNetwork() throws Exception { InternalKnowledgeBase kbase = (InternalKnowledgeBase) loadKnowledgeBase( "test_DynamicRulesWithSubnetwork1.drl", "test_DynamicRulesWithSubnetwork2.drl", "test_DynamicRulesWithSubnetwork.drl" ); assertEquals( 2, kbase.getKnowledgePackages().size() ); assertEquals( 4, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeRule( "org.drools.compiler", "Apply Discount on all books" ); assertEquals( 3, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeRule( "org.drools.compiler", "like book" ); assertEquals( 2, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeKnowledgePackage( "org.drools.compiler" ); assertEquals( 1, kbase.getKnowledgePackages().size() ); }