@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() ); }
@Test(timeout=10000) public void testDynamicRuleRemovalsUnusedWorkingMemory() throws Exception { InternalKnowledgeBase kbase = (InternalKnowledgeBase) SerializationHelper.serializeObject( loadKnowledgeBase( "test_Dynamic1.drl", "test_Dynamic2.drl", "test_Dynamic3.drl", "test_Dynamic4.drl" ) ); KieSession workingMemory = createKnowledgeSession( kbase ); assertEquals( 2, kbase.getKiePackages().size() ); KiePackage knowledgePackage = null; for (KiePackage pkg : kbase.getKiePackages()) { if ( pkg.getName().equals( "org.drools.compiler.test" ) ) { knowledgePackage = pkg; break; } } assertEquals( 5, knowledgePackage.getRules().size() ); kbase.removeRule( "org.drools.compiler.test", "Who likes Stilton" ); assertEquals( 4, knowledgePackage.getRules().size() ); kbase.removeRule( "org.drools.compiler.test", "like cheese" ); assertEquals( 3, knowledgePackage.getRules().size() ); kbase.removeKiePackage( "org.drools.compiler.test" ); assertEquals( 1, kbase.getKiePackages().size() ); }
Collection<KiePackage> knowledgePackagesCombined = kbase.getKiePackages();
kbase.getKiePackages().size() );
kbase = map.get( "x" ); final org.kie.api.definition.rule.Rule[] rules = kbase.getKiePackages().iterator().next().getRules().toArray( new org.kie.api.definition.rule.Rule[0] ); assertEquals( 4, rules.length );
knowledgeBase1.addPackages( knowledgePackages1 ); knowledgeBase1.addPackages( knowledgePackages2 ); Collection<KiePackage> knowledgePackagesCombined = knowledgeBase1.getKiePackages();
assertEquals( 3, kbase.getKiePackages().size() ); KiePackage test = null, test2 = null; for( KiePackage kpkg : kbase.getKiePackages() ) { if( kpkg.getName().equals( "org.drools.compiler.test" )) { test = kpkg; test.getRules().iterator().next().getName() ); for( KiePackage kpkg : kbase.getKiePackages() ) { if( kpkg.getName().equals( "org.drools.compiler.test" )) { test = kpkg; for( KiePackage kpkg : kbase.getKiePackages() ) { if( kpkg.getName().equals( "org.drools.compiler.test" )) { test = kpkg; for( KiePackage kpkg : kbase.getKiePackages() ) { if( kpkg.getName().equals( "org.drools.compiler.test" )) { test = kpkg;
@Test public void testCSV() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource( "changeSetTestCSV.xml", getClass()), ResourceType.CHANGE_SET ); assertFalse( kbuilder.hasErrors() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); assertEquals(1, kbase.getKiePackages().size()); assertEquals(3, kbase.getKiePackages().iterator().next().getRules().size()); } }
public Void execute(Context context ) { //cache.joinTransaction();TODO TransactionTestObject obj = (TransactionTestObject) mainObject; if (obj.getId() == null) { obj.setId(generateId()); } cache.put(InfinispanPlaceholderResolverStrategy.getClassIdValue(mainObject), mainObject); if( subObject != null ) { KieSession ksession = ((RegistryContext) context).lookup( KieSession.class ); // THe following 3 lines are the important ones! (See below for an explanation) InternalKnowledgeBase cleanKBase = KnowledgeBaseFactory.newKnowledgeBase(); cleanKBase.addPackages(((InternalKnowledgeBase)ksession.getKieBase()).getKiePackages()); StatefulKnowledgeSession commandKSession = InfinispanKnowledgeService.newStatefulKnowledgeSession( cleanKBase, null, initializeEnvironment() ); /** * Here's what's going on: * If the SingleSessionCommandService (SSCS) & JtaTransactionManager (JTM) were _not_ aware of transactions, * -> then inserting the mainObject _before_ having inserted the subObject * would cause the operation/persist to fail and the transaction to fail. * - This is because the mainObject contains a foreign key referring to the subObject. * * However, the SSCS & JTM check whether or not they're owners of the transaction * when starting and when committing the transaction they use. * -> So that when we insert the mainObject here (via a _new_ CommandBasedStatefulKnowledgeSession), * it does _not_ mess with the transaction state and the operation succeeds. */ TransactionTestCommand transactionTestSubCommand = new TransactionTestCommand(this.subObject, getPersistenceEnvironment()); commandKSession.execute(transactionTestSubCommand); } return null; }