• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Weblogic Portal內容管理的開發經驗 (1)

    發布: 2007-6-10 17:46 | 作者: oneworld 轉 | 來源: java-cn | 查看: 35次 | 進入軟件測試論壇討論

    領測軟件測試網

     

     

     

     

     

     

     

     

    BEA Weblogic Portal內容管理的幾點開發經驗
    1.BEA Weblogic Portal 8.1內容管理概述
      BEA Weblogic Platform 8.1將所有在門戶中顯示的內容包括文本、HTML、圖形以及多媒體文件等都統一存儲在內容庫中,稱為BEA虛擬內容庫(BEA VCR)。所有的內容組織成層次結構,虛擬內容庫(VCR)是內容管理系統的頂層節點,接下來是內容庫,這些內容庫可以是多個BEA內容庫、第三方內容庫以及用戶自定義的內容庫。再下面就是層次節點(相當于文件夾)和內容節點(相當于文件)。如下圖:

    圖1 BEA虛擬內容庫的層次結構圖
    BEA內容庫在數據庫中由CM_開頭的5個表組成,其E/R圖如下:

    圖2 BEA內容存儲數據庫的E/R圖
      CM_NODE表存儲的是各個節點(包括層次節點和內容節點)的信息及其在整個內容庫中的位置。CM_OBJECT_CLASS表示的是各個節點的模式,也就是不同內容類型的定義。各種類型的內容又是由一系列屬性來表示的,CM_PROPERTIY_DEFINITION 存儲的就是所有內容類型的各種屬性的定義。CM_PROPERTY存儲的是每一個具體節點所有屬性的值。
      BEA Repository是與某個特定的服務器域(Server Domain)相對應的,在配置domain時,BEA Weblogic的服務器域模板就會自動在數據庫中生成內容庫的各種數據表。通過Workshop開發Portal應用時會自動生成Portal管理程序,通過該管理程序可以直接完成內容類型定義,內容節點的創建、修改以及刪除等基本的內容創建和管理功能。而且作為Portal管理的一部分,還可以對內容管理進行委托管理?梢哉f應用起來,是很方便的,但在企業級Portal的開發中,這些基本的內容管理功能是不夠的。BEA還在com.bea.conten.*中提供了一系列API,這些API不僅是BEA實現內容管理的核心,也是用戶二次開發的基礎。但遺憾的是BEA在這方面的文檔相當少,同時Platform 8.1發布時間又不長,因此本文作者在開發國家電子政務試點示范項目綿陽市電子政務門戶系統的過程中,通過摸索和實踐,積累了幾點開發經驗,現整理出來,希望能對BEA Platform 8.1開發的同好有所幫助。
    2.通過Java類或JSP直接進行內容管理
      在我們的項目中,內容管理是用戶使用較頻繁的一部分。雖然Workshop為Portal應用自動生成的Portal管理程序中已具有內容管理模塊,但是我們發現它卻不能很好地滿足最終用戶的需求,他們需要更加直觀和操作便捷、功能簡練而又能最大限度地滿足日常內容管理要求的Portal內容管理界面。于是,我們按照用戶的實際情況對BEA的內容管理進行二次開發,現摘出其主要的開發過程與大家探討。
      在程序中操作Repository概括起來有以下幾個步驟:首先,構造一個RepositoryManager類的實例;接下來,通過分別調用getObjectClassOps()方法和getNodeOps() 方法得到該實例的ObjectClassOps接口和NodeOps接口;然后即可使用接口中相應的方法實現對ObjectClass (類型)或Node(節點)的操作了。
    BEA Repository中的目錄和內容條目都是以節點的形式來組織的,若是目錄管理就調用操作目錄節點的方法,若是內容條目管理就調用操作內容節點的方法。下面列舉部分程序代碼:
    //得到ObjectClassOps接口和NodeOps接口
    Try {
    RepositoryManager rMgr = RepositoryManagerFactory.connect ( );
    ObjectClassOps ocOps = rMgr.getObjectClassOps();
    NodeOps nOps = rMgr.getNodeOps ( );
    }
    catch (Exception e) {
    ……
    }
    //以’BEA Repository’為根目錄,創建自己的子目錄
    ID RootID = new ID ( "BEA Repository", "" );
    String DirNodeName = “dir1”;
    Node DirNode = nOps.getNode ( "/BEA Repository/ " + DirNodeName );
    if (DirNode == null ){
    Try {
    DirNode = nOps.createHierarchyNode ( RootID, DirNodeName);
    }
    catch (Exception e) {
    ……
    }
    }
    //先取得要添加內容所屬Type的ObjectClassID
    //假設該Type的名稱為”type1”
    String typeName = " type1";
    ObjectClass[] objectClasses = null;
    String CurObjectClassID = null;
    try{
    objectClasses = ocOps.getObjectClasses();
    }
    catch(Exception e){
    ……
    }
    int i;
    for (i=0; iif(objectClasses[ i ].getName().equals( typeName )) break;
    }
    if(i < objectClasses.length){
    CurObjectClassID = objectClasses[ i ].getId().toString();
    }
    else{
    //該類型不存在,另做處理并退出,return
    }
    //在目錄下添加內容條目
    /*
    *假設 type1共有2個Property, 分別是:
    * -----------------“title”(String)
    * -----------------“content”(String)
    */
    String ContentNodeName = “內容條目1”;
    ID DirNodeID = DirNode.getId ( ); //取得父節點的ID
    Property [ ] prp = new Property[2];
    Value TitileValue = new Value ( “標題” );
    Value ContentValue = new Value ( “內容” );
    prp [0] = new Property ( “title”, TitleValue );
    prp [1] = new Property ( “content”, ContentValue )
    try{
    nOps.createContentNode (DirNodeID, ContentNodeName, CurObjectClassID, prp );
    }
    carch(Exception e){
    ……
    }
    //刪除內容條目
    Node ContentNode = nOps.getNode ( "/BEA Repository/ " + ContentNodeName)
    if (ContentNode != null ) {
    try {
    ID ContentNodeID = ContentNode.getId ( );
    nOps.deleteNode (ContentNodeID );
    }
    catch (Exception e) {
    ……
    }
    }


    1 2 下一頁>>




    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>