public static final void main(String[] args) { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("ex02_helloRules.drl"), ResourceType.DRL); KnowledgeBase kbase = kbuilder.newKnowledgeBase(); StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); Hour hour = new Hour(new Random().nextInt(24)); ksession.execute(hour); } }
public static final void main(String[] args) { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("ex03_greetings.bpmn"), ResourceType.BPMN2); kbuilder.add(ResourceFactory.newClassPathResource("ex03_greetings.drl"), ResourceType.DRL); KnowledgeBase kbase = kbuilder.newKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); //KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession); HashMap<String, Object> params = new HashMap<String, Object>(); params.put("hourOfDay", new Hour(new Random().nextInt(24))); ksession.startProcess("com.wordpress.salaboy.bpmn2.greetings",params); ksession.fireAllRules(); //logger.close(); ksession.dispose(); } }
public void deploy(DeploymentEntity deployment, Map<String, Object> deploymentSettings) { log.debug("Processing deployment {}", deployment.getName()); KnowledgeBuilder knowledgeBuilder = null; DeploymentManager deploymentManager = Context.getProcessEngineConfiguration().getDeploymentManager(); Map<String, ResourceEntity> resources = deployment.getResources(); for (String resourceName : resources.keySet()) { log.info("Processing resource {}", resourceName); if (resourceName.endsWith(".drl")) { // is only parsing .drls sufficient? what about other rule dsl's? (@see ResourceType) if (knowledgeBuilder == null) { knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); } ResourceEntity resourceEntity = resources.get(resourceName); byte[] resourceBytes = resourceEntity.getBytes(); Resource droolsResource = ResourceFactory.newByteArrayResource(resourceBytes); knowledgeBuilder.add(droolsResource, ResourceType.DRL); } } if (knowledgeBuilder != null) { KnowledgeBase knowledgeBase = knowledgeBuilder.newKnowledgeBase(); deploymentManager.getKnowledgeBaseCache().add(deployment.getId(), knowledgeBase); } } }
public void deploy(DeploymentEntity deployment) { KnowledgeBuilder knowledgeBuilder = null; DeploymentManager deploymentManager = Context .getProcessEngineConfiguration() .getDeploymentManager(); Map<String, ResourceEntity> resources = deployment.getResources(); for (String resourceName : resources.keySet()) { log.info("Processing resource {}", resourceName); if (resourceName.endsWith(".drl")) { // is only parsing .drls sufficient? what about other rule dsl's? (@see ResourceType) if (knowledgeBuilder==null) { knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); } ResourceEntity resourceEntity = resources.get(resourceName); byte[] resourceBytes = resourceEntity.getBytes(); Resource droolsResource = ResourceFactory.newByteArrayResource(resourceBytes); knowledgeBuilder.add(droolsResource, ResourceType.DRL); } } if (knowledgeBuilder!=null) { KnowledgeBase knowledgeBase = knowledgeBuilder.newKnowledgeBase(); deploymentManager.getKnowledgeBaseCache().add(deployment.getId(), knowledgeBase); } } }
public static final void main(String[] args) { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("ex01_helloBPM.bpmn"), ResourceType.BPMN2); KnowledgeBase kbase = kbuilder.newKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); ksession.startProcess("com.wordpress.salaboy.bpmn2.hello"); ksession.dispose(); } }
/** * Creates a new KnowledgeBase given the specified component implementation config. * @param cic the component implementation config * @param additionalResources any extra resources to add * @return the base */ public static KnowledgeBase newBase(ComponentImplementationConfig cic, Resource... additionalResources) { KnowledgeBaseConfiguration kbaseConfig = Configs.getBaseConfiguration(cic); KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig); KnowledgeBuilderConfiguration kbuilderConfig = Configs.getBuilderConfiguration(cic); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbase, kbuilderConfig); List<Resource> resources = new ArrayList<Resource>(); resources.addAll(cic.getModel().getResources()); if (additionalResources != null) { for (Resource additionalResource : additionalResources) { if (additionalResource != null) { resources.add(additionalResource); } } } ClassLoader loader = cic.getLoader(); if (loader == null) { loader = Classes.getClassLoader(Bases.class); } for (Resource resource : resources) { Resources.add(resource, kbuilder, loader); } return kbuilder.newKnowledgeBase(); }
@Test public void testConsequenceException2() { // BZ-1077834 String str = "package foo.bar\n" + "rule R\n" + "when\n" + "then\n" + " throw new RuntimeException(\"foo\");" + "end"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes(Charset.forName("UTF-8"))), ResourceType.DRL); if (kbuilder.hasErrors()) { throw new RuntimeException("Drools compile errors: " + kbuilder.getErrors().toString()); } KnowledgeBase kbase = kbuilder.newKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); try { ksession.fireAllRules(); } catch (org.drools.runtime.rule.ConsequenceException e) { // this is correct, succeeds } catch (Exception other) { fail("Wrong exception raised = " + other.getClass().getCanonicalName()); } }
@Test public void testSimplePackageAttributesSingleDrl() throws Exception { String drl1 = "package test\nno-loop true\ndeclare Album\n genre: String \n end\nrule \"rule1\"\nwhen Album() \n then \nAlbum a = new Album(); \n end"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource( new StringReader( drl1 ) ), ResourceType.DRL ); KnowledgeBase kbase = kbuilder.newKnowledgeBase(); assertEquals( 1, kbase.getKnowledgePackages().size() ); KnowledgePackage kp1 = kbase.getKnowledgePackages().iterator().next(); KnowledgePackageImp kpImpl1 = (KnowledgePackageImp) kp1; assertEquals( "test", kp1.getName() ); assertEquals( 1, kp1.getRules().size() ); Rule r1 = kp1.getRules().iterator().next(); String rName = r1.getName(); assertEquals( "rule1", rName ); org.drools.rule.Rule rr1 = (org.drools.rule.Rule) kpImpl1.getRule( rName ); assertEquals( true, rr1.isNoLoop() ); }
@Test public void testBrl() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource( "BrlRule.package", getClass() ), ResourceType.DRL ); kbuilder.add( ResourceFactory.newClassPathResource( "BrlRule.brl", getClass() ), ResourceType.BRL ); // the compiled package KnowledgeBase kbase = kbuilder.newKnowledgeBase(); kbase = SerializationHelper.serializeObject( kbase ); StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession(); session.insert( new Person( "Bob" ) ); assertEquals( 1, session.getObjects().size() ); session.fireAllRules(); // should have fired assertEquals( 0, session.getObjects().size() ); }
kbuilder.add( ResourceFactory.newReaderResource( new StringReader( drl2 ) ), ResourceType.DRL ); KnowledgeBase kbase = kbuilder.newKnowledgeBase();
kbuilder.add( ResourceFactory.newReaderResource( new StringReader( drl2 ) ), ResourceType.DRL ); KnowledgeBase kbase = kbuilder.newKnowledgeBase();