public KieBase createKieBase(Process... process) { KieBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); for( Process processToAdd : process ) { ((KnowledgeBaseImpl) kbase).addProcess(processToAdd); } return kbase; }
private RuleImpl getRule(KieBase kbase, String ruleName) { return ((KnowledgeBaseImpl)kbase).getPackage("org.drools").getRule(ruleName); }
drl += "end\n"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource( new StringReader( drl ) ), ResourceType.DRL ); KnowledgeBuilderErrors errors = kbuilder.getErrors(); if ( kbuilder.hasErrors() ) { fail( kbuilder.getErrors().toString() ); assertFalse( kbuilder.hasErrors() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); List<ObjectTypeNode> nodes = ((KnowledgeBaseImpl)kbase).getRete().getObjectTypeNodes(); ObjectTypeNode node = null; for ( ObjectTypeNode n : nodes ) {
KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "person.xsd", getClass() ), kbuilder, } catch ( IOException e ) { LOG.error( "Errors while adding xsd model. ", kbuilder.getErrors() ); assertFalse( kbuilder.hasErrors() ); kbuilder.add( ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL ); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); classLoader = ((InternalRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader();
@Test @Ignore("This test is suspicious to say the least...") public void testScheduledActivation() { KnowledgeBaseImpl knowledgeBase = (KnowledgeBaseImpl) KnowledgeBaseFactory.newKnowledgeBase(); KnowledgePackageImpl impl = new KnowledgePackageImpl( "test" ); impl.addRule( rule ); knowledgeBase.addPackages( Collections.singleton( impl ) ); SessionConfiguration config = SessionConfiguration.newInstance(); config.setClockType( ClockType.PSEUDO_CLOCK ); KieSession ksession = knowledgeBase.newKieSession( config, KieServices.get().newEnvironment() ); PseudoClockScheduler scheduler = (PseudoClockScheduler) ksession.<SessionClock> getSessionClock(); Marshaller marshaller = MarshallerFactory.newMarshaller( knowledgeBase );
public BuildContext createContext() { RuleBaseConfiguration conf = new RuleBaseConfiguration(); KnowledgeBaseImpl rbase = new KnowledgeBaseImpl( "ID", conf ); BuildContext buildContext = new BuildContext( rbase ); RuleImpl rule = new RuleImpl( "rule1").setPackage( "org.pkg1" ); InternalKnowledgePackage pkg = new KnowledgePackageImpl( "org.pkg1" ); pkg.getDialectRuntimeRegistry().setDialectData( "mvel", new MVELDialectRuntimeData() ); pkg.addRule( rule ); buildContext.setRule( rule ); return buildContext; }
final String className = TestEvalExpression.class.getName(); KnowledgeBaseImpl kBase = new KnowledgeBaseImpl( "xxx", null ); pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) ); JavaDialectRuntimeData data = new JavaDialectRuntimeData(); data.onAdd(pkg.getDialectRuntimeRegistry(), kBase.getRootClassLoader()); pkg.getDialectRuntimeRegistry().setDialectData("java", data); kBase.addPackage(pkg); final JavaDialectRuntimeData pcData = ( JavaDialectRuntimeData ) pkg.getDialectRuntimeRegistry().getDialectData( "java" ); pcData.onAdd(pkg.getDialectRuntimeRegistry(), kBase.getRootClassLoader()); pcData.onBeforeExecute(); Class cls = kBase.getRootClassLoader().loadClass( "org.drools.core.rule.PackageCompilationDataTest$TestEvalExpression" );
@Test public void testStaticImports() { KnowledgeBaseImpl base = new KnowledgeBaseImpl( "default", null); // assume empty knowledge base assertTrue( base.getPackages().length == 0 ); // add package with function static import into knowledge base InternalKnowledgePackage pkg = new KnowledgePackageImpl( "org.drools.test" ); pkg.addStaticImport( "org.drools.function.myFunction" ); base.addPackage( pkg ); // verify package has been added assertTrue( base.getPackages().length == 1 ); // retrieve copied and merged package from the base InternalKnowledgePackage copy = base.getPackage( "org.drools.test" ); assertEquals( Collections.singleton( "org.drools.function.myFunction" ), copy.getStaticImports() ); } }
@Test public void testDateEffective() { WorkingMemory wm = (WorkingMemory) new KnowledgeBaseImpl( "x", null).newKieSession(); final RuleImpl rule = new RuleImpl( "myrule" ); assertTrue( rule.isEffective(null, new RuleTerminalNode(), wm ) ); final Calendar earlier = Calendar.getInstance(); earlier.setTimeInMillis( 10 ); rule.setDateEffective( earlier ); assertTrue( rule.isEffective(null, new RuleTerminalNode(), wm ) ); final Calendar later = Calendar.getInstance(); later.setTimeInMillis( later.getTimeInMillis() + 100000000 ); assertTrue( later.after( Calendar.getInstance() ) ); rule.setDateEffective( later ); assertFalse( rule.isEffective(null, new RuleTerminalNode(), wm ) ); }
public ObjectTypeNode getObjectTypeNode(KieBase kbase, String nodeName) { List<ObjectTypeNode> nodes = ((KnowledgeBaseImpl)kbase).getRete().getObjectTypeNodes(); for ( ObjectTypeNode n : nodes ) { if ( ((ClassObjectType)n.getObjectType()).getClassType().getSimpleName().equals( nodeName ) ) { return n; } } return null; }
xjcOpts.setSchemaLanguage(Language.XMLSCHEMA); JaxbConfiguration jaxbConfiguration = KnowledgeBuilderFactory.newJaxbConfiguration(xjcOpts, "xsd"); classLoader = ((KnowledgeBaseImpl)ksession.getKieBase()).getRootClassLoader();
public JAXBContext getJaxbContext() { if ( this.jaxbContext == null ) { JaxbDataFormat def = new JaxbDataFormat(); def.setPrettyPrint( true ); // TODO does not work: def.setContextPath( "org.drools.camel.testdomain:org.drools.pipeline.camel" ); def.setContextPath( "org.drools.pipeline.camel" ); // create a jaxbContext for the test to use outside of Camel. StatefulKnowledgeSession ksession1 = (StatefulKnowledgeSession) node.get( "ksession1", CommandExecutor.class ); KnowledgeBase kbase = ksession1.getKieBase(); ClassLoader originalCl = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader( ((ReteooRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader() ); def = DroolsPolicy.augmentJaxbDataFormatDefinition( def ); org.apache.camel.converter.jaxb.JaxbDataFormat jaxbDataformat = (org.apache.camel.converter.jaxb.JaxbDataFormat) def.getDataFormat( this.context.getRoutes().get( 0 ).getRouteContext() ); jaxbDataformat.setCamelContext(routeBuilder.getContext()); try { jaxbDataformat.start(); } catch (Exception e) { throw new IllegalStateException(e); } jaxbContext = jaxbDataformat.getContext(); } finally { Thread.currentThread().setContextClassLoader( originalCl ); } } return jaxbContext; }
ClassLoader originalCl = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(((KnowledgeBaseImpl)kbase).getRootClassLoader()); routeBuilder.getContext().setApplicationContextClassLoader(((KnowledgeBaseImpl)kbase).getRootClassLoader());
impl = new KnowledgePackageImpl( "test" ); BuildContext buildContext = new BuildContext( knowledgeBase, knowledgeBase.getReteooBuilder().getIdGenerator() ); impl.addRule( rule ); knowledgeBase.addKnowledgePackages( Collections.singleton( (KnowledgePackage) impl ) ); SessionConfiguration config = SessionConfiguration.newInstance(); config.setClockType( ClockType.PSEUDO_CLOCK ); StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession( config, KnowledgeBaseFactory.newEnvironment() ); PseudoClockScheduler scheduler = (PseudoClockScheduler) ksession.<SessionClock> getSessionClock(); Marshaller marshaller = MarshallerFactory.newMarshaller( knowledgeBase );
private static ReteooBuilder[] getReteBuilders(int count) { System.out.println("Creating "+count+" ReteBuilder's"); ReteooBuilder[] reteBuilders = new ReteooBuilder[count]; RuleBaseConfiguration conf = new RuleBaseConfiguration(); for (int i = 0; i < reteBuilders.length; i++) { reteBuilders[i] = new ReteooBuilder(new KnowledgeBaseImpl( "id1", conf )); } return reteBuilders; }
private RuleTerminalNode getRtn(String ruleName, KieBase kbase) { return ( RuleTerminalNode ) ((KnowledgeBaseImpl) kbase).getReteooBuilder().getTerminalNodes(ruleName)[0]; }
drl += "end\n"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource(new StringReader(drl)), ResourceType.DRL ); KnowledgeBuilderErrors errors = kbuilder.getErrors(); if ( kbuilder.hasErrors() ) { fail( kbuilder.getErrors().toString() ); assertFalse( kbuilder.hasErrors() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); List<ObjectTypeNode> nodes = ((KnowledgeBaseImpl)kbase).getRete().getObjectTypeNodes(); ObjectTypeNode node = null; for ( ObjectTypeNode n : nodes ) {
public BuildContext createContext() { RuleBaseConfiguration conf = new RuleBaseConfiguration(); KnowledgeBaseImpl rbase = new KnowledgeBaseImpl( "ID", conf ); BuildContext buildContext = new BuildContext( rbase ); RuleImpl rule = new RuleImpl( "rule1").setPackage( "org.pkg1" ); InternalKnowledgePackage pkg = new KnowledgePackageImpl( "org.pkg1" ); pkg.getDialectRuntimeRegistry().setDialectData( "mvel", new MVELDialectRuntimeData() ); pkg.addRule( rule ); buildContext.setRule( rule ); return buildContext; }
@Test public void testDateExpires() throws Exception { WorkingMemory wm = (WorkingMemory) new KnowledgeBaseImpl("x", null).newKieSession(); final RuleImpl rule = new RuleImpl( "myrule" ); assertTrue( rule.isEffective(null, new RuleTerminalNode(), wm ) ); final Calendar earlier = Calendar.getInstance(); earlier.setTimeInMillis( 10 ); rule.setDateExpires( earlier ); assertFalse( rule.isEffective(null, new RuleTerminalNode(), wm ) ); final Calendar later = Calendar.getInstance(); later.setTimeInMillis( later.getTimeInMillis() + 100000000 ); rule.setDateExpires( later ); assertTrue( rule.isEffective(null, new RuleTerminalNode(), wm ) ); }
public ObjectTypeNode getObjectTypeNode(KieBase kbase, Class<?> nodeClass) { List<ObjectTypeNode> nodes = ((KnowledgeBaseImpl)kbase).getRete().getObjectTypeNodes(); for ( ObjectTypeNode n : nodes ) { if ( ((ClassObjectType)n.getObjectType()).getClassType() == nodeClass ) { return n; } } return null; } }