`
xo_tobacoo
  • 浏览: 390776 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

OFBIZ应用程序结构

    博客分类:
  • j2ee
阅读更多

1)ofbiz可以整个看作一个大服务容器

2)web容器中包含的服务 顶级目录是application.

application下是如product,workeffortsecurityext 子服务 程序。为什么叫子服务,而不是子web应用程序 呢?请接着来看下面的例子。

3)程序结构。我们从一个例子分析,workeffort服务的结构:

-workeffor

--build

--config

--data

--entidydef//存放数据模型定义的xml文件

--script

--servicedef//存放service定义的xml文件

--testdef

--webapp//子web程序

----ical

------WEB-INF

--------web.xml

----workeffor

------WEB-INF

--------web.xml

--------controller.xml //提供Request URL Mappings请求路径相关

--wedget //web子程序返回的UI界面相关,一般使用freemarker

--build.xml

--component-load.xml / /可以申明此子服务的服务可以被其它子服务调用,如中的workeffort能被 product调用。

--ofbiz-component.xml/ /子服务申明文件,主要内容包括四部分。

4)声明控制器。 ofbiz-component.xml: 主要声明workeffort 所有服务的文件位置。

一是配置文件夹classpath,指向上面列举的文件夹:

   <classpath


 type="jar" location="build/lib/*"/>
    <classpath type="dir" location="config"/>
    <classpath type="dir" location="script"/>

 二是数据模型entity声明文件的位置:

entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml



"/>
    <entity


-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel_old.xml"/>
    <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel_view.xml"/>
    <entity-resource type="eca" reader-name="main" loader="main" location="entitydef/eecas.xml"/>

 三是web service的申明:

  <service


-resource type="model" loader="main" location="servicedef/services.xml


"/>
    <service-resource type="model" loader="main" location="servicedef/services_timesheet.xml"/>
    <service-resource type="eca" loader="main" location="servicedef/secas.xml"/>

 四是子服务的子webapp的位置:如上例子有两个ical和workeffor

   <webapp


 name="workeffort"
        title="WorkEffort"
        server="default-server"
        location="webapp/workeffort"
        base-permission="OFBTOOLS,WORKEFFORTMGR"
        mount-point="/workeffort"/>

     <webapp name="ical"
        title="iCalendar"
        app-bar-display="false"
        server="default-server"
        location="webapp/ical"
        mount-point="/iCalendar"/>
 

5)加载顺序。很容易看出先ofbiz-component.xml,然后加载其他问文件。

6)调用控制器。 看到现在我们发现一个问题,上面的都是声明,最关键的调用控制是怎么发生的?浏览器访问时,url解析是怎么申明的呢?

controller.xml, 就是他了,他负责寻址,调用业务类或者业务服务类处理,并返回UI.

看个例子,注意下面的event标签的type和invoke:

    <request-map uri="createWorkEffortAssoc">
        <security https="true" auth="true"/>
        <event type="service" invoke="createWorkEffortAssoc"/>
        <response name="success" type="view" value="EditWorkEffortAssoc"/>
        <response name="error" type="view" value="AddWorkEffortAssoc"/>
    </request-map>

 当请求createWorkEffortAssoc时,调用servicedef文件夹下createWorkEffortAssoc。并返回到wedget下的申明的view视图EditWorkEffortAssoc或者AddWorkEffortAssoc,视图一般用freemarker,解析返回就是一个html.文件

    <request-map uri="changeDelegator">
        <event type="java" path="org.ofbiz.webapp.event.CoreEvents" invoke="changeDelegator"/>
        <response name="success" type="view" value="main"/>
        <response name="error" type="view" value="error"/>
    </request-map>

 当请求createWorkEffortAssoc时,直接调用类org.ofbiz.webapp.event.CoreEvents的changeDelegator方法。并返回到wedget下的申明的view视图EditWorkEffortAssoc或者AddWorkEffortAssoc,视图一般用freemarker,解析返回就是一个html.文件。

 

7)最后再回答那个问题:application下为什么叫子服务,而不是子web应用程序 呢?

一是从文件结构就能看出,<web-app>也被当作了服务的中一类。

二是分析ofbiz-component.xml,里面可以不使用web-aap标签,此时就是一个纯粹的web service服务器了,如securityext。

 

 

 

0
1
分享到:
评论

相关推荐

    ofbiz10.04表结构

    OFBiz全称为Open For Business Project,它是一个用于构建企业应用程序的全面业务解决方案,涵盖电子商务、供应链管理、客户关系管理等多个领域。 OFBiz是基于Java的,它提供了丰富的服务和组件,通过灵活的表结构...

    ofbiz程序结构.txt

    ### OFBiz程序结构解析 #### 一、概述 OFBiz(Open For Business)是一款开源的企业级电子商务框架,它提供了一套完整的解决方案来构建和管理复杂的业务应用。该框架基于Java语言开发,支持多种数据库,并提供了...

    ofbiz开发手册

    OFBiz 环境搭建包括下载和安装 Java、下载和安装 OFBiz、安装数据库、配置应用程序服务器等步骤。OFBiz 环境搭建的正确性将直接影响到后续的开发和测试工作。 OFBiz 安装 OFBiz 安装是指将 OFBiz 下载到本地计算机...

    Ofbiz 数据库全模型

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

    ofbiz安装与配置

    * applications:Ofbiz 的应用程序代码 * components:Ofbiz 的组件代码 * data:Ofbiz 的数据文件 * entity:Ofbiz 的实体关系模型代码 * hot-deploy:Ofbiz 的热部署文件 * ofbizComponents:Ofbiz 的组件配置文件...

    Apache.OFBiz.Development

    7. OFBiz启动与监控:涉及到启动OFBiz应用,包括内存分配、运行状态监控和日志查看。也包括了可能遇到的启动问题及其解决方法。 8. 演示和探索OFBiz:指南提供了一个完整的演练,包括在电子商务应用中购物流程的...

    ofbiz学习笔记(自学整理)

    Apache Ofbiz是一个开源的企业应用框架,它为构建复杂的业务应用程序提供了全面的功能,包括供应链管理、电子商务、财务会计、人力资源等。对于初学者来说,理解Ofbiz的基本架构和工作原理是至关重要的。 Ofbiz的...

    OFBIZ快速入门OFBIZ快速入门

    这种设计使得外部应用程序和定制化应用可以轻松地集成到OFBiz中。 **七、深入学习与开发** 要深入理解和开发OFBiz,你需要了解其组件模型、服务定义、XML配置文件的用途(如`build.xml`、`component.xml`)、JSP和...

    Ofbiz-16-全量数据库873张表.rar

    理解这些表的结构和关系对于调试、优化和扩展Ofbiz应用非常重要。 - `ofbiztenant.sql`:可能涉及到多租户(multi-tenancy)的概念,Ofbiz支持在一个实例中管理多个独立的业务实体,每个实体称为一个租户。此文件...

    Ofbiz快速开发入门详解

    Ofbiz,全称Open For Business Project,是一个开源的企业级应用框架,主要用于构建复杂的业务应用程序。它提供了全面的业务组件,包括库存管理、订单处理、客户服务等,为企业信息化提供了一站式解决方案。 在...

    ofbiz 英文pdf

    - **访问OFBiz**:说明如何通过浏览器访问OFBiz应用。 - **探索Web应用程序“ecommerce”**:介绍该模块的功能和使用场景。 - **购物体验**:模拟在线购买商品的过程,了解其业务流程。 - **探索Web应用程序...

    OFBiz经典入门教程加速度编写

    OFBiz(Open For Business Project)是一个全面的企业级业务应用程序框架,它由Java语言编写,提供了一系列的服务、组件和工具,用于构建和管理电子商务、供应链管理、客户关系管理等多种业务应用。 OFBiz的核心...

    Apache+OFBiz+开发初学者指南

    掌握这些基础知识后,你可以逐步学习如何创建实体、编写服务、设计用户界面,并最终集成所有组件来构建完整的OFBiz应用程序。 总之,Apache OFBiz是一个功能强大的企业级应用框架,对于希望从事电子商务、ERP或CRM...

    OFBIZ综合文档

    【OFBIZ综合文档】深入理解MVC模式 在IT行业中,尤其是企业级...理解和掌握MVC模式对于开发和维护OFBIZ应用程序至关重要,因为它能帮助我们更好地组织代码,提高代码的可读性和可扩展性,从而降低项目的长期维护成本。

    ofbiz入门实例(jiasudu制作)

    这个实例教程旨在帮助初学者快速理解并上手Ofbiz,从而能够构建和管理自己的企业级应用程序。 【描述】博文链接指向了iteye博客上的一篇文章,该文章详细介绍了如何从零开始学习Ofbiz,包括安装环境、创建项目、...

    ofbiz框架(文档)全

    MVC模式是软件工程中的一种架构模式,用于分离应用程序的不同部分,以提高可维护性和可扩展性。在OFBiz中,MVC模式被广泛采用,以确保业务逻辑、用户界面和数据管理的有效隔离。 1. **模型(Model)**:在OFBiz中,...

    OFBiz教程_-_初学者的开发指南

    本节将详细介绍创建一个简单的OFBiz应用程序的具体步骤,即“practice”组件。 1. **创建组件目录**: - 在`hot-deploy`目录下创建名为`practice`的子目录。 - 这个目录名需要与即将创建的组件名称一致。 2. **...

    原创 Ofbiz 入门教程

    Ofbiz会根据这些定义自动生成对应的数据库表,并动态地生成相应的Java对象,用于应用程序中的数据处理。这样一来,开发人员只需关注业务逻辑的实现,Ofbiz会自动处理所有与数据库交互的细节。 #### 二、Ofbiz 的...

Global site tag (gtag.js) - Google Analytics