快速业务通道

用BeanShell实现公式管理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
"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; }

用BeanShell实现公式管理(5)

时间:2011-06-22 IBM / 杨铁军

更好的了解该系统

上面介绍了系统应用BeanShell的部分,也就是系统的外部接口实现部分。你可能觉得有些迷惑,不是要自定义公式吗?怎么公式库早就有公式了呢?其实细心的读者早就发现,要自定义公式完成系统的另外一个重要功能并不是什么难事,你甚至可以想到直接编辑公式库来添加、修改、删除公式。当然你可以开发一个友好易用的自定义公式界面,你完全可以这样做。你需要完成的只是将用户输入的自定义公式信息(包括公式的参数及参数类型,运算表达式)转换成公式库中的参数列表和公式计算脚本。如果你要这样做,你不可避免的陷入到字符窜的解析当中去了。不过建议不要这样做,因为用户来写公式计算脚本将是可行的。再看看公式库的两个公式计算脚本,相信你会同意这一点。因为本文的讨论重点是BeanShell应用,所以这部分工作不做详细讨论,读者可以选择一个合适的方式来完成自定义公式的用户接口。下面是该系统的循序图和FormulaParser的状态图,能够帮助你更好的理解该系统。

图3. 调用公式计算外部接口

图4. FormulaParser状态图

用BeanShell实现公式管理(6)

时间:2011-06-22 IBM / 杨铁军

最后,我们给出一个测试用例来说明如何使用该系统。公式库中有两个公式,一个用来计算商品折扣价格,一个用来计算职员奖金。我们将公式包含的参数值传给系统外部接口。见下面代码:

清单4.

FormulaParser fp= new FormulaParser(); Hashtable paras= new Hashtable(); paras.put("price", new Double(100.0)); //价格paras.put("discount", new Double(0.9)); //折扣率为0.9 System.out.println("计算结果:"+ fp.caculateByFormula(fp.loadFormula("1001"), paras)); //遵照公式1001计算,计算预期结果为90.0 FormulaParser fp1= new FormulaParser(); Hashtable paras1= new Hashtable(); paras1.put("sale", new Double(11000.0)); //销售额 paras1.put("score", new Double(0.8)); //表现得分 System.out.println("计算结果:"+ fp1.caculateByFormula(fp1.loadFormula("1002"), paras1)); // 遵照公式1002计算,计算预期结果为9100.0

程序输出为:

计算结果:90.0 计算结果:9100.0

与预期结果完全一致。开发环境为JDK1.3.1。

结束语

这就是BeanShell给我们带来的奇妙体验。并且,基于BeanShell的公式管理系统是一个很有用的工具。你可以试着将更多的运算法则加入到系统的计算器中,试着扩展该公式系统以集成到你目前的工作当中,你也可以提供一个非常友好的界面给用户,让他们轻松的定制自己的公式。一个增强功能的公式管理系统已经成功应用到笔者参与的一个电信系统中。当然,本文的方法可能不是最好的,欢迎你与我讨论。系统

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号