InternalKnowledgePackage pkg = builder.getPackage("com.sample"); assertNotNull( pkg );
wm.setGlobal( "list", list ); MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkgBuilder.getPackage("pkg1").getDialectRuntimeRegistry().getDialectData( "mvel");
wm.setGlobal( "list", list ); MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkgBuilder.getPackage("pkg1").getDialectRuntimeRegistry().getDialectData( "mvel");
@Test public void testRuleFlow() throws Exception { InputStream in = this.getClass().getResourceAsStream( "/org/jbpm/integrationtests/ruleflow.rfm" ); assertNotNull( in ); builder.addPackage( new PackageDescr( "com.sample" ) ); builder.addRuleFlow( new InputStreamReader( in ) ); InternalKnowledgePackage pkg = builder.getPackage("com.sample"); assertNotNull( pkg ); Map<String, Process> flows = pkg.getRuleFlows(); assertNotNull( flows ); assertEquals( 1, flows.size() ); assertTrue( flows.containsKey( "0" ) ); Process p = (Process) flows.get( "0" ); assertTrue( p instanceof WorkflowProcessImpl ); //now serialization InternalKnowledgePackage pkg2 = (InternalKnowledgePackage) DroolsStreamUtils.streamIn( DroolsStreamUtils.streamOut( pkg ) ); assertNotNull( pkg2 ); flows = pkg2.getRuleFlows(); assertNotNull( flows ); assertEquals( 1, flows.size() ); assertTrue( flows.containsKey( "0" ) ); p = (Process) flows.get( "0" ); assertTrue( p instanceof WorkflowProcessImpl ); }
process.setPackageName( "pkg1" ); ProcessBuildContext context = new ProcessBuildContext(pkgBuilder, pkgBuilder.getPackage("pkg1"), null, processDescr, dialectRegistry, javaDialect);
private void build(String msg, String resource, boolean showResults) throws DroolsParserException, IOException { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); long start = System.currentTimeMillis(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( resource ) ) ); InternalKnowledgePackage pkg = builder.getPackage("org.drools.compiler.test"); assertFalse(builder.hasErrors()); assertNotNull(pkg); if (showResults) { System.out.print( "Time taken for " + msg + " : " + (System.currentTimeMillis() - start) ); } }
splitInstance.setProcessInstance( processInstance ); MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkgBuilder.getPackage("pkg1").getDialectRuntimeRegistry().getDialectData( "mvel");
private void checkRuleBase(final String name) throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_" + name + ".drl" ) ) ); InternalKnowledgePackage pkg = builder.getPackage("org.drools.compiler.test"); final InternalKnowledgeBase kBase = (InternalKnowledgeBase) getKnowledgeBase(); kBase.addPackage( pkg ); if ( this.writeTree ) { writeRuleBase( kBase, name ); } final XStream xstream = createTrustingXStream(); final InternalKnowledgeBase goodKBase = (InternalKnowledgeBase) xstream.fromXML( getClass().getResourceAsStream( name ) ); nodesEquals( goodKBase.getRete(), kBase.getRete() ); }
process.setPackageName("pkg1"); ProcessBuildContext context = new ProcessBuildContext(pkgBuilder, pkgBuilder.getPackage("pkg1"), null, processDescr, dialectRegistry, null); context.init( pkgBuilder, pkg, null, dialectRegistry, null, null);
private KiePackage compilePkgDescr( PackageDescr pkg, String pkgName ) { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newDescrResource( pkg ), ResourceType.DESCR ); assertFalse( kbuilder.getErrors().toString(), kbuilder.hasErrors() ); if (pkgName == null) { Collection<KiePackage> kpkgs = kbuilder.getKnowledgePackages(); assertEquals( 1, kpkgs.size() ); return kpkgs.iterator().next(); } return (( KnowledgeBuilderImpl ) kbuilder).getPackage( pkgName ); }
private static InternalKnowledgePackage generatePackage(int ruleCount) throws DroolsParserException { StringReader reader = new StringReader(generateRules(ruleCount)); System.out.println("Generating packages"); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl(); try { pkgBuilder.addPackageFromDrl( reader ); } catch ( IOException e ) { fail( "Unable to parse rules\n" + e.getMessage()); } if ( pkgBuilder.hasErrors() ) { fail( pkgBuilder.getErrors().toString() ); } return pkgBuilder.getPackage("org.kie.test"); }
@Test public void testEvalMethodCompare() { final KnowledgeBuilderImpl builder1 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = new PackageDescr( "package1" ); createEvalRule( packageDescr1, "1==1" ); builder1.addPackage( packageDescr1 ); final EvalCondition eval1 = (EvalCondition) ((RuleImpl)builder1.getPackage("package1").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final KnowledgeBuilderImpl builder2 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr2 = new PackageDescr( "package2" ); createEvalRule( packageDescr2, "1==1" ); builder2.addPackage( packageDescr2 ); final EvalCondition eval2 = (EvalCondition) ((RuleImpl)builder2.getPackage("package2").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final KnowledgeBuilderImpl builder3 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr3 = new PackageDescr( "package3" ); createEvalRule( packageDescr3, "1==3" ); builder3.addPackage( packageDescr3 ); final EvalCondition eval3 = (EvalCondition) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); assertEquals( eval1, eval2 ); assertFalse( eval1.equals( eval3 ) ); assertFalse( eval2.equals( eval3 ) ); }
@Test public void testDebug() throws Exception { String rule = "package com.sample; dialect \"mvel\" rule myRule when then\n System.out.println( \"test\" ); end"; KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr packageDescr = parser.parse(null, rule); RuleDescr ruleDescr = packageDescr.getRules().get(0); builder = new KnowledgeBuilderImpl( ); builder.addPackage(packageDescr); InternalKnowledgePackage pkg = builder.getPackage("com.sample"); MVELConsequence consequence = (MVELConsequence) pkg.getRule("myRule").getConsequence(); String sourceName = ((CompiledExpression) consequence.getCompExpr()).getSourceName(); System.out.println(sourceName); String ruleName = ruleDescr.getNamespace() + "." + ruleDescr.getClassName(); System.out.println(ruleName); assertEquals(sourceName, ruleName); }
return packageBuilder.getPackage("org.drools.test");
@Test public void testTypeDeclaration() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "StockTick" ); typeDescr.addAnnotation( Role.class.getCanonicalName(), "Event" ); typeDescr.addAnnotation( TypeSafe.class.getCanonicalName(), "true" ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage( pkgDescr ); if ( builder.hasErrors() ) { fail( builder.getErrors().toString() ); } InternalKnowledgePackage pkg = builder.getPackage(pkgDescr.getName()); assertEquals( 1, pkg.getTypeDeclarations().size() ); TypeDeclaration type = pkg.getTypeDeclaration( "StockTick" ); assertTrue( type.isTypesafe() ); assertEquals( Role.Type.EVENT, type.getRole() ); assertEquals( StockTick.class, type.getTypeClass() ); }
@Test public void testTypeDeclarationNewBean() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler.test" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "NewBean" ); TypeFieldDescr f1 = new TypeFieldDescr( "name", new PatternDescr( "String" ) ); TypeFieldDescr f2 = new TypeFieldDescr( "age", new PatternDescr( "int" ) ); typeDescr.addField( f1 ); typeDescr.addField( f2 ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage( pkgDescr ); InternalKnowledgePackage pkg = builder.getPackage(pkgDescr.getName()); assertEquals( 1, pkg.getTypeDeclarations().size() ); TypeDeclaration type = pkg.getTypeDeclaration( "NewBean" ); assertEquals( "NewBean", type.getTypeName() ); assertEquals( Role.Type.FACT, type.getRole() ); assertEquals( "org.drools.compiler.test.NewBean", type.getTypeClass().getName() ); assertFalse( builder.hasErrors() ); InternalKnowledgePackage bp = builder.getPackage(pkgDescr.getName()); Class newBean = bp.getPackageClassLoader().loadClass( "org.drools.compiler.test.NewBean" ); assertNotNull( newBean ); }
private RuleImpl createRule( final ConditionalElementDescr ceDescr, final KnowledgeBuilderImpl builder, final String consequence ) throws Exception { final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); lhs.addDescr( (BaseDescr) ceDescr ); final PatternDescr patternDescr = new PatternDescr( Cheese.class.getName(), "stilton" ); patternDescr.addConstraint( new ExprConstraintDescr( "type == \"stilton\" ") ); ceDescr.addDescr( patternDescr ); ruleDescr.setConsequence( consequence ); builder.addPackage( packageDescr ); InternalKnowledgePackage pkg = builder.getPackage(packageDescr.getName()); final RuleImpl rule = pkg.getRule( "rule-1" ); assertEquals( "rule-1", rule.getName() ); return rule; }
KieSession knowledgeSession = kbase.newKieSession(); KiePackage rebuiltPkg = knowledgeBuilder.getPackage( "org.test" ); org.kie.api.definition.rule.Rule rule = rebuiltPkg.getRules().iterator().next(); RuleImpl r = ((RuleImpl) rule);
@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 testTypeDeclarationWithFieldMetadata() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler.test" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "TypeWithFieldMeta" ); TypeFieldDescr f1 = new TypeFieldDescr( "field", new PatternDescr( "String" ) ); f1.addAnnotation("custom", null); typeDescr.addField( f1 ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage(pkgDescr); assertFalse(builder.hasErrors()); InternalKnowledgePackage bp = builder.getPackage(pkgDescr.getName()); final FactType factType = bp.getFactType("org.drools.compiler.test.TypeWithFieldMeta"); assertNotNull( factType ); final FactField field = factType.getField( "field" ); assertNotNull( field ); final Map<String, Object> fieldMetaData = field.getMetaData(); assertNotNull("No field-level custom metadata got compiled", fieldMetaData); assertTrue("Field metadata does not include expected value", fieldMetaData.containsKey("custom")); }