歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> OFBiz 開發入門教程

OFBiz 開發入門教程

日期:2017/2/28 14:45:30   编辑:Linux教程

1.Ofbiz 介紹:

Ofbiz(http://www.ofbiz.org) 是 Open Source 的商務軟件系統,充分利用了各優秀的的Open Source 項目,像 Tomcat, Ant, BeanShell, Jboss 等,構建了一個強大的系統平台,Ofbiz 已經完成了大部分商務類軟件系統都需要的部件,像用戶認證、工作流、商務規則處理等,Ofbiz 的核心技術在於 Entity Engine,其他的組件基本都是基於它的。簡單來說 Entity Engine 的主要功能是將數據庫表創建、對象與數據表的映射、對象的查詢等做了強大封裝,你可以在一個簡單的 XML 文件中定義數據庫表結構,Ofbiz 會自動幫你在數據庫建表,並動態生成映射對象,你在程序中可以只考慮對 Object 的處理,Ofbiz 會自動通過事務邏輯更新到數據庫中。Ofbiz 宣稱的優點之一是用很少的 Code 完成復雜的處理。

OFBiz 的詳細介紹:請點這裡
OFBiz 的下載地址:請點這裡

2.Ofbiz 下載與安裝

首先要安裝 J2SDK1.4,到 http://java.sun.com 上下載,安裝後設定 JAVA_HOME 環境變量為 J2SDK 的安裝目錄。

訪問網站 http://www.ofbiz.org,上面有下載的連接,請選擇 Complete 包,因為這個包中已經包含了運行 Ofbiz 的所有東西,下載下來解開後就可以運行了。

解開 Ofbiz 包到一個目錄下,假設是 “C:\ofbiz”,該目錄下將會有 catalina 和 ofbiz 兩個目錄, catalina 目錄是 Tomcat 的目錄,Ofbiz 對其配置做了修改,ofbiz 目錄是 Ofbiz 的程序代碼目錄。在命令行狀態下進入 “c:\ofbiz\catalina\bin” 目錄,運行“ ofbiz run”命令,就可以啟動 Ofbiz,啟動後你可以用浏覽器訪問 “http://localhost:8080/ecommerce”,這可以訪問 Ofbiz 的電子商務模塊,通過頁面上面的連接你可以訪問到其他模塊。


3.Ofbiz Schema 的創建

Ofbiz 應用入門:

以一個實例說明,假設我們需要建一個客戶資料表,起名為 StudyCustomer,各個段分別如下:
StudyCustomer {
customerId Integer,
customerName String,
customerNote String,
}

我們來實現基本的數據操作---增/刪/改/查詢,具體步驟如下:


1.在 XML 文件中定義數據 Schema:
需要用到三個文件,一個是我們要建的項目的 entitymodel_xxx.xml 和 entityengine.xml,還有
entitygroup.xml,
entitymodel_xxx.xml 是需要我們自己創建的,假設我們起名為 entitymodel_study.xml,放在 “c:\ofbiz\ofbiz\commonapp\entitydef”目錄下,
entityengine.xml 是 Ofbiz 已經有的,放在 “c:\ofbiz\commonapp\etc”目錄下,用來包含我們定義的 entitymodel 文件。
entitygroup.xml 也是 Ofbiz 已經有的,跟 engityengine.xml 在同一目錄下,我們需要把我們的 Schema 定義加入到該文件中

entitymodel_study.xml 文件的定義格式如下:
<!--================================================================================-->

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE entitymodel PUBLIC "-//OFBiz//DTD Entity Model//EN"

"http://www.ofbiz.org/dtds/entitymodel.dtd">

<entitymodel>
<title>Entity of an Open For Business Project Component</title>
<description>None</description>
<copyright>Copyright (c) 2002 The Open For Business Project - www.ofbiz.org</copyright>
<author>None</author>
<version>1.0</version>

<!-- ========================================================= -->
<!-- ======================== Data Model ===================== -->
<!-- The modules in this file are as follows: -->
<!-- - org.ofbiz.commonapp.study -->
<!-- ========================================================= -->


<!-- ========================================================= -->
<!-- org.ofbiz.commonapp.study -->
<!-- ========================================================= -->

<entity entity-name="StudyCustomer"
package-name="org.ofbiz.commonapp.study"
title="Study Customer Entity">
<field name="customerId" type="id-ne"></field>
<field name="customerName" type="long-varchar"></field>
<field name="customerNote" type="long-varchar"></field>
<prim-key field="customerId"/>
</entity>
</entitymodel>

<!--================================================================================-->

這個 XML 文件中的 Tag 基本是看得明白的,只是 field 的 type 是 Ofbiz 已經預定義好的,這是為了保證數據庫間的遷移。

在 entityengine.xml 加入我們剛才定義的文件,加入一行在合適的位置:
<resource loader="mainfile" location="entitymodel_study.xml"/>
具體放的位置我們可以通過查看 entityengine.xml 找到,裡面已經有加好的其他文件。

在 entitygroup.xml 加入我們的 Schema 定義,在後面加入一行
<entity-group group="org.ofbiz.commonapp" entity="StudyCustomer" />

這樣我們就定義好了 Schema,現在把 c:\ofbiz\commonapp\etc\entityengine.xml 拷貝到 c:\ofbiz\catalina\shared\classes 目錄下,這點要切記,我以前就因為沒有拷貝,最後 Schema 怎麼也創建不了。

重新啟動 Ofbiz,訪問 URL: http://localhost:8080/webtools,點擊右上方的 "Login" 鏈接, 用 admin/ofbiz 登錄,登錄進入後選擇鏈接“Check/Update Database”,這時會出現 Check 的 Form, 該表單可以只檢驗 Schema 是否改變,默認的 GroupName 是“org.ofbiz.commonapp”,這個不需要變, 點擊“Check Only”按鈕,Ofbiz 會檢驗變動情況,顯示出一個完整的列表,你可以查一下是否有我們剛建的 "StudyCustomer",如果沒有,可能是我們前面定義的有些問題,檢查一下再重新做。

在檢查到以後,可以再選擇“Check and Add Missing”,這是 Ofbiz 很強大的一個功能,你在 XML 中新增了表,或在某個表中新增了段,它會自動映射到數據庫中,避免我們去直接操作數據庫。

現在已經完成了 StudyCustomer Schema 的創建,如果想檢驗一下是否有表創建,我們可以用編輯器打開 c:\ofbiz\data\ofbiz.script ,在裡面查詢 CREATE TABLE StudyCustomer 的字樣,如果前面沒有問題,我們可以找到的。

4.如何使用已經定義的 Schema

如何使用已經定義的 Schema

Ofbiz 遵循 MVC 的設計模式,在 View 端,即 JSP 端主要使用 Ofbiz 定義的 Tag 來顯示或提取數據,Control 是一個 Controller Servlet,我們在 Controller Servlet 的 URI mapping 配置文件中定義各 URL 應該指向什麼程序,這樣,通過這個 mapping 配置文件,可以保證我們各個頁面 及具體處理程序之間的獨立性,例我們可以通過修改這個配置文件就可以改變某個 Form 的 Post Action 的 URL,而不需要修改實際的 HTML 或 JSP 代碼。

Ofbiz 中定義了 Regions 的概念,即將一個 HTML 頁面分成幾個區域,像 Top, Left, Right, Main 等,通過這些 Regions 我們可以方便的組合 UI 界面,並且可以方便改變各部分所處的位置,如我們可以把菜單很容易的從上方移到下方,只需要改變一個配置文件。Regions 類似於 HTML 中的 Frame,但它是通過一個頁面來組合界面,Frame 是通過幾個頁面顯示在不同的幀中,Frame 的控制比較復雜,而且需要改變相關的程序。

在 Ofbiz 中,我們可以直接在 JSP 中操作 Schema 定義的 Object,即我們剛定義的 StudyCustomer,
示例如下:


<%@ taglib uri="ofbizTags" prefix="ofbiz" %>

<%@ page import="java.util.*" %>
<%@ page import="org.ofbiz.core.util.*, org.ofbiz.core.pseudotag.*" %>
<%@ page import="org.ofbiz.core.entity.*" %>

<jsp:useBean id="delegator" type="org.ofbiz.core.entity.GenericDelegator" scope="request" />
<jsp:useBean id="security" type="org.ofbiz.core.security.Security" scope="request" />

<%if(security.hasEntityPermission("PARTYMGR", "_VIEW", session)) {%>

<%
try {
delegator.create("StudyCustomer",
UtilMisc.toMap("customerId","1","customerName","Cust1","customerNote","Customer Note 1"));

Iterator custs =

UtilMisc.toIterator(delegator.findAll("StudyCustomer",UtilMisc.toList("customerId","customerName","customerNote")));

while(custs.hasNext())
{
GenericValue cust = (GenericValue)custs.next();
out.println(cust.getString("customerId"));
out.println(cust.getString("customerName"));
out.println(cust.getString("customerNote"));
}
} catch(Exception e)
{
out.println(e.getMessage());
}
%>
<%}else{%>
<h3>You do not have permission to view this page. ("PARTYMGR_VIEW" or "PARTYMGR_ADMIN" needed)</h3>
<%}%>


這段程序挺容易理解,先是通過 delegator 創建一個 Object,該 Object 將會由 Ofbiz 自動同步到數據庫中。然後通過 delegator 的 findAll 取到所有已保存的 Object,最後通過一個 Iterator 對象顯示出來。

這個程序起名為 testofbiz.jsp,為簡單起見,我們放到 Ofbiz 已有的一個 Webapp 的目錄下,放到c:\ofbiz\ofbiz\partymgr\webapp\party 目錄下。然後我們需要修改兩個配置文件:controller.xml和 regions.xml,這兩個文件就是我們上面提到的 mapping 和 regions 配置文件。

這兩個文件都在:c:\ofbiz\ofbiz\partymgr\webapp\WEB-INF 下,在 controller.xml 中加入下面

<request-map uri="testofbiz">
<description>Test Ofbiz</description>
<security https="false" auth="false"/>
<response name="success" type="view" value="testofbiz"/>
</request-map>

<view-map name="testofbiz" type="region"/>

加���位置請參照 controller.xml 中已經有的配置。在 regions.xml 中加入:
<define id='testofbiz' region='MAIN_REGION'>
<put section='title'>Test Ofbiz</put>
<put section='content' content='/party/testofbiz.jsp'/>
</define>
具體加入位置請參考已有的配置。

配置完後,重新啟動 ofbiz,然後訪問 URL: http://localhost:8080/partymgr/control/testofbiz

由於我們在 testofbiz.jsp 程序中使用了 Ofbiz 的安全控制機制,系統會提示現在沒有訪問權限,需要登錄,點擊右邊的“Login” 用 admin/ofbiz 登錄後會看到我們程序 testofbiz.jsp 的運行結果。如果需要增加新記錄,請修改 UtilMisc.toMap("customerId","1","customerName","Cust1","customerNote","Customer Note 1"));中的各個段的值,然後再訪問 http://localhost:8080/partymgr/control/testofbiz,如果不修改而直接訪問那個 URL 時,系統會提示 Primary key 沖突。

Copyright © Linux教程網 All Rights Reserved