? 數(shù)據(jù)導入功能終于做的差不多了,服務器端導入模式也試了一下,臨下班之前還有nullpointerexception錯誤沒有解決,還有就是生成憑證有問題。總感覺項目中有太多將就的東西了,底層開發(fā)框架設計的很好,擴展性也很強。但是業(yè)務框架就差很多了,那個憑證生成平臺竟然建立在源單據(jù)要建立一個名字為fivouchered字段的基礎之上,否則根本跑不起來,耦合性太強了,而且這種耦合是很不容易被發(fā)現(xiàn)的。周四就要把做的這個Demo發(fā)到客戶現(xiàn)場了,希望一切都平安,否則下周甚至下下……下周都不可能安心進入項目開發(fā)了。今天項目組開例會沒有前一陣子那么忙碌了,產(chǎn)品延期發(fā)版了兩個多月,戰(zhàn)友們也感覺壓力小了許多。但是風險是無處不在的,只希望需求、開發(fā)、測試合作更緊密一點,交流更通暢一些,多快好省的讓產(chǎn)品發(fā)版,少點全員加班。
? 忙是忙,總不能把自己困死在工作上的。畢竟還是要自己學點東西的。本想回來看一看hibernate的源代碼的,但是同宿舍兄弟剛買了臺電腦要用我的電腦做代理上網(wǎng)。生平第一次看到用雙網(wǎng)卡實現(xiàn)共享上網(wǎng),又學了一招,我那個兄弟可是個網(wǎng)絡高手,以后要經(jīng)常向他學習了,等有時間買個小路由,讓他教教我怎么配置路由器。
? 時間不多只能把我前一陣子研究的java中調(diào)用腳本語言的東西拿出來整理一下了。java中調(diào)用腳本語言有很廣泛的用途,比如用戶自定義公式,自定義單據(jù)轉(zhuǎn)換規(guī)則,用戶自定義工作流等等。java中調(diào)用腳本語言有很多中實現(xiàn),比如Jython、Groovy、Beanshell等等。但是即使對于有一定開發(fā)經(jīng)驗的程序員學習它們是需要一段時間的。而提起腳本,無論是程序員還是有一定軟件開發(fā)基礎的客戶(例如客戶公司的網(wǎng)管、信息管理員等等)都會想起javascript和VBScript,如果我們的系統(tǒng)使用這些用戶熟悉的腳本語言,必將降低系統(tǒng)學習的難度。VBScript是捆綁在windows平臺下的,因此javascript就成了我們專注的對象。javascript引擎可以在NetScape的js.jar中找到,而現(xiàn)在這個包已經(jīng)做為一個開源項目獨立出來了,項目的名字是Rhino,項目網(wǎng)站:http://www.mozilla.org/rhino/。
? Rhino支持javascript標準的所有特性,如賦值、運算、判斷語句、循環(huán)語句、甚至簡單的io操作。Rhino很簡單易用,我以一個例子來說明,這個例子就是允許用戶設定一個使用x,y兩個變量進行一定邏輯算術運算(運算規(guī)則用戶用javascript定義),并允許用戶對x,y賦值,然后運行得出計算結(jié)果。代碼如下:
??????? 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)則是得到運算結(jié)束后變量的值,我們采用result做為返回值,所以scope.get("result", scope)就表示得到返回值。不錯吧。嘿嘿,很方便呀。
? 好了,都凌晨一點鐘了,該睡覺了,明天還要改bug呢,爭取提前把任務搞定,周五調(diào)休。
? 忙是忙,總不能把自己困死在工作上的。畢竟還是要自己學點東西的。本想回來看一看hibernate的源代碼的,但是同宿舍兄弟剛買了臺電腦要用我的電腦做代理上網(wǎng)。生平第一次看到用雙網(wǎng)卡實現(xiàn)共享上網(wǎng),又學了一招,我那個兄弟可是個網(wǎng)絡高手,以后要經(jīng)常向他學習了,等有時間買個小路由,讓他教教我怎么配置路由器。
? 時間不多只能把我前一陣子研究的java中調(diào)用腳本語言的東西拿出來整理一下了。java中調(diào)用腳本語言有很廣泛的用途,比如用戶自定義公式,自定義單據(jù)轉(zhuǎn)換規(guī)則,用戶自定義工作流等等。java中調(diào)用腳本語言有很多中實現(xiàn),比如Jython、Groovy、Beanshell等等。但是即使對于有一定開發(fā)經(jīng)驗的程序員學習它們是需要一段時間的。而提起腳本,無論是程序員還是有一定軟件開發(fā)基礎的客戶(例如客戶公司的網(wǎng)管、信息管理員等等)都會想起javascript和VBScript,如果我們的系統(tǒng)使用這些用戶熟悉的腳本語言,必將降低系統(tǒng)學習的難度。VBScript是捆綁在windows平臺下的,因此javascript就成了我們專注的對象。javascript引擎可以在NetScape的js.jar中找到,而現(xiàn)在這個包已經(jīng)做為一個開源項目獨立出來了,項目的名字是Rhino,項目網(wǎng)站:http://www.mozilla.org/rhino/。
? Rhino支持javascript標準的所有特性,如賦值、運算、判斷語句、循環(huán)語句、甚至簡單的io操作。Rhino很簡單易用,我以一個例子來說明,這個例子就是允許用戶設定一個使用x,y兩個變量進行一定邏輯算術運算(運算規(guī)則用戶用javascript定義),并允許用戶對x,y賦值,然后運行得出計算結(jié)果。代碼如下:
??????? 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
????????? System.out.println(scope.get("result", scope));
??????? }
??????? finally
??????? {
??????????? Context.exit();
??????? }
很簡捷吧。scope.put("x", new Integer(20))的意思是為變量x賦值,ctx.evaluateString("if(x
? 好了,都凌晨一點鐘了,該睡覺了,明天還要改bug呢,爭取提前把任務搞定,周五調(diào)休。