What, Why and How OFBiz?
----Jackyliu@digitalrev.com
2010-6-30
OFBiz(Open for business), 开源的电子商务系统,基于JAVA开发,功能强大,可扩展性强。
官网:http://ofbiz.apache.org/
1. 为什么使用OFBiz呢?
首先 OFBiz 是开源的,集成了很多优秀的开源技术: Ant , Freemarker , Jboss 等等。
其次 功能强大,拥有已经开发好的,并且稳定的工作流引擎,用户权限系统,前台电子商务系统,后台订单处理,库存管理系统,客户管理等等。
最后 OFBiz提供了一套基于JAVA的功能扩展方案,可以在目前最基本的功能上添加新的功能。并且基于Component组件开发,对于不需要的功能可以将相应Component去除掉。
2. 为什么不用OFBiz呢?
虽然说OFBiz提供了一整套功能扩展方案,但是其过程十分繁琐。
实现一个最简单的功能(比如读取一张用户表的信息),需要进行配置的文件就有十几个。
对于数据库的操作进行了非常强大的封装,拥有OFBiz引以为傲的Entity Engine(有点像Hibernate,不过比Hibernate还要猛,一句SQL语句都不用)。只需要在相应Component的entityengine.xml对要操作的实体(对应表)进行定义,并且定义在特定服务中的增删改查方法即可。这样说 好像很好用的样子,但是实际上,需要付出非常多的时间和精力去学习这套东西,并且学习曲线会很大。
OFBiz本身自带的功能如果不符合我们自己的需求,基本上很难进行修改,而是应该重新开发对应的功能。比如它的Order Processing跟目前我们公司的订单管理存在很大的差距。所以我们必须重构。而这都需要付出很大的代价。我们考虑使用OFBiz的原因主要是想要在其强大功能的基础进行快速的扩展,但是如果很多功能都需要重构的话,那么就得不偿失了。
3. 如何安装OFBiz呢?
首先从OFBiz上下载最新的源码:
http://svn.apache.org/repos/asf/ofbiz/trunk
也可以用SVN去Checkout下来,如果要用SVN去Checkout,可以先阅读以下官方文档:
https://cwiki.apache.org/confluence/display/OFBADMIN/OFBiz+Source+Repository+and+Access
然后可以运行Ant命令来安装OFBiz了,当然需要先装好Ant 1.7,并且配置好环境变量。
运行以下命令:
Ant bat
Ant bat run – install
Ant bat run
接着就可以访问到OFBiz的Demo了:
http://127.0.0.1:8080/ecommerce/control/main https://127.0.0.1:8443/webtools/control/main
https://127.0.0.1:8443/catalog/control/main
4. 如何在OFBiz上扩展一个功能呢?
我们以读取显示一个简单的User List来做说明。
第一步,建立一张User表,将Oracle的JDBC数据驱动Jar包放到这个目录:
ofbiz\framework\entity\lib\jdbc
第二步,修改ofbiz\framework\entity\config\entityengine.xml文件,修改相应的数据源配置。
第三步,运行Ant命令,重新生成初始化数据,会在我们指定的数据库中生成相应的表。
第四步,在hot-deploy目录下创建一个新的component目录/rdtest,此目录名需要与我们即将定义的component名一致。在/rdtest目录下定义ofbiz-component.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="practice"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">
<resource-loader name="main" type="component"/>
<webapp name="practice"
title="Practice"
server="default-server"
base-permission="OFBTOOLS"
location="webapp/rdtest"
mount-point="/rdtest"
app-bar-display="false"/>
</ofbiz-component>
第五步, 修改如下目录hot-deploy/rdtest/webapp/practice/WEB-INF,从ofbiz项目其他component中copy一个web.xml过来,修改以下相应代码:
<context-param>
<param-name>webSiteId</param-name>
<param-value>RDTEST</param-value>
<description>A unique ID used to look up the WebSite entity to get information about catalogs, etc.</description>
</context-param>
<context-param>
<param-name>localDispatcherName</param-name>
<param-value>rdtest</param-value>
<description>A unique name used to identify/recognize the local dispatcher for the Service Engine</description>
</context-param>
<context-param>
<param-name>mainDecoratorLocation</param-name>
<param-value>component://rdtest/widget/CommonScreens.xml</param-value>
<description>The location of the main-decorator screen to use for this webapp; referred to as a context variable in screen def XML files.</description>
</context-param>
第六步,定义hot-deploy/rdtest/widget/CommonScreens.xml文件作为主要页面装饰器
Create a file named "controller.xml" (used by ofbiz webapp controller) This file will be small and simple at first but will grow as we add functionality later on. For now insert the following code:
<?xml version="1.0" encoding="UTF-8"?>
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/site-conf.xsd">
<include location="component://common/webcommon/WEB-INF/common-controller.xml"/>
<description>Practice Component Site Configuration File</description>
<owner>Copyright 2001-2009 The Apache Software Foundation</owner>
<handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/>
<!-- Request Mappings -->
<request-map uri="main">
<security https="false" auth="false"/>
<response name="success" type="view" value="main"/>
</request-map>
<!-- end of request mappings -->
<!-- View Mappings -->
<view-map name="main" type="screen" page="component://practice/widget/PracticeScreens.xml#main"/>
<!-- end of view mappings -->
</site-conf>
第七步,利用entity engine创建一个USER实例
5. 如何使用OFBiz呢?
使用OFBiz,首先需要进行相当复杂的后台初始化设置。包括PayPal GateWay, UPS Settings,Shipping Settings, Warehouse Settings还有前台电子商务平台的Settings等,总之一大堆设置。这里就不一一描述了。
贴一下官网上这方面的介绍:
https://cwiki.apache.org/confluence/display/OFBENDUSER/Apache+OFBiz+Business+Setup+Guide
----Jackyliu@digitalrev.com
2010-6-30
OFBiz(Open for business), 开源的电子商务系统,基于JAVA开发,功能强大,可扩展性强。
官网:http://ofbiz.apache.org/
1. 为什么使用OFBiz呢?
首先 OFBiz 是开源的,集成了很多优秀的开源技术: Ant , Freemarker , Jboss 等等。
其次 功能强大,拥有已经开发好的,并且稳定的工作流引擎,用户权限系统,前台电子商务系统,后台订单处理,库存管理系统,客户管理等等。
最后 OFBiz提供了一套基于JAVA的功能扩展方案,可以在目前最基本的功能上添加新的功能。并且基于Component组件开发,对于不需要的功能可以将相应Component去除掉。
2. 为什么不用OFBiz呢?
虽然说OFBiz提供了一整套功能扩展方案,但是其过程十分繁琐。
实现一个最简单的功能(比如读取一张用户表的信息),需要进行配置的文件就有十几个。
对于数据库的操作进行了非常强大的封装,拥有OFBiz引以为傲的Entity Engine(有点像Hibernate,不过比Hibernate还要猛,一句SQL语句都不用)。只需要在相应Component的entityengine.xml对要操作的实体(对应表)进行定义,并且定义在特定服务中的增删改查方法即可。这样说 好像很好用的样子,但是实际上,需要付出非常多的时间和精力去学习这套东西,并且学习曲线会很大。
OFBiz本身自带的功能如果不符合我们自己的需求,基本上很难进行修改,而是应该重新开发对应的功能。比如它的Order Processing跟目前我们公司的订单管理存在很大的差距。所以我们必须重构。而这都需要付出很大的代价。我们考虑使用OFBiz的原因主要是想要在其强大功能的基础进行快速的扩展,但是如果很多功能都需要重构的话,那么就得不偿失了。
3. 如何安装OFBiz呢?
首先从OFBiz上下载最新的源码:
http://svn.apache.org/repos/asf/ofbiz/trunk
也可以用SVN去Checkout下来,如果要用SVN去Checkout,可以先阅读以下官方文档:
https://cwiki.apache.org/confluence/display/OFBADMIN/OFBiz+Source+Repository+and+Access
然后可以运行Ant命令来安装OFBiz了,当然需要先装好Ant 1.7,并且配置好环境变量。
运行以下命令:
Ant bat
Ant bat run – install
Ant bat run
接着就可以访问到OFBiz的Demo了:
http://127.0.0.1:8080/ecommerce/control/main https://127.0.0.1:8443/webtools/control/main
https://127.0.0.1:8443/catalog/control/main
4. 如何在OFBiz上扩展一个功能呢?
我们以读取显示一个简单的User List来做说明。
第一步,建立一张User表,将Oracle的JDBC数据驱动Jar包放到这个目录:
ofbiz\framework\entity\lib\jdbc
第二步,修改ofbiz\framework\entity\config\entityengine.xml文件,修改相应的数据源配置。
第三步,运行Ant命令,重新生成初始化数据,会在我们指定的数据库中生成相应的表。
第四步,在hot-deploy目录下创建一个新的component目录/rdtest,此目录名需要与我们即将定义的component名一致。在/rdtest目录下定义ofbiz-component.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="practice"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">
<resource-loader name="main" type="component"/>
<webapp name="practice"
title="Practice"
server="default-server"
base-permission="OFBTOOLS"
location="webapp/rdtest"
mount-point="/rdtest"
app-bar-display="false"/>
</ofbiz-component>
第五步, 修改如下目录hot-deploy/rdtest/webapp/practice/WEB-INF,从ofbiz项目其他component中copy一个web.xml过来,修改以下相应代码:
<context-param>
<param-name>webSiteId</param-name>
<param-value>RDTEST</param-value>
<description>A unique ID used to look up the WebSite entity to get information about catalogs, etc.</description>
</context-param>
<context-param>
<param-name>localDispatcherName</param-name>
<param-value>rdtest</param-value>
<description>A unique name used to identify/recognize the local dispatcher for the Service Engine</description>
</context-param>
<context-param>
<param-name>mainDecoratorLocation</param-name>
<param-value>component://rdtest/widget/CommonScreens.xml</param-value>
<description>The location of the main-decorator screen to use for this webapp; referred to as a context variable in screen def XML files.</description>
</context-param>
第六步,定义hot-deploy/rdtest/widget/CommonScreens.xml文件作为主要页面装饰器
Create a file named "controller.xml" (used by ofbiz webapp controller) This file will be small and simple at first but will grow as we add functionality later on. For now insert the following code:
<?xml version="1.0" encoding="UTF-8"?>
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/site-conf.xsd">
<include location="component://common/webcommon/WEB-INF/common-controller.xml"/>
<description>Practice Component Site Configuration File</description>
<owner>Copyright 2001-2009 The Apache Software Foundation</owner>
<handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/>
<!-- Request Mappings -->
<request-map uri="main">
<security https="false" auth="false"/>
<response name="success" type="view" value="main"/>
</request-map>
<!-- end of request mappings -->
<!-- View Mappings -->
<view-map name="main" type="screen" page="component://practice/widget/PracticeScreens.xml#main"/>
<!-- end of view mappings -->
</site-conf>
第七步,利用entity engine创建一个USER实例
5. 如何使用OFBiz呢?
使用OFBiz,首先需要进行相当复杂的后台初始化设置。包括PayPal GateWay, UPS Settings,Shipping Settings, Warehouse Settings还有前台电子商务平台的Settings等,总之一大堆设置。这里就不一一描述了。
贴一下官网上这方面的介绍:
https://cwiki.apache.org/confluence/display/OFBENDUSER/Apache+OFBiz+Business+Setup+Guide