<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 64,comments - 22,trackbacks - 0

    不可否認,OFBiz這個開源的系統功能是非常強大的,涉及到的東西太多了,其實對我們現在而言,最有用的只有這么幾個:實體引擎、服務引擎、WebTools、用戶權限管理。

    最先要提醒各位的是,在配置一個OFBiz時,路徑中千萬不要包含空格,要不然老提示出錯,無外乎是scoket write error之類的信息,會讓你郁悶得不停^_^

    用戶登錄鑒權這一塊我們完全可以照搬OFBiz現有的東西,其實也就是調用包org.ofbiz.securityext.login.LoginEvents里面的一些方法來進行處理。

    Component定義:component-load.xml,可根據需要調整需在啟動時引入的Component,比如增加一個Study,定義:

    <load-component component-location="${ofbiz.home}/components/study"/>



    首先需要進行如下幾個項目的總體配置:

    1、 entityengine.xml:實體引擎配置,主要是配置該數據的方式,如通過oracle訪問,就配置一下localoracle,特別需要注意的 是,在dataSource中配置中,一定要配置一個屬性 - schema-name="OFBIZ",這個主要是為了在OFBiz啟動時能夠正常同數據庫的對象進行匹配,如果沒有進行配置,每次都會試圖重新建立對 象,會報對象名已經被占用的情況。

    2、 serviceengine.xml:服務引擎配置,這個基本上不用作太大的修改,如要必要,可在這里邊進行一些參數的調優,比如訪問線程數配置等。

    之后需要在components目錄下新建一個目錄study,目錄里面的一些文件可直接從模板中拷貝,之后再進行必要的修改,涉及修改內容:
    1、 entitygroup.xml & entitymodel 實體定義(3.0版本開始,各實體定義可在各自的Component下定義,而不必統一集中在commonapp下);定義實體及實體的相關屬性(其實也 就是相當于數據庫的各種對象,需要注意的是,后續進行數據提取時,如果需要關聯到多張表,也需要在這里面定義一個view-entity);

    2、 services.xml:如果必要的話,可以這里邊定義一些服務;

    3、 data:一些初始配置數據,應該是相對固定,不經常變動的才放在這邊,可通過Webtool工具導入到數據庫中;

    4、 src:如改動了一些Java源文件內容后,需要重新編譯該目錄的文件,可通過UltraEdit的工具配置來進行ant編譯,非常方便,推薦使用,編譯 后的文件將生成到build目錄下,生成的文件有各個class文件,也有一些.jar包(放在lib目錄下),這些jar包是我們在Web應用中需要引 用到的,當然,引用哪些包也是可配置的,下面會講到;

    5、 ofbiz-component.xml:主要的配置文件,需要注意的一些東西:

    (1)<classpath type="jar" location="build/lib/*"/> 這是jar引用路徑,我在考慮是否可改成直接引用class文件,也就是直接設置class文件所在的目錄;

    (2)title="Study" 這個就是我們通過appbar.ftl文件在主界面顯示的那一排按鈕上顯示的內容,可根據需要調整,調整完要重啟OFBiz,麻煩,可以考慮通過hot-deploy目錄進行發布。

    至于其他一些配置,很簡單,看看就曉得。

    下 面講一下Web應用配置,Web應用配置中涉及到的最重要的兩個文件是:controller.xml和regions.xml, controller.xml文件主要是配置request-map,也就是請求映射關系,所有的請求映射都需要在這里邊進行配置,也就是我們在Web頁 面上常看到的/login等,如果涉及到view-map類型是region,就需要從region.xml文件中去讀取配置,其實也就是配置各個 region引用的處理頁面(可以是各種開發語言,比如Jsp、ftl等等)。另外,在region.xml配置文件中最重要的一部分就是 MAIN_REGION的配置,就是整個網頁布局的配置,包括header、appbar、error、content、footer等等,其中 appbar就是我們在前面剛剛提到的主界面上那一排按鈕的配置了,header、footer和error太簡單,不說了,我們主要要修改的東西都是在 content這一塊上進行展現。
    網頁中用到的一些樣式、公用的定義都是在main_template.jsp中寫入的,也需要在MAIN_REGION的屬性中配置引用的文件。樣式定義文件是引用images這個component,所以這個也是關鍵,不能缺的。

    最 后,講一講我對數據庫訪問的一些簡單的了解:對數據庫的訪問主要是通過GenericDelegator進行控制,包括一些常用的方法,如 findAll、remove、store、create等等,具體的用法要去研究一下,其實也不算復雜,先建立一個GenericDelegator, 如果是create、store就可以通過makeValue方法將一些字段的值設置到GenericValue,之后再進行store或是 create,具體語法要去參考一些文檔,還沒去看這一塊的東西。

    最最需要訪問的一些文檔:OFBizChina 實體引擎配置指南、OFBizChina 區塊(Region)指南、OFBizChina 服務引擎配置指南、OFBizChina JSP標簽庫指南,當然,研究OFBiz的前提是要首先要理解MVC模式的概念,也就是View-Model-Control,否則一切都是空談。

    補充幾點:
    1、 對于Ofbiz構造動態查詢語句
    (1) 構造查詢條件
    (2) 給每個條件之間加上邏輯關系,用mainCond = new EntityConditionList(andExprs, EntityOperator.AND);
    (3) 設置要顯示的字段列表
    (4) 設置排序字段列表
    (5) 設置Distinct列表
    EntityFindOptions findOpts = new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, true);
    (6) 獲取實體列表
    EntityListIterator pli = delegator.findListIteratorByCondition(entityName, mainCond, null, fieldsToSelect, orderBy, findOpts);
    (7) 一個動態查詢語句的具體實例
    <%
    String entityName="study";
    List andExprs = new ArrayList();
    String number="";
    String name="";
    String sex="";
    String tel="";
    //GenericDelegator delegator = GenericDelegator.getGenericDelegator("default");
    EntityConditionList mainCond=null;
    if (request.getParameter("number")!=null)
    number=request.getParameter("number").toString();
    if (request.getParameter("name")!=null)
    name=request.getParameter("name").toString();
    if (request.getParameter("sex")!=null)
    sex=request.getParameter("sex").toString();
    if (request.getParameter("tel")!=null)
    tel=request.getParameter("tel").toString();
    //構造查詢條件
    if (number.compareTo("")!=0)
    andExprs.add(new EntityExpr("number",EntityOperator.EQUALS,number));
    if (name.compareTo("")!=0)
    andExprs.add(new EntityExpr("name1",true,EntityOperator.LIKE,"%"+name+"%",true));
    if (sex.compareTo("")!=0)
    andExprs.add(new EntityExpr("sex1",true,EntityOperator.LIKE,"%"+sex+"%",true));
    if (tel.compareTo("")!=0)
    andExprs.add(new EntityExpr("tel",true,EntityOperator.LIKE,"%"+tel+"%",true));
    //每個條件間的邏輯關系
    if (andExprs.size() > 0)
    mainCond = new EntityConditionList(andExprs, EntityOperator.AND);
    //要顯示的字段列表
    List fieldsToSelect = new ArrayList();
    fieldsToSelect.add("number");
    fieldsToSelect.add("name1");
    fieldsToSelect.add("sex1");
    fieldsToSelect.add("tel");
    //排序字段列表
    List orderBy = UtilMisc.toList("number", "name1");
    //Distinct列表
    EntityFindOptions findOpts = new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, true);
    //獲取實體列表
    EntityListIterator pli = delegator.findListIteratorByCondition(entityName, mainCond, null, fieldsToSelect, orderBy, findOpts);
    while(pli.hasNext())
    {
    GenericValue cust = (GenericValue)pli.next();%>
    <tr>
    <td><%=cust.getString("number")%></td>
    <td><%=cust.getString("name1")%></td>
    <td><%=cust.getString("sex1")%></td>
    <td><%=cust.getString("tel")%></td>
    </tr>
    <%}%>

    </table>

    2、 對于所有的圖片文件,都放在images目錄下
    3、 設置圖片的標簽<ofbiz:contenturl>圖片路徑</ofbiz:contenturl>
    4、 鏈接Tag <ofbiz:url>control.xml里面設置的請求</ofbiz.url>
    5、 <region:render section=‘header‘/>引入header定義的文件
    header這個標識在regions.xml里面定義
    <define id=‘MAIN_REG‘ template=‘/templates/main_template1.jsp‘>
    <put section=‘title‘>Application Page</put> <!-- this is a default and is meant to overridden -->
    <put section=‘header‘ content=‘/includes/bottom.jsp‘/>
    <put section=‘leftbar‘ content=‘/includes/left.jsp‘/>
    <put section=‘middle‘ content=‘/includes/middle.jsp‘/>
    <put section=‘content‘ content=‘/includes/middle.jsp‘/> <!-- this is a default and is meant to overridden -->
    <put section=‘top‘ content=‘/includes/top.jsp‘/>
    <put section=‘error‘ type="jpublish" content=‘/includes/errormsg.ftl‘/>
    <!--<put section=‘footer‘ type="jpublish" content=‘/includes/footer.ftl‘/>-->
    </define>
    然后其它頁面只要如下定義即可
    <define id=‘BasePubEmp‘ region=‘MAIN_REG‘>
    <put section=‘title‘>View BasePubEmp</put>
    <put section=‘content‘ content=‘/BasePubEmp.jsp‘/>
    </define>
    注意,這邊的content所指定的區塊就是我們上面定義的content
    6、 這些標簽都挺簡單的,Ofbiz里面都有例子,參照一下就可以了

    后續將對Ofbiz中的shark工作流進行描述。
    http://www.cnpoint.com/mvnforum/mvnforum/viewthread?thread=67

    posted on 2012-03-21 11:47 hellxoul 閱讀(2425) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲色婷婷六月亚洲婷婷6月 | 国产国拍亚洲精品mv在线观看| 中国一级全黄的免费观看| 亚洲自偷自偷精品| 日本特黄a级高清免费大片| 国产成人精品免费大全| 亚洲美女视频网址| www国产亚洲精品久久久日本| 可以免费观看的国产视频| 亚洲色无码国产精品网站可下载| 亚洲毛片不卡av在线播放一区| 久久久久免费精品国产小说| 亚洲国产一区二区三区在线观看| 国产亚洲精品免费视频播放| 免费可以看黄的视频s色| 国产区在线免费观看| 亚洲欧美成人综合久久久 | 色噜噜的亚洲男人的天堂| 久久久久无码精品亚洲日韩 | 1000部拍拍拍18勿入免费视频下载| 亚洲AV日韩AV无码污污网站| 蜜芽亚洲av无码精品色午夜| 伊人久久亚洲综合影院| **aaaaa毛片免费同男同女| 男女猛烈无遮掩视频免费软件| 亚洲乱码日产精品BD在线观看| 国产亚洲精品自在线观看| 在线观看人成网站深夜免费| 日本免费污片中国特一级| 国产亚洲精品91| 中文字幕无码精品亚洲资源网久久| 亚洲国产精品嫩草影院在线观看| 免费a级毛片无码av| 毛片在线免费视频| 91短视频免费在线观看| a毛看片免费观看视频| 日产久久强奸免费的看| 亚洲av无码日韩av无码网站冲| 亚洲乱码中文字幕小综合| 亚洲第一区香蕉_国产a| 久久久亚洲精品蜜桃臀|