数据导入功能终于做的差不多了,服务器端导入模式也试了一下,临下班之前还有nullpointerexception错误没有解决,还有就是生成凭证有问题。总感觉项目中有太多将就的东西了,底层开发框架设计的很好,扩展性也很强。但是业务框架就差很多了,那个凭证生成平台竟然建立在源单据要建立一个名字为fivouchered字段的基础之上,否则根本跑不起来,耦合性太强了,而且这种耦合是很不容易被发现的。周四就要把做的这个Demo发到客户现场了,希望一切都平安,否则下周甚至下下……下周都不可能安心进入项目开发了。今天项目组开例会没有前一阵子那么忙碌了,产品延期发版了两个多月,战友们也感觉压力小了许多。但是风险是无处不在的,只希望需求、开发、测试合作更紧密一点,交流更通畅一些,多快好省的让产品发版,少点全员加班。
忙是忙,总不能把自己困死在工作上的。毕竟还是要自己学点东西的。本想回来看一看hibernate的源代码的,但是同宿舍兄弟刚买了台电脑要用我的电脑做代理上网。生平第一次看到用双网卡实现共享上网,又学了一招,我那个兄弟可是个网络高手,以后要经常向他学习了,等有时间买个小路由,让他教教我怎么配置路由器。
时间不多只能把我前一阵子研究的java中调用脚本语言的东西拿出来整理一下了。java中调用脚本语言有很广泛的用途,比如用户自定义公式,自定义单据转换规则,用户自定义工作流等等。java中调用脚本语言有很多中实现,比如Jython、Groovy、Beanshell等等。但是即使对于有一定开发经验的程序员学习它们是需要一段时间的。而提起脚本,无论是程序员还是有一定软件开发基础的客户(例如客户公司的网管、信息管理员等等)都会想起javascript和VBScript,如果我们的系统使用这些用户熟悉的脚本语言,必将降低系统学习的难度。VBScript是捆绑在windows平台下的,因此javascript就成了我们专注的对象。javascript引擎可以在NetScape的js.jar中找到,而现在这个包已经做为一个开源项目独立出来了,项目的名字是Rhino,项目网站:
http://www.mozilla.org/rhino/。 Rhino支持javascript标准的所有特性,如赋值、运算、判断语句、循环语句、甚至简单的io操作。Rhino很简单易用,我以一个例子来说明,这个例子就是允许用户设定一个使用x,y两个变量进行一定逻辑算术运算(运算规则用户用javascript定义),并允许用户对x,y赋值,然后运行得出计算结果。代码如下:
Context ctx = Context.enter();
Scriptable scope = ctx.initStandardObjects();
scope.put("x", new Integer(20));
scope.put("y", new Integer(30));
try
{
ctx.evaluateString("if(x
",1,null);
System.out.println(scope.get("result", scope));
}
finally
{
Context.exit();
}
很简捷吧。scope.put("x", new Integer(20))的意思是为变量x赋值,ctx.evaluateString("if(x",1,null); 则是运行javascript脚本,而scope.get("result", scope)则是得到运算结束后变量的值,我们采用result做为返回值,所以scope.get("result", scope)就表示得到返回值。不错吧。嘿嘿,很方便呀。
好了,都凌晨一点钟了,该睡觉了,明天还要改bug呢,争取提前把任务搞定,周五调休。