- 浏览: 519320 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
u011165335:
distinct不影响使用半连接
(转)关于semi-join/anti-join的一点探讨 -
353790060:
redo 记录事务执行后的日志 undo 记录事务回滚的日志 ...
Oracle redo与undo浅析 -
jayxigua:
redo用于在失败时重放事务(即恢复事务),undo则用于取消 ...
Oracle redo与undo浅析 -
aa_qq110:
Openbravo有中文包吗
Openbravo开发手册 -
iocaop:
不错,写的很清晰易懂
JAVA 服务提供者框架介绍
概述
Openbravo ERP是一套适合于中小企业并且基于web可扩展的开源ERP系统。这个ERP系统所包括的强大功能可实现生产管理、仓库管理、销售管理、财务管理。同时内置CRM(客户关系管理)和BI(商业智能)。在2008年获得了1200万美金的风险投资,并在2009获得了Infoworld的最佳开源企业软件的奖项,其前景相当看好。
研究同行业的开源软件,有助于我们掌握其产品架构,了解其设计理念,从而积累软件设计经验,以应用到自己的产品开发中。
图 1.1 Openbravo的体系结构
Openbravo主要的体系结构被称为“应用数据字典”(Application Dictionary,简称AD)结构。这种结构源于另一个开源ERP Compiere ERP(值得一提的是,Compiere ERP也在09年获得了Infoworld的最佳开源企业软件奖)。定义的数据字典将通过Openbravo的WAD引擎生成各种元素。开发者开发的SQL语句将通过SQLC程序生成对应的各个业务组件。所有的程序组装在一起就组成了Openbravo ERP。
我们将从ERP系统结构和编译系统结构两部分来分析Openbravo的软件架构。
1、 ERP系统结构
1.1 概述
图 2.1 Openbravo运行时的逻辑视图
系统运行时主要分为3层:
- 表现层:主要由org.openbravo.erpWindows包下的控制器组成,他们继承自HttpBaseServlet。负责使用请求初始化数据,调用业务层,最终使用xmlEngine渲染显示页面。
- 业务层:负责提供业务中的数据结构,如资产等。Openbravo的业务层和SQL耦合较为紧密,通常会在业务对象类的静态方法中直接执行SQL。处理业务也使用了存储过程,业务对象类里边也会有响应的静态方法执行存储过程(通常会根据数据库类型进行判断)。业务对象可以由编译引擎生成。
- 基础层:基础层提供一些基础的服务,如提供数据库连接等。
1.2 运行时处理过程
以在OpenbravoERP中编辑数据字典时的程序处理为例,运行时处理过程大概如下:
首先请求被发送每个程序对应的Servlet,如Table,Table继承自一个模板类HttpSecureAppServlet,依靠这个类执行一些必要的初始化工作。响应请求的主要方法为doPost,doPost方法根据名称为Command的参数执行不同的操作。如SAVE_NEW_EDIT表示首先保存一条新增的记录,然后跳转至EDIT页面。
1. 对于一个典型的保存请求(即Command参数的值以SAVE开头):
如图 2.2,在doPost方法中首先使用getEditVariable方法从请求中构造业务数据对象TableData,然后调用其insert/update方法,这个方法将会调用其内部JDBC statement的___executeUpdate方法。最终页面被重定向,Command参数的值被重置为EDIT。
2. 重定向之后的请求
如图 2.3,在doPost方法中将创建一个TableSQLData对象以保存条件,调用TableData对象的selectEdit方法(static方法)获取数据,然后将使用xmlEngie获取视图模板,向模板中注入参数和数据,之后打印模板。
图 2.2一个典型的保存请求
图 2.3重定向之后的EDIT请求
1.3 xmlEngine
xmlEngine是Openbravo体系结构中比较有特点的一个部分,他没有使用通常的JSP页面作为表现层(可能是由于历史原因,现在看来这种方式可能值得商榷),而是自己开发了一套基于xml的模板的引擎以渲染表现层,可以根据写有sql的xml文件读取数据,并将数据嵌入xml形式的HTML模板中。
2、 编译系统结构
2.1 概述
得益于Openbravo 较为完善的编译系统,他的一个主要的优点就是其开发速度快,能后迅速的开发出一个应用程序。
主要开发过程如下:
1. 在数据库中生成表
2. 在Openbravo中定义表和字段
3. 在Openbravo中定义windows,tab
4. 编译window
这样一个具有前端显示和后台业务数据结构的程序就生成了。
2.2 编译过程
编译任务由Ant任务compile.development完成。主要有以下几个子任务构成。(参见/src/build.xml)
图 3.1主要Ant任务流程
2.2.1 generate.entities任务
generate.entities的任务主要是检查更新的数据字典,在ModelProvider中实例化org.openbravo.base.model包中的类型,以提供给系统的其他部分使用。
图 3.2任务中的类的主要关系
2.2.2 wad任务
Wad任务的主要工作使用org.openbravo.wad包中的Wad类来完成任务。Wad根据传入的参数,读取数据库信息生成代码,如:
- 按钮控件配置
- 配置web.xml。
和针对windows的每个标签页生成:
- 含有sql操作的xsql。
- 控制器Java源文件。
- 配置参数和数据域的xml文件。
2.2.3 sqlc任务
将含有sql操作的xml编译成Java源文件,对应业务层中的负责执行SQL的类。
2.2.4 translate任务
根据一些信息,如程序所注册的模块,对数据进行必要的转换。完成之后所有运行时需要的文件都已经生成,重启服务器就可以看到新开发的页面了。
3、 评述
OpenbravoERP的体系结构并不算复杂,自成一体。
软件结构表现层,控制器,和业务层较为清晰。表现层xmlEngine的设计很有独到之处。应用数据字典和编译系统的设计为程序的开发和定制提供了全面的支持,使得开发者几乎不需要手工编写代码就可以自己开发程序。
当然,运行时的三层体系结构还是略显单薄,业务层和持久层的耦合紧密。所以其体系结构对代码重用及模块复用的支持有限,更多的是依靠其较为完备的应用数据字典的定义来生成使用的代码。换句话说,主要是利用引擎生成部分相似的代码的方式来解决复用问题。
Openbravo组织意识到了这种方式的不足,也在逐渐的做出改变,在2.5版本中我们见到了一些OR-Mapping的设计,更多信息可以参考最新的产品白皮书。
download: http://sourceforge.net/projects/openbravo/files/
原文地址: http://hi.baidu.com/zhizhesky/blog/item/768349a745741b9fd143589d.html
发表评论
-
Openbravo 论坛
2014-03-12 20:55 67大家好, 新开了一 ... -
Openbravo与淘宝对接文档二
2014-01-01 17:49 4095这篇文章介绍消息服务的使用 1. 登陆沙箱用户 ... -
openbravo与淘宝对接文档一
2013-12-31 21:53 1902首先进入沙箱首页:http://www.tbsandbox ... -
How to automatically populate search keys
2013-05-20 21:13 1003Introduction Search keys are ... -
How to create an Alert
2013-05-12 22:24 1257Objective The objective of t ... -
Openbravo 如何给窗口添加新字段
2012-12-17 21:04 1421以薪资表为例,假设我们现在有生效日期,还没有失效日期,支付时 ... -
Openbravo3.0 服务端技术--数据访问层(Data Access Layer)
2012-10-24 23:46 1942Data Access Layer(DAL)描述 ... -
Openbravo3.0 客户端代码开发与API
2012-10-04 18:13 2559一. 客户端代码开发工具 ... -
Openbravo3.0 体系结构
2012-08-29 22:14 5449在Openbravo 3.0中,我 ... -
Openbravo3.0 组织机构设置介绍
2012-06-24 17:31 2629一. 简要介绍 ... -
Openbravo3.0 用户操作界面介绍
2012-06-12 22:57 1791一. Openbravo3.0 新颖特征介绍 ... -
Openbravo3.0 怎样新建一个窗口
2012-03-15 21:28 2616一.需求背景 假设我们在开发一个人力资源模 ... -
Openbravo3.0与Eclipse集成简介
2012-01-07 22:30 3561... -
Openbravo 3.0 销售管理组织机构消失问题
2011-06-09 18:43 1076请参考如下文章: http://wiki.openbravo ... -
Openbravo 3.0汉化包
2011-05-26 22:30 8135附件有openbravo3.0的汉化包下载,不过不完 ... -
Openbravo ERP 3.0安装指南
2011-05-22 16:21 20287Openbravo ERP 3.0已经发布有一段时间 ... -
Openbravo 手工导入商品库存与价格
2011-05-19 16:36 1600由于Openbravo自带的导入功能 不能够导入商 ... -
Openbravo 窗口字段自定义
2011-05-19 16:00 1469假如openbravo的添加产品页面有很多字段,我 ... -
Openbravo ERP 定制菜单
2011-05-10 12:15 1715一. 删除菜单节点 1.点击 ... -
Openbravo ERP 通过数据字典定制属性
2011-04-29 11:13 2078有些时候,openbravo并不 ...
相关推荐
- **MVC(Model-View-Controller)架构**:这是Openbravo ERP 的基础架构之一,能够清晰地将数据模型、用户界面以及控制器分离,提高系统的可维护性和可扩展性。 - **模型驱动开发**:Openbravo 通过模型驱动的方式...
Openbravo erp 实施笔记
Openbravo_ERP 的中文介绍,帮你快速走入 Openbravo_ERP 的世界
Openbravoerp实施笔记.pdf
NULL 博文链接:https://liwenshui322.iteye.com/blog/1054473
【Openbravo ERP 实施笔记】 Openbravo ERP 是一款开源的企业资源规划系统,它提供了全面的业务管理功能,包括财务管理、供应链管理、销售与市场、人力资源和生产制造等模块。在实施Openbravo ERP时,系统环境的...
Openbravo ERP 采用了 MVC(Model-View-Controller)架构模式来组织其内部组件,主要包括以下几个核心部分: ##### 1.5.1 XmlEngine 用于解析 XML 文件,并将数据转化为可以在前端显示的格式。 ##### 1.5.2 SQLC ...
开源ERP OpenBravo的数据库关系图。
Openbravo_ERP安装 说明 分析 以及Openbravo 2.4汉化
Openbravo ERP介绍(一)
java开发erp源码下载Openbravo ERP 这是Openbravo ERP的Bippo开发版本。 更多信息: 有用的参考: 准备 Tomcat 设置 安装(不要使用它的 Ubuntu 包)。 不要使用Apache 7.0! (Hendy 的注解:也许应该尝试使用 ...
openbravo_erp Windows中的项目路径 C:\代码\ openbravo_erp 这应该是项目路径,以便解析代码。 数据库 database /文件夹包含Enterprise Architect项目中的rdb模型数据库和JPDSP解析的超级数据库模型 克隆项目 在C...
Openbravo中文使用手册 是我目前看建比较好的文档
2. **Web基础架构**:基于Java和Ajax技术,Openbravo提供了一个完全基于Web的用户界面,用户可以通过浏览器访问,无需安装额外软件。 3. **灵活性**:Openbravo支持自定义字段、工作流和报告,允许企业根据自身业务...
Openbravo ERP是一套适合于中小企业并且基于web可扩展的ERP系统。这个ERP系统所包括的强大功能可实现生产管理、仓库管理、销售管理、财务管理。同时内置CRM(客户关系管理)和BI(商业智能)。
OpenBravo销售,财务,仓存等系统的 数据库结构基本分析,
右键单击以编辑选项,然后单击扩展名以打开Openbravo ERP用于显示Openbravo警报的简单扩展。右键单击以编辑选项,然后单击扩展名以打开Openbravo ERP。Openbravo用户凭证不会存储在任何地方。因此,如果Openbravo...
Openbravo数据库的pdm图,使用PowerDseigner打开,可以作为数据库设计或者ERP研究之用
O4BO与Indivar合作,将定制版本的OpenBravo ERP推向在菲律宾的菲律宾市场和为中小型企业定制的ASEAN。
- **定义**:Openbravo是一款专为中小企业设计的基于Web的ERP(企业资源规划)软件,具备高度可扩展性。 - **核心功能**:集成了CRM(客户关系管理)、BI(商业智能)以及涵盖采购、库存管理、项目管理、生产销售和...