OFBiz(Apache Open For Business)是一个开源框架,设计为帮助构建企业资源计划(ERP)软件。ERP是任何致力于整合所有业务处理及后台数据到一个系统的一个统称。实际上,OFBiz框架不仅帮助构建自定义软件,还打包有许多可能在ERP系统中期望的工具,以及更多。使用这些应用程序的扩展完全取决于你和业务的需求。一些业务直接选择使用这些组件的部分或全部。其它的可能花费一些时间和资金来定制组件或者构建新组件来满足他们的需求和独特的业务处理。自从OFBiz挂上Apache License Version 2.0这个招牌后,组织可完全免费使用、定制、扩展、修改、重新打包,甚至转售OFBiz。
OFBiz主要针对电子商务业务,提供简单可定制化工具, 例如一个完整的仓库管理系统(WMS),一个会计系统和完整订单和产品管理系统。它甚至有一个完整前端,客户面站点和购物车,拥有媲美于数百万美元网站如亚马逊的工具和功能,没有提及刀它自有的自维护集合和管理工具。box之外,OFBiz是一个多货币系统,在英国英镑、欧元以及任何其他货币如美元下能完美工作。它也是多语言的,能够显示不同种语言文字,依赖于世界上用户或客户查看时的位置。它不是绑定在一个数据库,并完全支持常见的数据库,它是如此通用。
它的通用性和大小主要缘由它的开放源代码模型。OFBiz实际上是几个贡献者志愿开发维护代码库和不断增长的社区的协作成果。然而这种情况下,文档通常很少(这主要因为该项目的和组件的发展速度),设置有免费和活跃的邮件列表,它会是你OFBiz进展中无价的学习工具和代码信息。OFBiz工程使用著名的JIRA应用(一个缺陷和问题追踪以及项目管理工具——它使用OFBiz实体引擎,该框架的重要部分)。这让开发者和用户能够告诉社区他们在软件中发现的bug和请求新功能需求,但也许不必为他们自己开发源代码。谁知道呢?一旦你阅读本书,你也许甚至想自己去开发一个显著问题或者修复工程的一个缺陷。
OFBiz的简短历史:
OFBiz是David E Jones 和Andy Zeneski创建于2001年5月,在他们发现在他们试图独立解决的问题相似并在当时已存在的解决方案并非很奏效之后。他们意识到这些问题能够使用开发源码模式(Open Sourse model)来解决。
关于本书:
本书中的实例和指南特性旨在,在我们阅读的最后,一起创作一个运转的基于web的应用。在这个工程中各种途径将被发掘。尝试和体验不同技术的结合,因此我们在使用它们的时候获取最好的学习。我们将发现OFBiz不仅仅是一个框架或者工具。OFBiz中很好的一部分由ready-made功能和结构组成,那能轻易使它们臭味ERP软件的构建部分,应用容器。同时可仅仅使用OFBiz框架构建一个完整的ERP应用,在这些ready-made应用组件的基础上构建将至少快几个数量级。在构建我们的工程时,我们将学习这些应用中的一部分,这也将成为更好理解一些尝试和测试的最佳实践。
本书内容:
第一章:使用一台Windows机器,指导我们下载安装我们获取和运行OFBiz框架的必需软件。演示如何创建一个Eclipse工程和运行时我们在应用顾客面站点上下一个订单的一些组件,以及使用后端订单管理组件完成订单。
第二章:将学习OFBiz的结构。向我们介绍该框架、应用、热部署目录的概念。在既存的OFBiz组件上完成我们第一个定制,最后创建我们自己预订应诉的结构
第三章:我们将看到如何使用sceen widgets来构造屏幕上的输出。我们从在我们的学习组件中创建一个简单sceen开始,演示一个基本输出,本章最后我们将学到如何创建由多个部分组成的复杂screen。
第四章:我们学习表单Widget。我们学习它们如何在Screen Widget中使用,和快速创建XHTML表单来节省开发时间和精力,如此我们能够输入信息到应用程序。
第五章:通过学习如何使用菜单小窗口(Menu-Widgets)来导航版我们的组件,我们完成OFBiz表示层的研究。我们也更多地研究了FreeMarker如何能帮助我们现实更加复杂的窗口(Screen)。
第六章:我们重回控制层,学习更多关于OFBiz如何仅仅在一个地方利用前端控制器模式(the Front Controller pattern)来配置贯穿我们组件的流(flow)。OFBiz如何处理不同种类的请求并介绍安全的概念。最后,我们添加一个“登录”到“预订应用功能中,来看使用一个请求”安全“是如此简单。
第七章:我们转移到实体引擎(Entity Engine)的概念,并学习OFBiz如何使用代理模式来为我们提供轻松访问持久化数据的方法。学习OFBiz如何从XML文件的定义中创建数据库结构,添加字段、表、约束和索引。我们看到,通过使用视图实体(View Enitites),我们能够处理跨表连接(join),允许我们来创建复杂查询。也向我们介绍OFBiz的Webtools管理组件和发现如何通过这些Screen访问原生数据。
第八章:引导我们通过一系列的例子设计来演示数据查询和持久化技术。我们学习如何使用通用代理(GenericDelegator)方法来查找和操纵后台数据。我们发现如何使用实体引擎缓存通过削减数据库查询的次数大大提高性能并学到如通过搭台视图实体(Dynamic View Entity)何快速创建复杂查询。最后,我们将学到如何使用实体迭代器(EntityListInterator)在大量记录集中来有效地分页。
第九章:通过学习一些编写应用流程的关键技术,我们亲密接触Java事件。我们也将接触到如何指定用户许可以及这些许可如何在Java方法中被检查的。
第十章:下一步我们查看另一种事件,十分重要的一种——服务(Service)。我们学到服务引擎(Service Engine)的优势以及它是如何工作的,学到如何在Java中定义和编写服务。了解到调用这些服务同步与异步的不同,以及使用工作调度者(Job Scheduler)服务如何能被调度。最后,我们了解如何使用ECAs(Event Condition Actions)来触发这些事件。
第十一章:我们转到学习复杂许可,学习如何指定用户粒度许可,以及在我们的服务中这些许可的校验如何简单。通过例子我们学到如何依靠访问权限约束用户查看或输入数据,同时构建我们的预订应用。
第十二章:我们学到关于OFBiz迷你语言(Mini-Language),我谬了解到我们如何在迷你语言中编写简单服务和事件,以及它应理想使用的时间。我们发现整个框架中它的概念的通用性和广泛性。
第十三章:我们来到学习该框架的最终部分,我们了解到改变组件的外观是如此容易的,并学到既存窗口(Screen)的结构。该章转移到一些贯穿所有组件通用更高级的FreeMarker技术。最终,使用PDF的一个产品作为一个例子来发现输出的不同格式。
第十四章:我们学习一些实战开发技术,包括如何调试不同部分,框架中的语言。我们将了解到如何连接一个应用的远程调试器并通过Eclipse IDE单步Java代码行。我们下一步学习获取最新bug fix的概念和特性以及使用Windows工具将这些合并到我们的工程中,让我们能成功地使用OFBiz的最新最好版本。最后,我们来看学习如何在Apache HTTP Server后运行OFBiz,创建一个可伸缩的架构。
使用该书你需要什么:
完整下载和安装指导需要获取和运行OFBiz的所有软件和应用能在第一章找到,这些包括:
JDK
乌龟SVN(TortoiseSVN)
Eclipse IDE
该书编写时OFBiz的最新版本是4.0。我们将在这个版本上工作,并非在主干版本上。在OFBiz speak(version control speak,更确切的说),该稳定版本是”稳定分支“ 的术语;该逐渐赶上24/7单独主干简单地称为”主干(trunk)"。每个稳定分支都能向前发展,归因于应用程序的缺陷修复。因此,即使发布分支也历经修订。
主干是“最新的,最强大的并且危险的”OFBiz状态,新特性不断加入其中,可能连带新的bugs。功能添加的如此频率不允许足够的测试。在某个贡献者的新增加尘埃落定前,更多的增加可能来自世界上其他的贡献者。听起来够恐怖的,这种速度和全球化协作环境让OFBiz框架拥有在断颈(breakneck pace)时发展的奇特优势。
另一方面,发布版本如OFBiz4.0 已经“特定冻结”,并授予测试功力集中在修正缺陷和增强稳定性,而非添加新的未测试的功能。发布分支是产品环境开发(为真实业务使用)的理想选择,它的稳定性和减轻维护和支持是至关重要的。
在主干上工作呈现一个移动的目标,最好在当我们有一些相当好的OFBiz框架能力并且熟悉现有OFBiz趋势和变化时接受这个挑战。
本书将引用既存代码和文件中的行号。缺陷修复可能因此对这些行号产生影响。既然他们仅仅是缺陷修复,行号应该不会彻底改变并且文件中的“查找”可以指引你正确的方向。
发布频率(创建一个新的发布分支)的官方策略是每年一次,这在Apache OFBiz发布计划——普通发布策略http://docs.ofbiz.org/display/OFBADMIN/Release+Plan#ReleasePlan-GeneralReleasePolicies定义。
本书适合哪些人:
本书致力于希望理解并开始定制OFBiz框架的人。要求有Java基础水平,一些面向对象(OOD)的概念的理解将有所获益。基本掌握SQL(Simple Query Language SQL),虽然这不是必须的,但对快速理解OFBiz中的一些概念确有帮助。
一些XML语法的基本技能也是必须,但仅仅是要求创建格式良好的XML文档。
本书将为MS windows用户提供更多的hand-holding。其它操作系统的用户,例如Linux,应自然地更加适应抓住使用widows特定例子的概念并翻译这些例子为他们期望的操作系统方言。
约定:
本书中,你可能发现一些区分不同种类信息的样式的文本。下面是这些样式的一些示例和他们所代表意义的解释。
文本中的代码单词显示如下:“The <include-form>element includes a form named FirstForm residing in a file LearningForms.xml."
一个代码片段将设置如下:
<request-map uri="OneForm">
<response name="success" type="view" value="OneFormScreen"/>
</request-map>
当我们希望吸引你的注意到代码片段的一个特殊部分,相关的行或者项目将会粗体显示:
server="default-server"
location="webapp/partymgr"
base-permission="OFBTOOLS,PARTYMGR"
mount-point="/partymgr"/>
新术语和重要词汇是以粗体形式介绍的。你在屏幕上看到的词汇,在示例菜单或者对话框,出现在我们的文本中如下:”We sess two fields First Name and Last Name,and one Submit button."
【下面省略两条警告和提示的样例】
读者反馈:【略】
客户支持:【略】
下载本书样例代码:
访问http://www.packtpub.com/files/code/4008_Code.zip 直接下载样例代码。下载的文件包含如何使用它们的介绍。
勘误表:【简】http://www.packtpub.com/support来报告错误,既存的勘误表在该地址上选择相应标题。
版权:【略】
问题:【略】