Vincent Thinking

          All about Vincent's work and life

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

          #

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

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

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

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

          posted @ 2006-01-10 20:51 Vincent Thinking 閱讀(1113) | 評論 (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 閱讀(71760) | 評論 (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 閱讀(279) | 評論 (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 閱讀(471) | 評論 (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 閱讀(5851) | 評論 (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 閱讀(423) | 評論 (0)編輯 收藏

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

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

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


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

          僅列出標題
          共4頁: 上一頁 1 2 3 4 下一頁 
          主站蜘蛛池模板: 洞头县| 门源| 莱西市| 库车县| 汕尾市| 临安市| 安国市| 嵊州市| 葵青区| 肇州县| 盐池县| 南昌县| 清丰县| 宁陕县| 广西| 阿克| 射洪县| 大厂| 泽普县| 竹北市| 精河县| 江口县| 沅江市| 南阳市| 乾安县| 昆明市| 徐州市| 兴仁县| 东兰县| 新民市| 仲巴县| 日照市| 贵州省| 蕲春县| 拜城县| 临漳县| 贵溪市| 德州市| 泰州市| 镇平县| 石城县|