|
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运行时的逻辑视图 系统运行时主要分为3层:
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模板中。 责编:张赛静 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 |
|
|