Chinaunix首页 | 论坛 | 博客
  • 博客访问: 508757
  • 博文数量: 58
  • 博客积分: 6012
  • 博客等级: 准将
  • 技术积分: 1211
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-09 22:50
文章分类

全部博文(58)

文章存档

2010年(25)

2009年(23)

2008年(10)

我的朋友

分类:

2010-06-03 14:47:49

  Openbravo ERP功能非常强大的ERP系统,一套适合于中小企业并且基于web可扩展的ERP系统,采用JAVA进行开发。这个ERP系统所包括的强大功能可实现生产管理、仓库管理、销售管理、财务管理。同时内置CRM(客户关系管理)和BI(商业智能)。
  Openbravo起源于著名开源ERP产品Compiere和ADempiere,和前两个产品一样它也是基于JAVA平台,并可应用于ORACLE及POSTGRESQL两种数据库之上。Openbravo项目启始于2001年的西班牙,从2006年起正式成立商业运作团队 - Openbravo, S.L.,从这一年开始Openbravo得到了大力的发展,获得大量的风险投资,吸收了包括前微软高级副总裁在内的高级管理人员。四年多的时间Openbravo发布到了2.5的版本,软件也逐步由应用软件发展成业务平台,最新版的软件使用了AJAX技术及MVC的开发思想。
  Openbravo的功能相对来说轻巧简单,系统的安装也比较简便,比较适合有生产及进销存业务的中小企业。由于JAVA平台的开放性,Openbravo可被轻易地安装在CPU大于P4 2.0 内存大于1G,硬盘空间大于20G的PC机上。通过提升硬件、优化性能、集群等方式,Openbravo也可被打造成高性能的大业务处理平台。
Openbravo有着明显的成本优势,系统可以搭建在完全免费的开源平台之上(Linux+PostgresSql+Openbravo+Firefox),现有业务接近“标准生产+财务+进销存”,系统问题和故障也比较容易检测和解决。

  Openbravo是近几年开源管理软件中的最流行的产品,产品支持多实体、多国别、多语言、多货币、多帐套、多税制,在全球包括中国和日本在内的多个国家有大量的商业应用。使用Openbravo可实现企业生产管理、仓库管理、销售管理、采购管理、财务管理、项目管理和服务管理,同时可以挂载CRM(客户关系管理)、BI(商业智能)模块、报表系统和POS系统。
  ERP系统本来就包含了很多的管理软件在里面。ERP将企业内部所有资源整合在一起,对采购、生产、成本、库存、分销、运输、财务、人力资源进行规划,从而达到最佳资源组合,取得最佳效益。 
  ERP软件的合理运用可以帮助企业内部业务操作合理化,同时运用功能丰富的协作/合作技术collaborative technologies可以帮助企业在跨合作企业群体和贸易伙伴之间提高管理水平,扩展企业竞争空间和提高综合能力。 
  ERP应用成功的标志是:一、系统运行集成化,软件的运作跨越多个部门;二、业务流程合理化,各级业务部门根据完全优化后的流程重新构建;三、绩效监控动态化,绩效系统能即时反馈以便纠正管理中存在的问题;四、管理改善持续化,企业建立一个可以不断自我评价和不断改善管理的机制。

  本系统采用JAVA开发,由于非常有价值,所以提供下载,本下载的压缩包中的文件采用虚拟机文件压缩,因此解压后使用VMware Workstation打开,你需要安装 VMware Workstation  ,VMware Workstation下载地址中文站: 
 

Openbravo ERP架构分析

概述

  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运行时的逻辑视图

图 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.2一个典型的保存请求

图 2.3重定向之后的EDIT请求

图 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任务流程

图 3.1主要Ant任务流程

2.2.1 generate.entities任务

generate.entities的任务主要是检查更新的数据字典,在ModelProvider中实例化org.openbravo.base.model包中的类型,以提供给系统的其他部分使用。

图 3.2任务中的类的主要关系

图 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的设计,更多信息可以参考最新的产品白皮书。

阅读(4266) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-06-05 17:30:50

祝贺你取得如此大的成就!! 我现在武汉上班 朱列生