




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学习研究OFBIZ根据大多数开源组织认同的定义,开放源码(Open Source)软件是指源代码对公众开放的软件。这样的软件不特定于某个平台或系统,可以被免费使用、修改和分发。此外,近年来一些计算机业巨头(如惠普、IBM、SUM、Oracle等)都不同程度启动了开发和使用开放源代码软件的项目,还有一些专门从事对Linux进行商业化的公司,如Red Hat 和VA Linux已完成了IPO,其他不少相关公司也获得了风险资本的支持。今天,当企业或组织致力于降低获取软件许可的成本时,尤其在Java应用开发的相关领域,开放源代码的第三方软件已经成为一种不错的选择。据不完全统计,大约有60%的站点使用开
2、放源代码的Apache Web Server,有14%的站点使用开放源码的Java服务器。人们对开放源码呼声的日益高涨,许多软件开发商也开始顺应这个潮流,商业软件同开放源码的自由软件之间的界限也逐渐模糊起来。从目前的趋势来看,随着互联网的发展和开放源码软件的使用许可制度的完善,越来越多的商业软件包开始集成源代码开放的第三方软件,这势必对提供纯商务服务并制定行业标准的传统软件企业形成强大的挑战。随着信息网络技术的飞速发展,电子商务成为越来越多的人关注的焦点。电子商务发展至今,专业的电子商务类软件也正在日趋成熟。在商业领域,根据现在电子商务软件性能和价格的不同,可将它们分成初、中、高三级。初级软件
3、有Lotus Domino Merchant、iCat Electronic Commerce Suite、Viaweb等。中级软件有IBM Net Commerce、Oracle Internet Commerce Server、Microsoft SiteServer Commerce Edition、INTERSHOP等。高级软件有Netscape、Commerce Xpert、Open Market Live Commerce & Transact、CommerceOne C1 Buysite & C1 Supplysite等。传统的软件开发基本基于封闭专有的开发,虽然
4、有利于知识产权的保护,但同时存在着如成本高,错误丛生和安全隐患问题等不可避免的缺点。而开源软件采用了一种合作式开发方法,有利于提供可靠、安全和低成本的解决方案。这样就有利提高资源的利用率,避免了无谓的重复开发。电子商务软件也不例外,相比商业软件,Open Source软件则总是强调稳定,在加入新功能的同时尽量不破坏旧功能,所以其复用程度比商业软件要高得多,成本也要低得多。开源大潮势不可挡,产生了一些著名的开源项目,并吸引众多热情的志愿者们参与,表1列出了部分热门的开源项目。 表 1 部分热门开源项目项目名所属领域简要说明Spring FrameworkJ2EE框架Spri
5、ng Framework占据Java EE框架首位已有年头。WebWorkWEB框架致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。Hibernate持久层框架一个开放源代码的对象关系映射框架。DWRAJAX开发一个WEB远程调用框架,利用这个框架可以让AJAX开发变得很简单。JasperReports报表制作一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JBpm工作流引擎一个灵活可扩展的工作流管理系统。Lucene搜索引擎一个开放源程序的搜寻器引擎,利用它可以轻易地为Java软件加入全文搜寻功能。OSCache缓存方案一种开创性的JS
6、P定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。InfoGlue内容管理系统一个高级的、可扩展的、健壮的内容管理系统,完全用Java开发。Liferay门户系统完整的J2EE应用使用了Web、EJB以及JMS等技术。Open For Business电子商务提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。 不同的开源电子商务软件各有其特点,在满足电子商务基本功能的同时,良好的扩展性和可定制性是吸引二次开发者们的重要内容。随着越来越多商业公司开始选择或参考开源软件作为二次开
7、发的基础框架,例如在Apache OFBiz等这些开源框架软件为大家不断认识之后,有很多基于Apache OFBiz的应用软件不断诞生。根据Apache OFBiz官方网站提供的资料显示,目前该项目在国外已得到十分广泛的应用,并正在不断完善中。从国内应用情况来看,虽然关注OFBiz的爱好者不少,但只有少数公司在OFBiz的框架基础上进行二次开发,可以说OFBiz在国内才开始起步,应用前景十分广阔。作为得到Apache 2.0 license认证、Apache社区支持的开源项目,Apache OFBiz已经成为Apache基金会的一个TLP (top level project)。官方网站关于O
8、FBiz的项目描述是这样的:“Apache OFBiz is now officially a TLP (top level project) at the Apache Software Foundation!”。因研究者和项目需求而异,对开源项目的研究没有固定的模式和方法,针对OFBiz的二次开发,笔者总结为三个方面。第一,参考学习OFBiz官方英文文档,对涉及的相关技术进行整合应用;第二,利用官方示例系统理解开发框架的实际应用,进而从需求分析出发改选某些模块;第三,要尽量收集国内的实践资料,充分利用网上开源社区资源。2.1 Apache OFBiz概述2.1.1 Apache Licen
9、se许可证 OFBiz目前得到Apache License(Version 2.0)开源软件最灵活的许可证之一。该许可证授予您自由使用任何期望的技术、构建派生的作品进行发行、然后将代码贡献回社区。详细证书内容可以查看/licenses/LICENSE-2.0。与其他许可证相比,Apache License的自由在于它强调使用源代码的人不需要公开自己的源代码(修改后的源代码),在这种情况下,不管是编程爱好者还是商业公司,从免费获取OFBiz的源代码开始,就可以自由地定制自己所想要的OFBiz,而这并不需要向任何一家公司支付所谓的专利费用。2.1.2
10、0; Apache OFBiz功能模块Apache OFBiz提供大量功能模块,包括有:(1) 高级电子商务;(2) 目录管理;(3) 促销及定价管理;(4) 定单管理(销售与供应);(5) 客户管理;(6) 仓库管理;(7) 工作流程;(8) 账户管理;(9) 生产管理;(10) 绩效管理;(11) 内容管理。 虽然当中的某些模块还不太完善,但总体上来看,Apache OFBiz的目标是提供一个能应用于企业信息化的一个成熟的软件框架。2.1.3 完善的实体引擎 OFBiz的核心技术在于实体引
11、擎Entity Engine。OFBiz实体引擎提供了一组工具和设计模式来对现实世界中特定的实体(数据对象)进行建模和管理。简言之,实体引擎的主要功能是将数据库表创建、对象与数据表的映射、对象的查询等强大的封装,这样就可以在一个简单的XML文件中定义数据库表结构,OFBiz会自动在数据库中建表,并动态生成映射对象,开发者在程序中可以只考虑对对象的处理,OFBiz会自动通过事务逻辑更新到数据库中。实体引擎的目标是简化企业级应用中对实体数据(对应关系型数据库表)的大量操作,包括定义、维护、通用操作(增、删、改、查实体和实体之间的关系)的开发工作。2.1.4 扩展性和可移植性 OFBiz
12、提供一个基于纯Java应用程序的系统框架,在具体实现中大量采用了各种设计系统模式,完全符合面向对象的设计原则中绝大部分要求,除采用J2EE核心设计模式、数据库设计模式外,在实现代码中大量引入Java设计,成为系统扩展性和可移植性的基础。OFBiz目前兼容Weblogic,Tomcat,Jboss,Resin,Orion等厂商的应用服务器,兼容Oracle,MySQL,Sybase,PostgreSQL,Hsql等数据库产品,可以在Unix和Windows两大操作系统上进行开发和测试,具备Java应用系统的所有跨平台特点。2.1.5 开源社区支持开源软件的参与者一般是高热情的志愿者,
13、他们出于兴趣而不是具体的报酬参与其中,自由地贡献各方面的技术和想法,帮助发现潜在的错误,复用已有的代码,避免不必要的重复开发。Apache OFBiz显然也继承了开源软件这一共性。Apache 组织专门为OFBiz建立的网上社区为爱好者们提供了良好的信息交流平台。来自众多专家和支持者的观点及更新为OFBiz的发展增添了无尽的生命力。2.2 相关技术及标准OFBiz的框架中引入了当前最先进的主流开发Web应用系统构建技术,正是有这些技术的支撑,整个系统在原来的基础上不断被重构和修订,也吸引了众多对最新技术敏感的编程爱好者。与OFBiz相关的开源项目有: FreeMarker 、Bea
14、nShell 、Tomcat、 Jetty 、JOTM 、XAPool 、Javolution 、JPublish、 DataVision、 JasperReports、 WEKA、 Xerces、 Xalan 、Axis、 FOP、 Batik、Ant、 BSF 、Commons 、Log4J、 Lucene 、ORO 、POI、 OpenJMS 、PostgreSQL 、MySQL、MaxDB by MySQL、 Hypersonic SQL Derby等 。与OFBiz相关的技术标准有:XML 、SOAP、 HTML 、Java、J2EE、 RuleML、XPDL、BPML、UNSPSC
15、 、ebXML 、FASB 、Workflow、GL & Party 、Product 、qbXML、 OAGIS 、UBL等 。2.3 二次开发方法论Apache创始人Brian Behlendorf先生曾总结开源项目开发方法论最重要的特点是:“它的组织者不是管理开发者,而是带领他们充分发挥开发者的主观能动性”。开源软件的二次开发方法也因为这个特点与众不同。首先,以最自由的方式修改现有模块,甚至突破原有框架扩展功能;第二,免费得到最新技术支持,这要得益于开源社区的贡献;第三,没有固定不变的开发模式,完全由用户需求决定,大大节省成本。3.3 OFBiz的安装和配
16、置3.3.1 JDK的安装与配置(1) 下载JDK,推荐使用JDK1.4或以上版本,下载地址:(2) 运行J2SDK安装文件j2sdk-1.41_02.exe,在安装过程注意设置安装的目标目录,后面设置需要(假定J2SDK安装在c: J2SDK);(3) 配置环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:JAVA_HOME=c: J2SDKCLASSPATH=.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar; PATH=%JAVA_HOME%bin;3
17、.3.2 MySQL的安装与配置(1) 下载MySQL安装程序,推荐MySQL4.1或以上版本,下载地址如下:(2) 运行安装程序,安装过程中需要设置超级用户root的密码;(3) 安装完成后,打开MySQL Command Line Client,创建用于OFBiz的数据库,命令如下:mysql>create database ofbiz_mysql;(4) 赋予数据库完全访问权限,命令如下:grant all on *.* to rootlocalhost identified by 123456 with grant option
18、;3.3.3 OFBiz源码的获取(1) 下载安装版本控制软件SVN,下载地址如下:(2) 利用SVN提取OFBiz最新源代码,命令如下:svn co /repos/asf/ofbiz/trunk ofbiz;(3) 提取完成后,以所在文件夹作为OFBiz的根目录,根目录名称为ofbiz。3.3.4 OFBiz与MySQL的整合配置由于OFBiz默认设置的数据库为Derby。Derby是由IBM公司捐献的轻量级数据库,其性能不能满足电子商务应用的需求,不推荐使用。本文中以MySQL数据库为例,介绍OF
19、Biz如何与其兼容的数据库产品的结合应用,步骤如下:(1) 将MYSQL JDBC驱动复制到OFBiz根目录下的指定位置:ofbizframeworkentitylibjdbc;(2) 在MYSQL中创建一个数据库,并赋予完全访问权限,如ofbiz_mysql数据库;(3) 修改ofbizframeworkentityconfig下的entityengine.xml文件,修改后的内容如下:3.3.5 OFBiz编译与运行编译和运行OFBiz的步骤如下:(1) 进入OFBiz根目录,运行“ant.bat”(Windows),或者“./ant”(L
20、inux/Unix/OSX),编译所有OFBiz模块及各种类文件;(2) 装载种子及示例数据,运行“ant.bat run-install”(Windows),或者“./ant run-install” (Linux/Unix/OSX);(3) 运行“ant.bat run” (Windows),或者“./ant run” (Linux/Unix/OSX),启动服务器;(4) 打开网页浏览器,输入:8080/ecommerce/control/main,可以打开电子商务功能模块;输入:8443/webt
21、ools/control/main,可以打开网页工具模块页面; 6.3 OFBiz数据库实体引擎配置6.3.1 创建数据库表Apache OFBiz的实体引擎支持从简单的XML文件中定义数据库表结构,然后自动在数据库中建表,并生成映射对象,这样的好处是大大简化了数据库的构建流程。下面以本系统中的一个实例说明如何实现。一般需要用到两个文件:entitymodel.xml和entitygroup.xml。例如用户登录表的创建,需要对ofbizframeworksecurityentitydef下的entitymodel.xml作以下定义:<entitymo
22、del xmlns:xsi="/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/dtds/entitymodel.xsd"> <entity entity-name="UserLogin"
23、package-name="org.ofbiz.security.login" title="User Login Entity"> <field name="userLoginId" type="id-vlong-ne"></field>
24、; <field name="currentPassword" type="short-varchar"></field> <field name="passwordHint" type="description"></field> <prim-key field="userLoginId"/>
25、 </entity></entitymodel>这个XML文件中的entity-name表示实体名,可由OFBiz转化为数据库表名,field标签下的name属性对应列名,type对应数据类型。需要说明的是,这里的type类型是由OFBiz自行定义。prim-key域对应关键字段的设置。此外,还有关系定义域,格式如:<relation type="one" fk-name="" rel-entity-name=""><key-map field-name=""/
26、></relation>。对ofbizframeworksecurityentitydef下的entitygroup.xml作以下定义:<entitygroup xmlns:xsi="/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/dtds/entitygroup.xsd"> <entity-group group="
27、;org.ofbiz" entity="UserLogin" /></entitygroup>entitygroup.Xml的作用是映射到相应的实体,一般定义较为简单。6.3.2 数据表字段类型定义Apache OFBiz提供对多种数据库类型的支持,对不同的数据库的字段类型定义的机制给数据库维护带来更大的灵活性,以往直接在数据库软件中的工作只需一个fieldtype*.Xml文件(ofbizframeworkentityfieldtype)就可完成。如采用MySQL数据库,则对相应的fieldtypemysql.xml文件进行修改。(
28、1) ofbizView层技术 Apache OFBiz中的Widget和Decorator是ofbizView层的技术,是Apache OFBiz的一大特色。使用widget可以将很多零散的页面部分拼合成一张页面。这样每张页面的公共部分只需创建一次,创建新页面时只要创建不同的部分即可。Widget是用xml文件表示的,存放的位置是appwidgetXxxxScreen.xml,零散的页面碎片通常存放在appwebappapp下和appwebappappincludes下,appwebappapp存放的是不同的页面部分,appwebappappincludes下存放的是相同的页面部分。Widg
29、et示例代码如下:<screen name="hello"> <section> <widgets> <platform-specific><html><html-template location="component:/hello/webapp/hello/includes/header.ftl"/></html></platform-specific> <platform-specific><html><html-templ
30、ate location="component:/hello/webapp/hello/hello.ftl"/></html></platform-specific> <platform-specific><html><html-template location="component:/hello/webapp/hello/includes/footer.ftl"/></html></platform-specific> </widgets> <
31、/section></screen> 代码中可以看到news页面由header.ftl,main.ftl,footer.ftl这三部分组成。这三部分的路径都在代码中明确给出,这样的话当用户请求页面hello时,ofbiz就会根据代码中给出的路径找到页面的不同部分,将它们组合起来再返回一张完整的页面的用户。当View比较复杂,页面太多时,这样在XML里定义每一张页面时,XML的代码量也是非常大的,而且不利于维护。Decorator是一个页面模板,该模板也是一个screen元素,模板名通常叫CommonDecorator,和widget定义在相同的XML文件中。当模板定
32、义后每一个页面的定义就不用像上面这样将所有的部分都列出来了,可以只用列出和其它页面不同的部分。示例代码:<screen name="CommonDecorator"> <section> <widgets> <platform-specific><html><html-template location="component:/hello2/webapp/hello2/includes/header.ftl"/></html></platform-specific&
33、gt; <decorator-section-include name="body"/> <platform-specific><html><html-template location="component:/hello2/webapp/hello2/includes/footer.ftl"/></html></platform-specific> </widgets> </section></screen> <screen name=&q
34、uot;news"> <section> <widgets> <decorator-screen name="CommonDecorator"> <decorator-section name="body"> <platform-specific><html><html-template location="component:/hello2/webapp/hello2/news.ftl"/></html></platform-specific> </decorator-section> </decorator-screen> </widgets> </section></screen>模板页面和普通页面是一样的XML元素,但在其中有一句话不同:<decorator-section-include name="body"/>,该句话所在的位置就是使用了该模板的页面需要添加自己内容的位置,在示例代码中,模板定义了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025山东大学(青岛校区)微生物技术研究院李盛英教授团队招聘模拟试卷含答案详解(预热题)
- 2025年上半年广西工商职业技术学院招聘聘用人员(5人)笔试备考试题及一套参考答案详解
- 2024-2025学年度广西国际商务职业技术学院单招《英语》全真模拟模拟题及1套参考答案详解
- 2025年鲁能集团有限公司新疆新能源分公司校园招聘笔试模拟试题及答案详解(历年真题)
- 执业药师之《药事管理与法规》能力检测及完整答案详解(历年真题)
- 2025安徽省基层法律服务工作者考试复习题及答案一
- 2025年黑龙江省基层法律服务工作者执业核准考试考前模拟试题及答案一
- 防洪堤坝施工方案
- 深基础施工中围护结构设计方案
- 负债逾期咨询法务方案
- 2025年医疗工作人员定向招聘考试笔试试题(含答案)
- 第二单元混合运算单元测试卷(含答案) 2025-2026学年人教版三年级数学上册
- 2025年中央一号文件客观题及参考答案
- 出境人员行前安全培训课件
- 2025年河北沧州市中心医院、沧州博施康养集团公开招聘辅助岗工作人员113名考试参考试题及答案解析
- 俄乌局势进展
- 2025甘肃兰州兴蓉环境发展有限责任公司招聘内控管理岗等岗位5人笔试模拟试题及答案解析
- 苏教版三年级上册数学全册教学设计(配2025年秋新版教材)
- 用电安全与消防知识培训课件
- 2025年法考真题及答案
- 基孔肯雅热防护知识科普课件
评论
0/150
提交评论