用BeanShell实现公式管理:使用Java脚本构建强大、灵活的公式管理系统
2010-03-18 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹

清单2.
public double caculateByFormula(Formula formula, Hashtable parameters) {
double result=0.0;
try
{
Interpreter i = new Interpreter();
// 实例化一个BeanShell解释器
i.eval("import parse.*;");
//引用公式管理系统
Vector para= formula.getParameters();
//获取公式中包含的参数列表
Iterator it= para.iterator();
//设置参数值
while (it.hasNext()){
String[] dec= (String[])it.next();
String declare= dec[1]+ " "+ dec[0];
i.eval(declare);
String value= ((Double)parameters.get(dec[0])).toString();
if (value != null){
String assign_value= dec[0]+ "="+ value;
i.eval(assign_value);
}else{
System.out.println("caculateByFormula():"+ dec[0]+
"参数名不符或改参数不存在"); System.exit(1);
}
}
//参数设置成功,根据公式计算脚本进行计算,仅用了一行代码就完成了求值过程,
BeanShell值得你去了解 i.eval(formula.getScript());
Double rst= (Double)i.get("result");
result= rst.doubleValue();
}catch(Exception e){
System.out.println("caculateByFormula():"+ e.getMessage());
}
return result;
}
更多精彩
赞助商链接