[rules-users] Is it possible to retrieve the collection of Conditions from DecisionTable?
Toni Rikkola
toni.rikkola at gmail.com
Tue Oct 4 02:46:08 EDT 2011
If you take a look at the Verifier it goes through the Drools AST with a visitor pattern.
It starts by using getting the PackageDescr using DrlParser, this uses Drools internals so be warned that it might change in the future.
Reader drlReader = new InputStreamReader( stream );
PackageDescr descr = new DrlParser().parse( drlReader );
After that it goes through the PackageDescr using PackageDescrVisitor. RuleDescrVisitor shows how to get the condition part from each rule.
https://github.com/droolsjbpm/drools/blob/master/drools-verifier/src/main/java/org/drools/verifier/visitor/PackageDescrVisitor.java
https://github.com/droolsjbpm/drools/blob/master/drools-verifier/src/main/java/org/drools/verifier/visitor/RuleDescrVisitor.java
Toni
On Oct 3, 2011, at 8:11 PM, Mark Proctor wrote:
> On 03/10/2011 18:03, Wolfgang Laun wrote:
>> A condition does not have a "name", as you write; values of the cells
>> below a condition are (usually) literals.
>>
>> There is no API for extracting parts of a spreadsheet. You can look at
>> the Drools source code (in the packages org.drools.decisiontable and
>> .../parser) and write whatever you need - it is not too difficult.
> You can also look at drools-verifier, as that shows ho to analyse
> resulting rule fragments.
>
> Mark
>>
>> -W
>>
>>
>> On 3 October 2011 17:05, RaviCKota<Ravi.Kota at wellsfargo.com> wrote:
>>> Hi All, for suppose I have a DecisionTable like below
>>>
>>> CONDITION ACTION
>>> -----------------------------
>>> COND1 ACTION1
>>> COND2 ACTION2
>>> COND3 ACTION3
>>> -----------------------------
>>>
>>> This is just a representation of the DecisionTable. So I need to retrieve
>>> all the conditions and store them into a Collection like Set. Does Drools
>>> provide any such feature.
>>>
>>> We load the drools as below
>>> PackageBuilder builder = new PackageBuilder();
>>> builder.addPackageFromDrl(new StringReader(drl)); //drl is the filepath of
>>> decisiontable excel
>>>
>>> // add the package to a rulebase (deploy the rule package).
>>> RuleBase ruleBase = RuleBaseFactory.newRuleBase();
>>> ruleBase.addPackage(builder.getPackage());
>>>
>>> I tried to look into api of RuleBase, tried to get the packages, Rules,
>>> Consequence, etc etc, but could not find any method, that gets me the
>>> condition name.
>>>
>>> When I tried to do
>>> Package[] packages = rulebase.getPackages();
>>>
>>> for(Package pack : packages){
>>> System.out.println("Package Name is : "+pack.getName());
>>> Rule[] rules = pack.getRules();
>>> for(Rule rule : rules){
>>> System.out.println("Rule name is : "+rule.getName());
>>>
>>> All I get is some representation of each row, but I'm specifically looking
>>> for the value of the first column (CONDITION) for each rule.
>>>
>>> Please offer some guidance here.
>>>
>>> --
>>> View this message in context: http://drools.46999.n3.nabble.com/Is-it-possible-to-retrieve-the-collection-of-Conditions-from-DecisionTable-tp3390026p3390026.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
>>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
>
> _______________________________________________
> 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/20111004/a3569556/attachment.html
More information about the rules-users
mailing list