快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

用BeanShell实现公式管理

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

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

在很多中大型的应用中,如SCM(供应链管理)、CRM(客户关系管理)和ERP(企业资源计划)等,使用者往往要根据自身的需求,灵活的对某一些参数值进行变更,使得按照某固定公式计算的结果符合目前的情况。如不同时期商品价格的折扣率需要根据实际情况进行调整,或者职员的奖金百分比要根据公司的业绩而定。这就需要有一个强大的公式管理机制来对一些参数进行灵活调整。

前言

客户的需求是在不断变化的。虽然他们说现在他们公司的职员奖金应该就是按照那个公式计算,但是过了几个月他们会告诉你这个公式并不是很合理,还需要加一些参数。你可能会说,这个没问题,我们可以改程序。但是当这样的变更不是一次一个的发生,而是频繁的、大量的出现时,你也许就在想应该有一个公式管理系统来完成这些琐碎却很重要的变更了。是的,在很多系统中已经这样做了。这里将介绍一种简单的、易扩展的公式管理系统,它采用简单灵活的BeanShell脚本机制,并且结合JDOM技术来实现。在阅读本文以前,你需要对BeanShell和JDOM有所了解。

BeanShell简介

BeanShell 是一种Java 解释器,它包含的脚本语言基本与Java 语言兼容,具有体积小、简单、符合Java 风格等特点。本文不是介绍BeanShell的语法和用法,而是基于BeanShell脚本实现一个公式管理器来说明BeanShell的强大脚本功能,从而简化Java程序员的编程工作,使他们更深入的了解什么时候使用BeanShell技术将使得构建的系统更灵活。你可以阅读参考资料了解更多 BeanShell的知识。类似的Java脚本技术还有DynamicJ等,想要详细了解它们的更多信息,请查阅后面的参考资料。(请注意:这里的 Java脚本不是Javascript。)

JDOM简介

JDOM使得用Java操作xml文件更轻松。这里使用xml文件格式对用户的自定义公式库进行存储,即简单又容易管理。利用JDOM技术,能够简单、快速的完成这个任务。如果你想详细了解有关JDOM的知识,请查阅文章后面的参考资料。

公式管理系统的目标

公式管理系统实现的主要目标是:用户可以根据自己的需要自定义公式,包括添加、修改和删除公式或者公式包含的参数;提供接口使得用户或其它系统能够利用公式库中的公式进行计算求值。从以上系统的主要功能,可以知道该系统主要包含两个用例:自定义公式和计算表达式。自定义公式是用户预先定义好某公式包含的参数(包括参数名、参数类型等),然后将这些参数用运算符按照一定的法则组合成所需要的公式。公式定义好后,将被保存到公式库中,供以后用户或其它系统计算时调用。这是管理者根据自身的需求,灵活更改公式或公式包含的参数的系统功能;计算表达式是用户给相应参数赋值,然后指定要遵照的公式进行计算求值。这是该系统提供给使用者的外部接口。一般的,使用者只需要提供要遵照的公式ID和相关的参数值,就可以调用该接口进行计算。该系统的用例图如下:

图1. 公式管理系统用例图

用BeanShell实现公式管理(2)

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

公式管理系统的设计

明确了系统的目标,我们第一步要做的就是找出系统的核心类。首先,我们需要一个公式管理器(FormulaParser),它负责将用户自定义的公式转换成系统格式并保存到公式库中,它提供外部接口,供外部需要根据公式计算时使用;我们还需要一个计算器(Calculator),它的工作就是进行计算。它包含了所有的运算类型,如加、减、乘或除,当然还可以包含大(小)于、等于等其它运算,可以根据需要进行扩展;最后,我们还需要一个公式类(Formula)。顾名思义,公式对象就代表一个公式。公式管理器就是一个管理者,它既要接受用户的自定义公式,又

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号