Vincent Thinking

          All about Vincent's work and life

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            34 隨筆 :: 0 文章 :: 183 評論 :: 0 Trackbacks

          2005年11月29日 #

          posted @ 2010-03-29 22:26 Vincent Thinking 閱讀(843) | 評論 (0)編輯 收藏

          DatePicker
          posted @ 2010-03-15 23:23 Vincent Thinking 閱讀(967) | 評論 (0)編輯 收藏

          Grid篇(100列,10000行)
          posted @ 2010-03-15 23:14 Vincent Thinking 閱讀(955) | 評論 (0)編輯 收藏

          ps:Aurora是一套正在開發中的actionscript3的ui框架. Buttons按鈕篇:
          posted @ 2009-11-09 17:17 Vincent Thinking 閱讀(309) | 評論 (0)編輯 收藏

          DoSWF 是一款非常好用的flash加密混淆工具,相比其他混淆工具,DoSWF的功能更加強大,混淆的也更徹底.

          1.支持as2及as3的加密。目前反編譯器完全看不到代碼
          2.支持對as3的混淆,讓反編譯器看到的是一堆亂碼
          3.支持對as3注入隨機代碼,讓反編譯軟件直接崩潰退出
          4.支持一個項目多個swf同時處理(doproject特性)
          5.支持對swc文件的加密
          6.方便對as3的swf添加文字、圖片水印
          7.支持對as3的swf進行剔除重組,方便模塊開發

          DoSWF主要分為3個不同的版本:
          MINI是DoSWF的一個簡易版,擁有DoSWF最基礎的加密、混淆功能。優點就是使用很簡單.
          PROJECT版主要是針對項目處理而發布的。它可以一次對多個swf文件進行綜合批量處理。
          PROFESSIONAL版即DoSWF專業版。擁有MINI版和PROJECT版所有功能。同時還有更多的特性,比如添加水印,剔除,使用域控制等

          MINI版本的價格只要人民幣50元,對于普通個人來說僅僅是相當于一本書的價格.

          經過測試.混淆加密過后的文件不會被SwfScan和Sothink等反編譯工具破解,值得推薦!!

          DoSWF的地址: http://www.doswf.cn/
          posted @ 2009-11-09 17:09 Vincent Thinking 閱讀(1508) | 評論 (0)編輯 收藏

          在寫Fgantt的過程中發現一個奇怪的問題,相同的代碼編譯出來的swf在其他瀏覽器下都正常,
          但是在360瀏覽器這樣的嵌入IE內核的瀏覽器下確出現問題.
          stage.stageWidth在swf加載后能夠正常的得到正確的值,但是在360瀏覽器下卻得到0.
          而且不同的是360加載完swf后會觸發一個Resize事件,這個記得在以前做js框架的時候也發現過.
          IE FF 等不會觸發.
          觸發過resize事件后,才能正常得到stageWidth的值.
          挺奇怪的現象,這樣導致原有的代碼出現了問題.
          看來瀏覽器的不同還是會影響swf中的某些機制或者屬性.
          posted @ 2009-11-08 00:13 Vincent Thinking 閱讀(561) | 評論 (0)編輯 收藏

          FGantt 實現了網絡圖.

          20091106更新:
          (1)解決360瀏覽器下無法打開的bug.
          (2)調整顏色顯示,解決Flash9下繪制錯誤的bug.


          posted @ 2009-11-02 14:45 Vincent Thinking 閱讀(4613) | 評論 (16)編輯 收藏

          初步實現了甘特圖的基本功能,基于flex3構建,跨平臺 跨瀏覽器 :)
           重寫了FGantt,不再基于flex架構.具體參見:
          http://www.aygfsteel.com/znjqolf/archive/2009/09/24/296311.html

          posted @ 2009-07-16 00:14 Vincent Thinking 閱讀(1190) | 評論 (0)編輯 收藏

          很久沒更新,最近一直在研究的東西
          MSNP12,? LUCENE, IBATIS

          posted @ 2006-08-12 15:10 Vincent Thinking 閱讀(567) | 評論 (0)編輯 收藏

          "易用性等方面確實還有一定的差距,java的版本取勝都是在其企業級定位上"
          這點我非常的贊同.
          企業級的定位使它的功能強大了,
          同時易用性就相對削弱了一些.?"


          看到這些話就忍不住想罵人?? 什么是企業級應用?? 企業級應用是易用性差的借口么? 難道就只有java能做企業級應用,php,asp就只能做做網站? taobao,ebay不算企業級應用么????..... ...
          posted @ 2006-05-31 23:17 Vincent Thinking 閱讀(825) | 評論 (0)編輯 收藏

          public ? class ?ActionMapperFactory? {
          ????
          ????
          protected ? static ? final ?Log?LOG? = ?LogFactory.getLog(ActionMapperFactory. class );

          ????
          private ? static ? final ?HashMap?classMap? = ? new ?HashMap();

          ????
          public ? static ?ActionMapper?getMapper()? {
          ????????
          synchronized ?(classMap)? {
          ????????????String?clazz?
          = ?(String)?Configuration.get(WebWorkConstants.WEBWORK_MAPPER_CLASS);
          ????????????
          try ? {
          ????????????????ActionMapper?mapper?
          = ?(ActionMapper)?classMap.get(clazz);
          ????????????????
          if ?(mapper? == ? null )? {
          ????????????????????mapper?
          = ?(ActionMapper)?ObjectFactory.getObjectFactory().buildBean(clazz,? null );
          ????????????????????classMap.put(clazz,?mapper);
          ????????????????}


          ????????????????
          return ?mapper;
          ????????????}
          ? catch ?(Exception?e)? {
          ????????????????String?msg?
          = ? " Could?not?create?ActionMapper:?WebWork?will?*not*?work! " ;
          ????????????????LOG.fatal(msg,?e);
          ????????????????
          throw ? new ?RuntimeException(msg,?e);
          ????????????}

          ????????}

          ????}

          }


          明白的告訴我一下,謝謝. 覺的有點問題...
          posted @ 2006-05-31 22:55 Vincent Thinking 閱讀(1749) | 評論 (0)編輯 收藏

          為了通用,從頭到尾都是utf-8.

          而webwork中JakartaMultiPartRequest對于多編碼的處理并不如意.

          apache的fileupload對于上傳文件名為中文的需要首先指定HeaderEncoding的編碼.
          而webwork對于MultiPartRequest的request并沒有設置encoding編碼
          詳見DispatcherUtils.java中 387行

          ???????? if ?(encoding? != ? null ? && ? ! MultiPartRequest.isMultiPart(request))? {
          ????????????
          try ? {
          ????????????????request.setCharacterEncoding(encoding);
          ????????????}
          ? catch ?(Exception?e)? {
          ????????????????LOG.error(
          " Error?setting?character?encoding?to?' " ? + ?encoding? + ? " '?-?ignoring. " ,?e);
          ????????????}

          ????????}

          如果沒有指定HeaderEncoding, 那么默認采用request的encoding,如果request也沒有指定則采用系統的編碼.
          這里并沒有指定request的encoding,往往導致上傳文件的名字亂碼.

          自定義一個MultiPartRequest,設定一下就ok了


          對于同時提交的表單域(form)參數,由于在form中指定的enctype的關系,并不能直接用request.getParameter()才取, 只能通過FileItem.getString()的方式.這里也是上面的問題, 取的CharacterEncoding是request中的,由于webwork的原因不一致.同樣需要指定一下.

          這樣form和上傳同時提交,參數,附件名都正常了 :)
          posted @ 2006-04-25 18:24 Vincent Thinking 閱讀(1385) | 評論 (2)編輯 收藏

          打開你的firefox, 輸入:

        1. about:
        2. about:config
        3. about:credits
        4. about:buildconfig
        5. about:cache
        6. about:plugins
        7. about:mozilla

          以前還真沒有注意到.:)

        8. posted @ 2006-04-20 21:46 Vincent Thinking 閱讀(351) | 評論 (0)編輯 收藏

          ZK 一個開源的ajax web框架,基于事件驅動的組件,通過標記語言來設計組件來簡化開發人員的工作。顯著的一個特點是使用類似XUL的標記語言來定義組件。

          其實我對這種類似桌面的開發方式來開發web程序一點都不感冒,因為封裝的東西太多,勢必影響擴展性。而且對應的社區也很少,很多因素影響。

          一個企業應用對于框架,技術并不是最重要的,需求和人員的素質等等因素也是很制約的。 很多開源的東西,在我看來只是 “看起來很美!” 回過來說zk,能以這種方式來開發也許能給我們很多啟發。
           
          有興趣的可以去看看:
          zk http://zk1.sourceforge.net/
          posted @ 2006-03-14 21:40 Vincent Thinking 閱讀(4108) | 評論 (2)編輯 收藏

                                                                               HSQLDB簡介 
                                                                               

          Vincent 2006年2月24日
           
          一 什么是HSQLDB? 
                  HSQLDB是一個用java編寫的關系型數據庫,它支持ANSI-92 SQL (BNF tree format) plus SQL 99 and 2003 enhancements. 它提供了一個非常小而快速的數據庫引擎,同時提供了相關的JDBC驅動和一些實用的工具。
           
                   最新的HSQLDB版本為1.8.0 ,經過了1年的開發,和1.7.2相比,1.8.0的功能更加強大, 對數據庫的容量支持達到了8GB,性能也更加出色。和當年相比,HSQLDB已經不僅僅很多人眼里的玩具,完全可以勝任商業的需求。(OpenOffice.org 2.0的數據庫引擎為HSQLDB1.8.0)
           
          這里有一張數據庫的performance test對比圖(HSQLDB的性能遠遠超過其他的數據庫)
           


          二 HSQLDB介紹

           1.1 簡介


          hsqldb.jar 包含所有的組件(數據庫引擎,jdbc驅動, 數據工具), 不同的命令用來執行不同的組件。
          hsqldb.jar主要包含了一下組件: 

          HSQLDB RDBMS                數據庫引擎
          HSQLDB JDBC Driver          JDBC驅動
          Database Manager            管理工具
          Query Tool (AWT)            查詢工具
          Sql Tool (command line)     SQL工具


          1.2 運行工具(Running Tools) 

                所有的工具都以jar的方式來運行,下面的例子講運行AWT方式的DataBase Manager,我們假設hsqldb.jar位于../lib目錄中

           java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager 

          Hsqldb工具的主類:

          org.hsqldb.util.DatabaseManager 
          org.hsqldb.util.DatabaseManagerSwing
          org.hsqldb.util.Transfer
          org.hsqldb.util.QueryTool 
          org.hsqldb.util.SqlTool 

          其中,DatabaseManager和SqlTool都可以有命令行參數,你可以用-?來察看它們有什么參數。DatabaseManager和Transfer都有圖形界面可以更好地交互。
           
          1.3 運行HSQLDB
           
          HSQLDB可以通過多種不同的方式來運行,通常把它分為Server模式和In-Process模式(也叫做Standalone模式),對于每種模式,Jar中都有相應的子程序來運行HSQLDB。
           
          每個HSQLDB數據庫包含2到5個命名相同但擴展名不同的文件組成,他們位于同一個目錄下。例如,名為“test”的數據庫包含了以下幾個文件: 

          test.properties
          test.script
          test.log 
          test.dat 
          test.backup

          properties文件包含了數據庫的基本配置,script文件包含了Table的定義和其他相關的數據對象,以及non-cached表的數據。log文件記錄了數據庫最近所做的更新。dat文件包含了cached表的數據,backup文件是上一次數據庫持久化后的壓縮備份文件,所有的這些文件都是最基本的,絕對不能刪除。如果你的數據庫沒有緩沖表(cached table),test.data和test.backup文件是不會存在。此外,HSQLDB數據庫可以鏈接到磁盤上任何地方任何格式的文本文件,比如CSV 列表。
           
          當"test"數據庫正在運行時,test.log文件用來記錄所有的操作記錄,"test.log"文件將在數據庫正常關閉(ShutDown)情況下自動刪除。否則(在非正常退出的時候),它將用來在下次啟動HSQLDB時恢復"test.log"中記錄的更新操作。"test.lck"文件也可以用來記錄數據庫是否被打開,它在HSQLDB正常退出的時候會被移除。有些情況下,HSQLDB會生成"test.data.old "文件,但隨后會被刪除掉。

          注意: 當HSQLDB引擎關閉數據庫的時候,它會產生擴展名為.new的臨時文件,然后會把這些文件重命名為上面所列出的文件的名稱。

          posted @ 2006-02-24 19:55 Vincent Thinking 閱讀(1944) | 評論 (1)編輯 收藏

          faint...
          posted @ 2006-02-20 09:45 Vincent Thinking 閱讀(259) | 評論 (0)編輯 收藏

          昨天研發中心項目組一起聚餐,聊起了軟件的發展問題。

          對于一個軟件公司,究竟是買軟件還是買服務? 買軟件做項目,必然要設計到軟件的開發定制,前期的投入是不可避免的,后期的維護成本也是很高的,客戶的需求是無止境的,往往上千萬的項目做下來卻是虧本的。 從另外一個角度來看,軟件究竟是什么? 在我看來,軟件就是一種特殊的服務,這里的服務不是指人的因素,而是機器,是軟件,用我們老大的話來講,用人去做服務一定是虧本的。

          心里也一直有一種設想,或許以后不再依靠出售軟件,做項目來生存,而是出售服務,尤其是基于bs結構的服務。想想google的email,BSP,RSS reader等等,或許很快在線的erp,在線的crm, oa,cms等等就會變成現實,當然這里很重要的一點就是要做到行業的標準,需要客戶來認同你,信任你。

          這里的情景很像現在的網游,我提供服務,你提供數據,數據集中存放,我提供個性化的定制,提供相關聯的信息(類似gmail中的廣告),針對特殊用戶做增值服務。

          看看37signal,一個人被很多人認為是一個很偉大的企業。我們好好思考一下,是不是應該做點什么?
          posted @ 2006-02-15 10:22 Vincent Thinking 閱讀(371) | 評論 (2)編輯 收藏

          圖形化的組件,讓人感覺又回到了vb時代,雖然不是很認同Echo2的機制,但是看到能以這樣的方式來做WEB,贊一個。^_^

          圖形組件庫,事件驅動機制,完全OO的UI的開發模式,再加上強大的EchoStudio,感覺一切都完美了很多。

          EchoStudio由于是商業軟件,有一定的試用期,最不爽的就是把以前的css完全用stylesheet來替代,可是竟然沒有看到相關的schema。只能用EchoStudio來做stylesheet,這不是逼著你買么? 沒辦法,只能crack了,反編譯了一下,暗自慶幸。嘿嘿,代碼竟然沒有混淆,很容易找到了驗證代碼。哈哈javassist2分鐘搞定。不過作為一個軟件開發人員,還是小小的BS一下自己.....
          posted @ 2006-02-10 14:31 Vincent Thinking 閱讀(2753) | 評論 (51)編輯 收藏

          由于下大雪,機場關閉。原定8:20的飛機,晚點到中午2點多才飛,害的我早上6點多就爬起來往機場趕。 瞌睡 Zzz...
          posted @ 2006-02-05 21:31 Vincent Thinking 閱讀(266) | 評論 (0)編輯 收藏

          WebWork 2.2 Released at January 11, 2006

          新版本是非常值得期待的.

        9. Full support for Java 5 Annotations and Generics
        10. Rich AJAX support using DWR and Dojo
        11. New QuickStart tool makes development easier than ever
        12. Tons more documentation with over 900 PDF pages!
        13. Client side validation using AJAX or plain JavaScript
        14. Built in support for Continuations
        15. JSR168/Portlet support for several popular Portlet servers, including Pluto
        16. Rich UI template framework with native support for JSP, FreeMarker, and Velocity
        17. Native support for Spring and Pico IOC containers
        18. More intelligent error reporting
        19. Developer Mode makes building webapps even easier with improved error reporting
        20. Simplified tag syntax
        21. Advanced data binding framework that works with any object, including domain objects
        22. 2.2版本是WebWork的一個新的里程碑, 接下來的主要精力將會投入到Struts Action Framework Version2.0

          posted @ 2006-01-12 11:09 Vincent Thinking 閱讀(867) | 評論 (2)編輯 收藏

          JBPM的流程定義中對于頁面綁定并沒有什么好的辦法.

          "大槍"是修改了JBPM的源代碼,來支持比如"<Task name="aa" url="/xx/yy.jsp">"的表示方法,這樣的處理效果可能不是很好,需要修改相應的源代碼,升級的時候也要同樣修改.

          我采取了另外一種折中的方法,建立一個關聯表,或者作個配置文件,url和相應的task name對對應關系.

          運行時得到相應的Task對象,得到相應的name,從對應表中取出綁定的頁面進行加載.

          posted @ 2006-01-10 20:51 Vincent Thinking 閱讀(1109) | 評論 (1)編輯 收藏

          什么是AHAH?
          AHAH:(Asychronous HTML and HTTP)
          簡單來說,AHAH是一種利用JavaScript動態更新web頁面的技術.他通過XMLHTTPRequest來獲得動態的html,填充到 web頁面中。

          和AJAX的關系?
          AHAH被認為是一種比AJAX(Asynchronous JavaScript and XML)更簡單的web開發方式,嚴格意義上來說AHAH是AJAX的一個子集,因為(X)HTML本身及時一個特殊形式的XML,但是最為子集的AHAH卻有特殊的和有用的特性:
          1.無需定義XML schemas可以使設計時間大幅減少

          2.使用已有的HTML頁面從而避免必須提供特殊的Web服務

          3.所有的數據通過瀏覽器可識別的HTML傳輸,從而可以很容易的調試和測試

          4.HTML直接包含在頁面的DOM對象中,無需解析

          5.HTML設計者可以使用CSS來格式化顯示,無需程序員使用XSLT轉換

          6.所有的處理都在服務器端完成,客戶端不需要編寫任何程序

          實事上,任何內容的最終都是要轉化成瀏覽器可識別結果,展現在瀏覽器上。很難想象出轉化成自定義的XML格式比HTML有什么優點

          參考ahah.js 和 jah.js

          Send AHAH Request

           1 function ahah(url,target) {
           2    // native XMLHttpRequest object
           3    document.getElementById(target).innerHTML = 'sending';
           4    if (window.XMLHttpRequest) {
           5        req = new XMLHttpRequest();
           6        req.onreadystatechange = function() {ahahDone(target);};
           7        req.open("GET", url, true);
           8        req.send(null);
           9    // IE/Windows ActiveX version
          10    } else if (window.ActiveXObject) {
          11        req = new ActiveXObject("Microsoft.XMLHTTP");
          12        if (req) {
          13            req.onreadystatechange = function() {ahahDone(target);};
          14            req.open("GET", url, true);
          15            req.send();
          16        }
          17    }
          18 

          Receive AHAH Request
           1 function ahahDone(target) {
           2    // only if req is "loaded"
           3    if (req.readyState == 4) {
           4        // only if "OK"
           5        if (req.status == 200 || req.status == 304) {
           6            results = req.responseText;
           7            document.getElementById(target).innerHTML = results;
           8        } else {
           9            document.getElementById(target).innerHTML="ahah error:\n" +
          10                req.statusText;
          11        }
          12    }
          13 }

          Executing Javascript

          由于瀏覽器在插入HTML的時候并不會執行<script>標簽中的代碼,所以你可以利用下面的方法來解決 document.getElementById(target):

           1 var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
           2 var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
           3 var bMoz = (navigator.appName == 'Netscape');
           4 function execJS(node) {
           5   var st = node.getElementsByTagName('SCRIPT');
           6   var strExec;
           7   for(var i=0;i<st.length; i++) {     
           8     if (bSaf) {
           9       strExec = st[i].innerHTML;
          10     }
          11     else if (bOpera) {
          12       strExec = st[i].text;
          13     }
          14     else if (bMoz) {
          15       strExec = st[i].textContent;
          16     }
          17     else {
          18       strExec = st[i].text;
          19     }
          20     try {
          21       eval(strExec);
          22     } catch(e) {
          23       alert(e);
          24     }
          25   }
          26 }
          27 

          注意:
          1.由于IE返回的tag標志都是大寫,所以你必須搜索SCRIPT而不是script.在firefox中也保留大寫的形式.
          2.不要用//的注釋方式,用/**/的方式來代替,在每一個聲明句后面加';'

          (未完..)
          posted @ 2006-01-09 09:31 Vincent Thinking 閱讀(71746) | 評論 (2)編輯 收藏

          昨天和一個朋友去參加了上海BEA User Group.這次活動的Topic主要有Dlee的Ajax in action , Moxie 的軟件的良性文化 ,Bea 顧問的 SOA相關介紹 還有最后的重頭戲 Robbin的領域模型。 Yanger的主持還是比較精彩的,BEA的組織也比較到位,活動中還穿插了魔術表演。整天的氛圍還是不錯的,各位的演講也是很精彩的,但是由于活動時間過長了,感覺最后Robbin的講演還是有些沒有盡興。 每個Topic都是可以深入講下去的,但是一個下午的時間要講4個Topic,時間太倉促了,每個Topic也只是泛泛的介紹了一下概念,感覺還不如去看JavaEye的帖子。有些失望。 應該采用BUJG的方式,一次關注一個Topic,深入的講下去,不過想想這也算是BEA的商業活動,要達到一定的商業目的。:) 討論技術看來還是自發的組織比較好。
          posted @ 2006-01-08 11:14 Vincent Thinking 閱讀(274) | 評論 (1)編輯 收藏

          留個紀念。 2005對我個人來說發生了很多難以忘記的事情。希望2006能有個好的開端。也祝各位新年快樂!
          posted @ 2005-12-31 18:06 Vincent Thinking 閱讀(206) | 評論 (0)編輯 收藏

          對于每個系統來說,權限都是一個很重要的組成部分,貫穿于整個系統功能,甚至包括數據。RBAC是一個很好的模型,對于復雜的處理更多的還是和業務緊密聯系在一起,所以對于組件形式的RBAC產品還很難做到的。 對一個用戶來說,權限主要包括2個部分,data和action,其組合形式對我們來說就是一個view,每個權限對應一個相應的view。在這里我用三維的坐標來思考,data和action是相應的x,y軸,不同的data,action組成一個業務視圖,從三維的角度來看是一個2維的的平面,我們的系統功能也就是由不同的平面來做成的。 權限可以看作z軸,view在不同的權限上會有不同的表現形式,展現不同的數據,不同的操作。這樣權限,數據,操作看起來就會清晰很多。 我所設想的應該是這樣的一種方式:view由不同的view component和action component組成,這里view只是一個模板,沒有任何業務數據。 提供一個類似PrivilegeViewFactory的類,傳入view模板,和相應的角色(用戶,組。。),生成相應的PrivilegeView,然后由業務邏輯去填充數據,這樣可以容易做到權限和view的分離,層次也比較清晰。 每個view component要實現相應的權限接口,要根據不同的角色生成不同的view component。比如DataGrid,不同的角色看的列是不同的,甚至數據內容也是不同的,更細粒度的看,業務不同字段的的數據也是不同。這部分是和ui綁定的,也是最復雜,工作量最大的部分。
          posted @ 2005-12-21 12:39 Vincent Thinking 閱讀(466) | 評論 (3)編輯 收藏

          jbpm作為jboss的一個子項目,和jboss綁定的比較多,官方文檔也沒有說如何移植,下面就移植作個簡要的說明。

          1. 下載jbpm http://www.jboss.com/products/jbpm/downloads

          2. 解壓,導入eclispe的項目中 配置MYSQL 1. 在eclipse的jpbm項目中加入mysql的lib 2. mysql創建一個數據庫"jbpm"

          3. 在eclipse的jbpm項目中找到'jbpm-3.0\src\resources'目錄,創建一個自目錄'mysql'

          4. 把同目錄hsqldb文件夾中的2個文件(create.db.hibernate.properties, identity.db.xml)拷貝到mysql目錄中

          5. 按下面所示編輯 'create.db.hibernate.properties'

          hibernate.dialect=org.hibernate.dialect.MySQLDialect
          hibernate.connection.driver_class
          =com.mysql.jdbc.Driver
          hibernate.connection.url
          =jdbc:mysql://localhost:3306/jbpm
          hibernate.connection.username
          =root
          hibernate.connection.password
          =root
          hibernate.c3p0.min_size
          =1
          hibernate.c3p0.max_size
          =3
          hibernate.show_sql
          =true


          6. 在eclipse的jbpm項目中找到ant腳本'build.deploy.xml',進行編輯 找到 target name="create.db", 刪除 db.start, db.stop 在這個目標塊中將所有的'hsqldb' 替換為 'mysql'

          7. 運行ant create.db -buildfile build.deploy.xml創建jbpm表結構

          8. 找到target name="build.webapp"按下面進行編輯
            <target name="build.webapp" description="builds jbpm.war">
              
          <ant antfile="build.xml" target="build.webapp" /> 
              
          <mkdir dir="build/jbpm.war.dir" /> 
              
          <copy todir="build/jbpm.war.dir">
                
          <fileset dir="src/resources/jbpm.war" /> 
              
          </copy> 
              
          <copy todir="build/jbpm.war.dir/WEB-INF/lib">
                
          <fileset dir="build" includes="jbpm-webapp-${jbpm.version}.jar" /> 
                
          <fileset dir="lib/jsf" includes="*.jar" /> 
                
          <fileset dir="lib/commons" includes="commons-digester-*.jar, commons-beanutils-*.jar" /> 
              
          </copy> 
              
          <jar destfile="build/jbpm.war">
                
          <fileset dir="build/jbpm.war.dir" />
              
          </jar> 
            
          </target>


          9. 找到目錄src/resources,編輯jbpm.properties文件
          jbpm.scheduler.service.factory=org.jbpm.scheduler.impl.SchedulerServiceImpl
          jbpm.task.instance.class
          =org.jbpm.taskmgmt.exe.TaskInstance

          # uncomment the next line if JbpmSessionFactory.getInstance()
          # should lookup the singleton instance from JNDI instead of creating 
          # a default one.
          #
          #jbpm.session.factory.jndi.name
          =java:/jbpm/JbpmSessionFactory

          # uncomment the next line to use the file system instead of the database for 
          # storing files related to a process definition
          #
          # jbpm.files.dir
          =c:/jbpm.data

          # resource path to a properties file that will overwrite all the hibernate 
          # properties. For database specific builds in db project there is a different
          # hibernate.properties file on the classpath for each database. You could change
          # the default database for any testing runs by uncommenting the next line and
          # adding a hibernate.properties file in the basedir.
          #
          jbpm.hibernate.cfg.xml
          =jbpm.hibernate.cfg.xml
          #jbpm.hibernate.properties
          =jbpm.hibernate.properties

          編輯jbpm.hibernate.properties文件
          #hibernate.dialect=org.hibernate.dialect.HSQLDialect
          #hibernate.connection.datasource
          =java:/DefaultDS

          10. 找到src/config.files目錄,編輯hibernate.cfg.xml文件
              <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
              
          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
              
          <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm3</property>
              
          <property name="hibernate.connection.username">root</property>
              
          <property name="hibernate.connection.password">root</property>
                  
              
          <!-- c3p0 connection pooling properties-->
              
          <property name="hibernate.c3p0.min_size">1</property>
              
          <property name="hibernate.c3p0.max_size">3</property>

              
          <property name="hibernate.query.substitutions">true 1, false 0</property>
              
          <property name="hibernate.connection.pool_size">15</property>

          11. 運行ANT腳本ant build.webapp -buildfile build.deploy.xml 生成jbpm.war,拷貝到tomcat web目錄中,啟動tomcat,輸入'http://localhost:8080/jbpm' 就可以看到他的example
          posted @ 2005-12-19 17:26 Vincent Thinking 閱讀(5830) | 評論 (14)編輯 收藏

          和我當初的設想的一樣,ajax桌面開始爆發了。當初看到netvibes的時候還是測試版本,現在功能已經很強大了。

          類似的平臺已經有一下9個:
          1. Eskobo
          2. Favoor
          3. Google
          4. Goowy(基于flash, 非Ajax)
          5. Microsoft Live
          6. Netvibes
          7. Pageflakes
          8. Protopage
          9. Zoozio
          基于ajax的rich application必然是個大的趨勢,而web os是這里面很重要的部分,是rich application的all in one。我不敢說這就是web 3.0,當人們對2.0還很模糊的時候更不應該做這樣的揣測。不過有一天,真有可能會像《24小時》所描繪的那樣。這也驗證了sun的一句經典的話:"網絡就是計算機". 順便BS一下 "
          posted @ 2005-12-19 12:28 Vincent Thinking 閱讀(419) | 評論 (0)編輯 收藏

          Flickr和Del.icio.us都已經被它收歸旗下.對于新興的web2.0模式的探索者來說無疑是一個強有力的興奮劑.收購可能對于這樣的網站來說是最好的方式.在現有的條件下,無法找到可行的盈利方式,收購是最好的模式.人氣+資金,相信以后會做的更好. 幾個月前就關注的milliondollarhomepage今天已經達到847000了,我從來沒有鄙視這樣的行為,一直都認為好的創意是非常重要的,技術大家都會,但是你不是第一個能想到的. 所以類似芙蓉姐姐的東西我從來不去關心,自然會自生自滅的,用不著我們去浪費時間去諷刺和挖苦. 時間會說明一切. 換個角度來看,做個假設,如果第一個百萬首頁是發生在國內,我想結果絕對不像1baiwan現在那樣的那么輕松. 國外對待新事物的發展還是保持很中立的態度的,至少沒有用輿論來抹殺它. 快圣誕了.希望能得到意外的驚喜. 嘿嘿
          posted @ 2005-12-11 17:25 Vincent Thinking 閱讀(368) | 評論 (2)編輯 收藏

          上海的天氣真是太變態了。前天還是10-20度,今天氣溫突然下降了10多度,最低已經降到了0下,看到路上已經結冰了。換衣服都來不及,趕快找出棉襖,帶上手套。冷。。。 第一次感到冬天來了。
          posted @ 2005-12-05 21:54 Vincent Thinking 閱讀(208) | 評論 (0)編輯 收藏

          以前一直沒用過docbook,數據和顯示分離的好處是顯而易見的。這個有點類似MVC.^_^ 很多開源的文檔都是用docbook來處理的,數據和顯示分離,未來的趨勢,再也不用在word中搞排版了,就好像html中的div+css,爽啊。


          一些關于docbook的文檔:
          Writing Documentation Using DocBook
          DocBookAuthoringTools
          DocBook學習
          posted @ 2005-11-29 22:54 Vincent Thinking 閱讀(450) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 平昌县| 法库县| 神池县| 佛学| 小金县| 兰考县| 秭归县| 安平县| 灵宝市| 舞阳县| 郎溪县| 桃江县| 同心县| 广东省| 乐昌市| 东城区| 武胜县| 垦利县| 清苑县| 乐都县| 新田县| 秦皇岛市| 宣恩县| 北辰区| 翁源县| 博湖县| 汉川市| 镇康县| 青州市| 峡江县| 民和| 瓮安县| 交城县| 思南县| 遂昌县| 青田县| 永安市| 铜山县| 牡丹江市| 金乡县| 景泰县|