Problem with DSL and Business Rules creation in Drools

Posted by jillika iyer on Stack Overflow See other posts from Stack Overflow or by jillika iyer
Published on 2010-06-17T03:46:42Z Indexed on 2010/06/17 3:53 UTC
Read the original article Hit count: 300

Filed under:

Hi, I am using Eclipse with the Drools plugin to create rules. I want to create business rules and main aim is to try and provide the user a set of options which he can use to create rules. For eg:If an Apple can have only 3 colors: I want to provide an option like a drop down so that the user can know before hand which are the options he can use in his rules. Is it possible? I am creating a dsl but unable to still provide the above functionality for a business rule. I am having an error implementing a basic dsl also. The code to add the dsl is as follows in my RuleRunner class()

InputStream ruleSource = RuleRunner.class.getClassLoader().getResourceAsStream("/Rule1.dslr");

InputStream dslSource = RuleRunner.class.getClassLoader().getResourceAsStream("/sample-dsl.dsl");

//Load the rules , using DSL

addRulesToThisPackage.addPackageFromDrl( new InputStreamReader(ruleSource),new InputStreamReader(dslSource));

I have both the sample-dsl .dsl and Rule1.dslr in my working directory.

Error encountered at adding the dsl to the package (last line)

Error stack:

Exception in thread "main" java.lang.NullPointerException

  at java.io.Reader.<init>(Unknown Source)

  at java.io.InputStreamReader.<init>(Unknown Source)

  at com.org.RuleRunner.loadRuleFile(RuleRunner.java:96)

  at com.org.RuleRunner.loadRules(RuleRunner.java:48)

  at com.org.RuleRunner.runStatelessRules(RuleRunner.java:109)

  at com.org.RulesTest.main(RulesTest.java:41)

my dsl file has basic mapping as per the online documentations.

The dsl rule I created is:

expander sample-dsl.dsl

rule "A status changes B status"

  when

        There is an A

           -        has an address

         There is a B

             - has name

  then

        - print updated A and Aaddress

End

I have created DSL in eclipse.

Is the code I added for it to be loaded to my package correct?? Or am I missing something????

It seems like my program is unable to find the dsl?

Please help. Can you point me towards the right direction to create a user friendly business rule ??

Thanks.

J

© Stack Overflow or respective owner

Related posts about drools