actionDescr.setText( "list.add( 'hello world' )" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); MVELDialect mvelDialect = ( MVELDialect ) dialectRegistry.getDialect( "mvel" ); context.init( pkgBuilder, pkg, null, dialectRegistry, mvelDialect, null); pkgBuilder.addPackageFromDrl( new StringReader("package pkg1;\nglobal java.util.List list;\n") ); actionNode ); final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( Arrays.asList(pkgBuilder.getPackages()) ); final KieSession wm = kbase.newKieSession(); wm.setGlobal( "list", list ); MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkgBuilder.getPackage("pkg1").getDialectRuntimeRegistry().getDialectData( "mvel");
@Test public void testDefaultParentProcessIdValueInProcessEventListener() throws Exception { InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); pkg.addProcess(process); List<KiePackage> pkgs = new ArrayList<KiePackage>(); pkgs.add( pkg ); kbase.addPackages( pkgs ); KieSession session = kbase.newKieSession(); final MutableLong parentProcessId = new MutableLong(0L); final ProcessEventListener processEventListener = new DefaultProcessEventListener() { session.addEventListener( processEventListener ); session.startProcess("org.drools.core.process.event"); assertEquals(parentProcessId.longValue(), -1L);
buffer.append( "package " + context.getPkg().getName() + ";" + lineSeparator ); if ( context.getProcess() != null && ((org.jbpm.process.core.Process) context.getProcess()).getImports() != null) { for ( String decl : ((org.jbpm.process.core.Process)context.getProcess()).getImports() ) { if ( !context.getPkg().getImports().containsKey( systemImport ) ) { buffer.append( "import ").append( systemImport ).append( ";" ).append( lineSeparator ); for ( final Iterator it = context.getPkg().getStaticImports().iterator(); it.hasNext(); ) { buffer.append( "import static " + it.next() + ";" + lineSeparator );
context.getPkg().getName()); globalTypes.add(context.getPkg().getGlobals().get(globals[i]).replace('$', '.'));
@Test public void testPackageRuleFlows() throws Exception { InternalKnowledgePackage pkg = new KnowledgePackageImpl( "boo" ); Process rf = new MockRuleFlow( "1" ); pkg.addProcess( rf ); assertTrue( pkg.getRuleFlows().containsKey( "1" ) ); assertSame( rf, pkg.getRuleFlows().get( "1" ) ); Process rf2 = new MockRuleFlow( "2" ); pkg.addProcess( rf2 ); assertTrue( pkg.getRuleFlows().containsKey( "1" ) ); assertSame( rf, pkg.getRuleFlows().get( "1" ) ); assertTrue( pkg.getRuleFlows().containsKey( "2" ) ); assertSame( rf2, pkg.getRuleFlows().get( "2" ) ); pkg.removeRuleFlow( "1" ); assertTrue( pkg.getRuleFlows().containsKey( "2" ) ); assertSame( rf2, pkg.getRuleFlows().get( "2" ) ); assertFalse( pkg.getRuleFlows().containsKey( "1" ) ); }
kpkgs = SerializationHelper.serializeObject( kpkgs ); InternalKnowledgeBase kBase = (InternalKnowledgeBase) getKnowledgeBase(); kBase.addPackages(kpkgs); kBase = SerializationHelper.serializeObject( kBase ); map = SerializationHelper.serializeObject( map ); kBase = (InternalKnowledgeBase) map.get( "x" ); org.kie.api.definition.rule.Rule[] rules = (org.kie.api.definition.rule.Rule[]) kBase.getPackage("org.drools.compiler").getRules().toArray(new org.kie.api.definition.rule.Rule[0] ); assertEquals( 3, rules.length ); KieSession session = kBase.newKieSession(); session.setGlobal( "list", new ArrayList() ); p.setShortPrimitive( (short) 2 ); p.setIntPrimitive( (int) 3 ); session.insert( p ); session.getObjects().size() ); assertEquals( p, IteratorToList.convert( session.getObjects().iterator() ).get( 0 ) );
@Test @Ignore public void testAgendaEventListener() throws Exception { InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) ); pkg.getClassFieldAccessorStore().setEagerWire( true ); final ClassFieldReader extractor = pkg.getClassFieldAccessorStore().getReader(Cheese.class, "type"); pkg.addRule( rule ); kbase.addPackages( Collections.singleton(pkg) ); KieSession ksession = kbase.newKieSession(); final List agendaList = new ArrayList(); final AgendaEventListener agendaEventListener = new AgendaEventListener() { ksession.addEventListener( agendaEventListener ); assertEquals( 1, ksession.getAgendaEventListeners().size() ); FactHandle cheddarHandle = ksession.insert( cheddar ); InternalAgenda agenda = (InternalAgenda) ksession.getAgenda();
RuleImpl rule; InternalKnowledgePackage pkg; kBase = KnowledgeBaseFactory.newKnowledgeBase(); pkg.setClassFieldAccessorCache(new ClassFieldAccessorCache(Thread.currentThread().getContextClassLoader())); data.onAdd(pkg.getDialectRuntimeRegistry(), kBase.getRootClassLoader()); pkg.getDialectRuntimeRegistry().setDialectData("java", data); rule = new RuleImpl("Test"); rule.setDialect("java"); rule.setConsequence(new Consequence() { public void evaluate(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory) throws Exception { pkg.addRule(rule); kBase.addPackage(pkg); KieSession session = kBase.newKieSession(); Command dispose = KieServices.Factory.get().getCommands().newDispose(); session.insert("whatever"); session.fireAllRules(); session.execute(dispose); try { session.insert("whatever");
@Test public void testSerializable() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); back.getName() ); builder.addPackage( packageDescr ); InternalKnowledgePackage pkg = builder.getPackage(packageDescr.getName()); final RuleImpl rule = pkg.getRule( "rule-1" ); final RuleImpl newRule = newPkg.getRule( "rule-1" ); InternalKnowledgeBase kBase = (InternalKnowledgeBase)KnowledgeBaseFactory.newKnowledgeBase(); newPkg.getDialectRuntimeRegistry().onAdd( kBase.getRootClassLoader() ); newPkg.getDialectRuntimeRegistry().onBeforeExecute(); kBase.getGlobals().put( "map", Map.class ); final KieSession workingMemory = kBase.newKieSession(); workingMemory.setGlobal( "map", map ); knowledgeHelper.setActivation( activation ); newRule.getConsequence().evaluate( knowledgeHelper, ((StatefulKnowledgeSessionImpl)workingMemory) ); assertEquals( new Integer( 1 ),
@Test public void testReload() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage( packageDescr ); InternalKnowledgePackage pkg = builder.getPackage(packageDescr.getName()); RuleImpl rule = pkg.getRule( "rule-1" ); builder.getErrors().getErrors() ); InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); kBase.addGlobal( "map", Map.class ); final KieSession workingMemory = kBase.newKieSession(); workingMemory.setGlobal( "map", map ); knowledgeHelper.setActivation( activation ); pkg.removeRule( rule ); ((JavaDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( "java" )).getStore().size() ); builder.addPackage( packageDescr ); pkg = builder.getPackage(packageDescr.getName()); rule = pkg.getRule( "rule-1" );
@Test public void testProcessEventListenerWithStartEvent() throws Exception { InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); ); pkg.addProcess(process); List<KiePackage> pkgs = new ArrayList<KiePackage>(); pkgs.add( pkg ); kbase.addPackages( pkgs ); KieSession session = kbase.newKieSession(); final List<ProcessEvent> processEventList = new ArrayList<ProcessEvent>(); final ProcessEventListener processEventListener = new ProcessEventListener() { session.addEventListener( processEventListener ); session.signalEvent("signal", null); assertEquals( 16, processEventList.size() ); assertEquals( "org.drools.core.process.event", ((ProcessStartedEvent) processEventList.get(0)).getProcessInstance().getProcessId());
@Test public void testSimpleExpression() { KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl(); pkgBuilder.addPackage( new PackageDescr( "pkg1" ) ); InternalKnowledgePackage pkg = pkgBuilder.getPackage("pkg1"); final RuleDescr ruleDescr = new RuleDescr( "rule 1" ); final KnowledgeBuilderConfigurationImpl conf = pkgBuilder.getBuilderConfiguration(); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); MVELDialect mvelDialect = (MVELDialect) dialectRegistry.getDialect( "mvel" ); accDescr ); ((MVELCompileable) acc.getAccumulators()[0]).compile( (MVELDialectRuntimeData) pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectRuntimeRegistry().getDialectData( "mvel" ) ); InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession();
@Test public void testSimpleExpression() throws Exception { PackageDescr pkgDescr = new PackageDescr( "pkg1" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl(); pkgBuilder.addPackage( pkgDescr ); InternalKnowledgePackage pkg = pkgBuilder.getPackageRegistry( "pkg1" ).getPackage(); final RuleDescr ruleDescr = new RuleDescr( "rule 1" ); ruleDescr.setNamespace( "pkg1" ); ruleDescr.setConsequence( "modify (cheese) {price = 5 };\nretract (cheese)" ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); builder.build( context, RuleImpl.DEFAULT_CONSEQUENCE_NAME ); InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); PropagationContextFactory pctxFactory = kBase.getConfiguration().getComponentFactory().getPropagationContextFactory(); kBase.addPackage(pkg); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final DefaultKnowledgeHelper kbHelper = new DefaultKnowledgeHelper( ksession ); kbHelper.setActivation( item ); ((MVELConsequence) context.getRule().getConsequence()).compile( (MVELDialectRuntimeData) pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectRuntimeRegistry().getDialectData( "mvel" )); context.getRule().getConsequence().evaluate( kbHelper, ksession );
final RuleDescr ruleDescr = new RuleDescr( "rule 1" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg ); final KnowledgeBuilderConfigurationImpl conf = pkgBuilder.getBuilderConfiguration(); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); MVELDialect mvelDialect = ( MVELDialect ) dialectRegistry.getDialect( "mvel" ); final EvalCondition eval = (EvalCondition) builder.build( context, evalDescr ); ((MVELEvalExpression) eval.getEvalExpression()).compile( (MVELDialectRuntimeData) pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectRuntimeRegistry().getDialectData( "mvel" ) ); InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession();
KnowledgeBuilderConfigurationImpl cfg1 = new KnowledgeBuilderConfigurationImpl( properties ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg, cfg1 ); PackageRegistry pkgRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); MVELDialect mvelDialect = (MVELDialect) dialectRegistry.getDialect( pkgRegistry.getDialect() ); builder.build( context, RuleImpl.DEFAULT_CONSEQUENCE_NAME ); InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); kbHelper.setActivation( item ); try { ((MVELConsequence) context.getRule().getConsequence()).compile( (MVELDialectRuntimeData) pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectRuntimeRegistry().getDialectData( "mvel" ) ); context.getRule().getConsequence().evaluate( kbHelper, ksession ); fail( "should throw an exception, as 'if' is not allowed" );
@Before public void setUp() { this.kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); pkg = new KnowledgePackageImpl("org.droos.test"); pkg.setClassFieldAccessorCache(new ClassFieldAccessorCache(Thread.currentThread().getContextClassLoader())); JavaDialectRuntimeData data = new JavaDialectRuntimeData(); data.onAdd(pkg.getDialectRuntimeRegistry(), kBase.getRootClassLoader()); pkg.getDialectRuntimeRegistry().setDialectData("java", data); // we need to add one rule to the package because the previous deadlock was encountered // while removing rules from a package when said package is removed from the rulebase rule = new RuleImpl("Test"); rule.setDialect("java"); rule.setConsequence(new Consequence() { public void evaluate(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory) throws Exception { } public String getName() { return "default"; } }); pkg.addRule(rule); kBase.addPackage(pkg); }
ruleDescr.setConsequence( "" ); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl( pkg ); DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry(); MVELDialect mvelDialect = (MVELDialect) dialectRegistry.getDialect( "mvel" ); context.setDeclarationResolver( declarationResolver ); kBase = KnowledgeBaseFactory.newKnowledgeBase(); SalienceBuilder salienceBuilder = new MVELSalienceBuilder(); salienceBuilder.build( context ); ((MVELSalienceExpression) context.getRule().getSalience()).compile( (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" ) );
@Before public void setUp() throws Exception { kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(); listener1 = new TestRuleBaseListener( "(listener-1) " ); listener2 = new TestRuleBaseListener( "(listener-2) " ); kBase.addEventListener( listener1 ); kBase.addEventListener( listener2 ); final RuleImpl rule1 = new RuleImpl( "test1" ); final ClassObjectType cheeseObjectType = new ClassObjectType( Cheese.class ); final Pattern pattern = new Pattern( 0, rule1.addPattern( pattern ); rule1.setConsequence( new Consequence() { private static final long serialVersionUID = 510l; pkg.addRule( rule1 ); pkg.addRule( rule2 );
@Test public void testNull() { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr patternDescr = new PatternDescr( Cheese.class.getName(), "stilton" ); final FieldConstraintDescr literalDescr = new FieldConstraintDescr( "type" ); literalDescr.addRestriction( new LiteralRestrictionDescr( "==", null ) ); patternDescr.addConstraint( literalDescr ); ruleDescr.setConsequence( "" ); builder.addPackage( packageDescr ); InternalKnowledgePackage pkg = builder.getPackage(packageDescr.getName()); final RuleImpl rule = pkg.getRule( "rule-1" ); assertLength( 0, builder.getErrors().getErrors() ); }
@Test public void testReturnValueMethodCompare() { final KnowledgeBuilderImpl builder1 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = new PackageDescr( "package1" ); createReturnValueRule( packageDescr1, " x + y " ); builder1.addPackage( packageDescr1 ); if ( builder1.hasErrors() ) { fail( builder1.getErrors().toString() ); final Pattern pattern1 = (Pattern) ((RuleImpl)builder1.getPackage("package1").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue1 = pattern1.getConstraints().get( 0 ); " x + y " ); builder2.addPackage( packageDescr2 ); final Pattern pattern2 = (Pattern) ((RuleImpl)builder2.getPackage("package2").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue2 = pattern2.getConstraints().get( 0 ); " x - y " ); builder3.addPackage( packageDescr3 ); final Pattern pattern3 = (Pattern) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue3 = pattern3.getConstraints().get( 0 );