? 數據導入功能終于做的差不多了,服務器端導入模式也試了一下,臨下班之前還有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呢,爭取提前把任務搞定,周五調休。