Looking at the SpreadsheetCompiler class you can do something like the following
/** * Generates DRL from the input stream containing the spreadsheet. * * @param xlsStream * The stream to the spreadsheet. Uses the first worksheet found * for the decision tables, ignores others. * @param type * The type of the file - InputType.CSV or InputType.XLS * @param listener * * @return DRL xml, ready for use in drools. */ public String compile(final InputStream xlsStream, final InputType type, final RuleSheetListener listener) { final DecisionTableParser parser = type.createParser( listener ); parser.parseFile( xlsStream ); final Package rulePackage = listener.getRuleSet(); List<Rule> rules = rulePackage.getRules for(Rule r : rules) { r.getName(); List<Condition> conditions = r.getConditions(); For(Condition c : conditions) { String snippet = r.getSnippet(); } } final DRLOutput out = new DRLOutput(); rulePackage.renderDRL( out ); return out.getDRL(); } Thomas From: rules-users-boun...@lists.jboss.org [mailto:rules-users-boun...@lists.jboss.org] On Behalf Of Wolfgang Laun Sent: 04 October 2011 08:53 To: Rules Users List Subject: Re: [rules-users] Is it possible to retrieve the collection of Conditions from DecisionTable? Since Toni confirms me even before I post this on the list: Using the Verifier way to get at a column from some spreadsheet is not for the faint at heart. In addition to what Toni wrote: source code in the Drools AST corner isn't even commented. -W 2011/10/4 Toni Rikkola <toni.rikk...@gmail.com<mailto:toni.rikk...@gmail.com>> 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<mailto: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<http://Nabble.com>. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org> https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org> https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org> https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list rules-users@lists.jboss.org<mailto:rules-users@lists.jboss.org> https://lists.jboss.org/mailman/listinfo/rules-users ________________________________ ************************************************************************************** This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmas...@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary. NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00 **************************************************************************************
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users