WEB开发网
开发学院软件开发Java 用BeanShell实现公式管理:使用Java脚本构建强大、... 阅读

用BeanShell实现公式管理:使用Java脚本构建强大、灵活的公式管理系统

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 也许你曾经用解析字符窜的方法做过类似的编程工作,当你看到这里仅用一行代码就完成了对表达式的求值,用BeanShell实现公式管理:使用Java脚本构建强大、灵活的公式管理系统(6),是不是很惊讶?首先,实例化一个BeanShell解释器,它从公式库中找到对应的公式,然后将该公式的参数列表以及计算

也许你曾经用解析字符窜的方法做过类似的编程工作,当你看到这里仅用一行代码就完成了对表达式的求值,是不是很惊讶?首先,实例化一个BeanShell解释器,然后将要使用的系统包import 进来,Interpreter.eval()方法就是对括号内的脚本求值或者说是解释执行脚本。然后,将formula的参数取出来,用 BeanShell脚本方式声明这些参数,再将parameters中参数对应的值再次用BeanShell脚本的方式赋值给对应的变量。请注意,如果这时候传入的参数名不正确或者是参数名对应的参数类型不符,就会抛出系统异常。如果参数设置成功,则调用formula的公式计算脚本。仅用一行代码,BeanShell完成了大部分的工作:i.eval(formula.getScript())。最后,从解释器中取得计算结果,该结果存放在 result变量中(可以查看清单1.中公式计算脚本)。现在是不是觉得BeanShell是一个好帮手?只要使用恰当,BeanShell将帮助你大大简化你的编程工作,这是一件非常快乐的事情。

另外,装载formula使用了JDOM技术,它从公式库中找到对应的公式,然后将该公式的参数列表以及计算脚本读出来组装成一个公式对象。见如下代码:

清单3.

public Formula loadFormula(String formulaID) { 
 Vector paras= new Vector(); 
    try{ 
 SAXBuilder builder= new SAXBuilder(); 
 Document doc= builder.build(prefix+ "Formulas.xml"); 
 //prefix是一个字符窜,用来指定公式库实际所在的位置 
 Element root= doc.getRootElement(); 
 List formulas= root.getChildren("formula"); 
 Iterator it= formulas.iterator(); 
 Element formula= null; 
 while( it.hasNext()){   
  formula= (Element)it.next(); 
  if(formula.getAttributeValue("id").equals(formulaID)){ 
  break; 
  }    
 }     
 //获取参数列表 
 List parameters= formula.getChild("parameters").getChildren(); 
 Iterator itp= parameters.iterator(); 
 while(itp.hasNext()){ 
  String[] s_para= new String[2]; 
  Element e_para= (Element)itp.next(); 
  s_para[0]= e_para.getAttributeValue("name"); 
  s_para[1]= e_para.getAttributeValue("type"); 
  paras.add(s_para); 
 }     
 Element script= formula.getChild("script"); 
 String s_script= script.getTextTrim(); 
 return new Formula(s_script, paras); 
 //将读出的信息组装成一个公式对象 
 }catch(Exception e){ 
 System.out.println("loadFormula():"+ e.getMessage()); 
    } 
 return null; 
} 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:BeanShell 实现 公式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接