`
lude707
  • 浏览: 82162 次
  • 性别: Icon_minigender_1
  • 来自: 广西柳州
社区版块
存档分类
最新评论

Ofbiz学习经验谈

阅读更多

不可否认,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>

分享到:
评论

相关推荐

    ofbiz学习文档

    ofbiz很好的学习资料,学习了很多,希望对你也能有帮助!

    谈ofbiz学习-中文

    【Ofbiz学习详解】 Ofbiz,全称Open For Business Project,是一个开源的企业级应用框架,由David E. Jones设计,其目标是提供一个全面的、可扩展的企业应用程序解决方案。Ofbiz以其面向业务的特性,与许多传统的...

    ofbiz学习笔记(自学整理)

    在学习Ofbiz的过程中,你可能会遇到的问题可能包括:理解和配置Ofbiz的复杂组件结构,编写和调试服务,以及处理与数据库交互时的实体问题。解决这些问题通常需要查阅Ofbiz的官方文档、社区论坛或在线教程。 最后,...

    ofbiz学习资料

    **Ofbiz学习资料详解** Apache Ofbiz(Open for Business Project)是一个开源的企业级应用框架,专为构建电子商务和企业信息系统而设计。它提供了一个全面的业务应用平台,涵盖了供应链管理、客户关系管理、财务...

    浅谈OFBIZ.doc

    ### OFBIZ 4.0 入门指南 #### 一、OFBIZ 4.0 开发环境的搭建 **OFBIZ** 是一款基于 Java 的开源企业级电子商务框架,它提供了完整的业务流程管理解决方案,包括订单处理、库存管理、客户服务支持等功能。为了能够...

    ofbiz 学习文档.doc

    Apache Ofbiz,全称Open For Business Project,是一个开源的企业级应用框架,主要用于构建复杂的电子商务、供应链管理和企业资源规划系统。本文档将详细讲解Ofbiz中的关键文件及其作用,以及主要目录的功能。 首先...

    OFBIZ快速入门OFBIZ快速入门

    【OFBIZ快速入门】 OFBiz,全称Open For Business Project,是一个开源的企业级应用框架,专注于电子商务和业务流程管理。...快速入门只是第一步,持续的学习和实践将帮助你更好地掌握OFBiz的精髓。

    ofbiz API,学习ofbiz的朋友一定不能少

    ofbiz API,学习ofbiz的朋友一定不能少

    Ofbiz 数据库全模型

    总之,"Ofbiz数据库全模型"是一个宝贵的资源,对于学习、开发和维护Ofbiz应用的人来说,它提供了对系统数据结构的全面了解,有助于提升工作效率并确保项目的稳定性和扩展性。无论是初学者还是经验丰富的Ofbiz开发者...

    关于OFBIZ的资料

    2. **功能模块**:OfBiz的各个模块如电子商务商店、库存管理、订单处理等可能会有示例数据和操作流程,用户可以通过这些例子学习如何使用OfBiz进行日常业务操作。 3. **用户界面**:演示环境中,用户可以看到OfBiz...

    ofbiz api开发文档

    《OFBiz API 开发文档详解》 在信息技术领域,OFBiz(Open For ...总结,OFBiz API开发文档是开发者掌握OFBiz框架的必备资料,通过深入学习和实践,开发者可以充分利用OFBiz的强大功能,实现高效的企业级应用开发。

    OFBIZ开发指南 英文2

    总之,《OFBIZ开发指南》是深入学习和实践OFBIZ开发的宝贵资源,无论你是初学者还是有经验的开发者,都能从中获益匪浅,提升自己的技能水平。通过阅读本书并结合实际项目,你可以熟练掌握OFBIZ的各个层面,从而在...

    Apache OFBiz Cookbook

    - **高级管理员**:高级用户可以通过本书深入学习 OFBiz 的内部机制及优化策略,从而更好地管理和维护系统。 #### 三、关键知识点详解 1. **安装与配置**: - **环境搭建**:介绍如何设置开发环境,包括必要的...

    ofbiz10.04表结构

    标题中的"ofbiz10.04表结构"指的是OFBiz 10.04版本的数据模型设计,这是企业级开源应用框架OFBiz的一个重要组成部分。OFBiz全称为Open For Business Project,它是一个用于构建企业应用程序的全面业务解决方案,涵盖...

    ofbiz开发者入门教程

    在本教程中,我们将深入探讨如何入门Apache Ofbiz的开发,这是一个开源的企业级应用框架,专为电子商务、供应链管理和企业...通过逐步学习和实践,你将能够熟练掌握Ofbiz的开发,并利用其强大的功能为企业带来价值。

    ofbiz整理资料

    这份"ofbiz整理资料"是OFBiz学习者和开发者的重要资源,它提供了中文的技术支持,能够帮助用户更深入地理解OFBiz的各个方面,无论是初学者还是有经验的开发者,都能从中受益。通过这份详尽的文档,用户可以逐步熟悉...

    Apache.OFBiz.Development

    根据给定的文件信息,以下是关于Apache OFBiz开发的知识点: 1. OFBiz介绍与安装:OFBiz是一个开源的企业自动化软件套件,它提供了构建企业应用程序所需的各种功能,比如电子商务、订单处理等。文件中提到了2008年...

    ofbiz开发入门总结

    Ofbiz社区提供了大量的文档和教程,包括官方的用户指南、开发者手册以及在线论坛,这些都是学习Ofbiz的宝贵资源。同时,阅读和理解Ofbiz的源码,能够帮助你更深入地理解其工作原理。 总结来说,Ofbiz是一个功能强大...

Global site tag (gtag.js) - Google Analytics