[rules-users] How to insert values into drl
Michael Anstis
michael.anstis at gmail.com
Sun Dec 8 16:30:47 EST 2013
You need to use kiesession.insert( object ).
Sent on the move
On 8 Dec 2013 20:52, "anjana.ackroyd" <anjana.ackroyd at gmail.com> wrote:
> Hi,
> I am new to drools and trying to figure out how to get this simple example
> working.
> I have intellij IDE .
> I am trying to compare two numbers using drools 6.x and dont know how to
> insert numberone and numbertwo after I get my drl file into my file system
>
> Here is my code
>
> RuleRunner.java
> package com.cambiahealth.enterprise.service.droolsrule;
>
> import org.kie.api.KieServices;
> import org.kie.api.builder.KieBuilder;
> import org.kie.api.builder.KieFileSystem;
> import org.kie.api.builder.KieRepository;
> import org.kie.api.builder.Message.Level;
> import org.kie.api.io.KieResources;
> import org.kie.api.io.Resource;
> import org.kie.api.runtime.KieContainer;
> import org.kie.api.runtime.KieSession;
>
> public class RuleRunner
> {
> private KieServices kieServices;
> private KieContainer kieContainer;
> private KieSession kieSession;
> private KieResources kieResources;
> private KieFileSystem kieFileSystem;
> private KieRepository kieRepository;
>
> public RuleRunner()
> {
> this.kieServices = KieServices.Factory.get();
> this.kieResources = kieServices.getResources();
> this.kieFileSystem = kieServices.newKieFileSystem();
> this.kieRepository = kieServices.getRepository();
> }
>
>
> public void addRuleFile(String packagename, String rulefile)
> {
> Resource resource = kieResources.newClassPathResource(rulefile);
>
> packagename = packagename.replace(".","/");
>
> String resourcepath =
> "src/main/resources/"+packagename+"/"+rulefile;
>
> kieFileSystem.write(resourcepath, resource);
> }
>
> public KieSession buildKnowledgeSession()
> {
> KieBuilder kb = kieServices.newKieBuilder(kieFileSystem);
>
> kb.buildAll();
>
> if (kb.getResults().hasMessages(Level.ERROR))
> {
> throw new RuntimeException("Build Errors:\n" +
> kb.getResults().toString());
> }
>
> kieContainer =
> kieServices.newKieContainer(kieRepository.getDefaultReleaseId());
>
> kieSession = this.kieContainer.newKieSession();
>
> return kieSession;
> }
>
> public KieSession fireAllRules()
> {
> kieSession.fireAllRules();
>
> return kieSession;
> }
>
> public void dispose()
> {
> this.kieSession.dispose();
> }
> }
>
>
>
>
>
>
> My numbercompare.drl
>
>
> declare NumberCompare
> message: String
> numberone: Integer
> numbertwo: Integer
> end
>
> rule "numberone is equals to numbertwo"
> when
> n: NumberCompare(numberone == numbertwo);
>
> then
> n.setMessage("numberone is equals to numbertwo");
> end
>
> rule "numberone is greater than numbertwo"
> when
> n: NumberCompare(numberone > numbertwo);
>
> then
> n.setMessage("numberone is greater than numbertwo");
> end
>
> rule "numberone is less than numbertwo"
> when
> n: NumberCompare(numberone < numbertwo);
>
> then
> n.setMessage("numberone is less than numbertwo");
> end
>
>
>
>
>
>
>
>
>
> My DroolsService.java where I want to pass in values 1 and 2 to the drl
> file
>
>
> runner.addRuleFile("drools", "compareNumberRule.drl");
>
> KieSession kieSession = runner.buildKnowledgeSession();
> //How do I pass 1 as numberone and 2 as numbertwo values ????? before
> firerules
> runner.fireAllRules();
> runner.dispose();
> return number.getMessage(); //To change body of implemented
> methods
> use File | Settings | File Templates.
> }
> }
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/How-to-insert-values-into-drl-tp4027151.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20131208/078be9e8/attachment-0001.html
More information about the rules-users
mailing list