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.k...@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@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>> 
>> _______________________________________________
>> rules-users mailing list
>> rules-users@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>> 
>> 
> 
> 
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to