基于OFBiz的电子商务平台开发.doc

上传人:精*** 文档编号:840959 上传时间:2023-09-08 格式:DOC 页数:39 大小:237.40KB
下载 相关 举报
基于OFBiz的电子商务平台开发.doc_第1页
第1页 / 共39页
基于OFBiz的电子商务平台开发.doc_第2页
第2页 / 共39页
基于OFBiz的电子商务平台开发.doc_第3页
第3页 / 共39页
基于OFBiz的电子商务平台开发.doc_第4页
第4页 / 共39页
基于OFBiz的电子商务平台开发.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、电子科技大学毕业论文(设计) 基于ofbiz的电子商务平台开发摘要OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。 OFBiz最主要的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包括实体引擎, 服务引擎, 消息引擎, 工作流引擎, 规则引擎等。OFBiz 已经正式成为 Apache 的顶级项目: Apache OFBiz。关键词 java j2ee erpofbizAbstractOFBiz is a

2、very well-known e-commerce platform, is a very well-known open source project, created based latest J2EE/XML specification and technical standards, building large and medium-sized enterprise-class, cross-platform, cross-database, cross-application server multilayerthe class WEB application system fo

3、r distributed e-commerce framework. OFBiz main feature is the the OFBiz provide a set of development components and tools based on the Java web application. Entities engine, service engine, news engine, workflow engine, rules engine.OFBiz has officially become a top-level project of the Apache: Apac

4、he OFBiz.KEYWORDS java j2ee erpofbiz目录第一章 ofbiz概述2第一节 ofbiz结构2第二节 项目的安装:4第三节 简单的例子4第四节 做一些复杂的ui7第二章ofbiz中使用groovy9第一节groovy是什么9第二节groovy基础10第三章 服务和事件(minilang)18第一节 什么是 Minilang18第二节 定义简单的Service18第二节 简单的方法19第二节 简单的事件20第四章 实体和服务22第一节 实体数据模型22第二节 beanshell25第五章 综合实例25第一节 目录结构26第二节 相关配置说明26第二节 相关数据文件说

5、明29第二节 业务逻辑31第二节 屏幕的创建33结束语35谢辞36参考文献37第一章 ofbiz概述第一节 ofbiz结构OFBiz 的宗旨,还是使用一系列自创的开源技术,开发大规模的企业级应用程序。它的目标,不是工作流,也不是appfuse 这样一个整合其他开源技术的演示性的网站,而是一个综合的、企业级的电子商务网站。(一) ofbiz结构该结构去掉了些linux的文件,比如debian文件夹和后缀为.sh的脚本。该项目可以直接导入到eclipse中,集成了ant工具,可以使用相关的命令进行操作。2012/11/07 22:44 18,235 .classpath2012/03/18 10:

6、37 2,229 .gitignore2009/03/05 07:06 636 .hgignore2010/03/17 18:28 499 .project2010/09/15 19:57 1,373 ant2010/09/15 19:57 1,153 ant.bat2009/04/14 23:01 5,984 APACHE2_HEADER2013/01/14 10:53 applications2012/03/18 10:37 53,115 build.xml2010/09/15 19:57 6,969 common.xml2013/01/14 10:55 framework2013/01/

7、14 10:55 hot-deploy2010/08/31 10:03 1,318 ij.ofbiz2011/03/01 17:51 2,155 ivy.xml2010/04/07 09:11 3,998 KEYS2013/01/14 10:55 lib2012/11/07 22:44 163,481 LICENSE2011/03/13 16:25 8,271 macros.xml2011/05/02 23:15 2,283 mergefromtrunk.bat2011/04/22 20:51 17,759 NOTICE2011/01/13 16:00 5,147 ofbiz.aptana.j

8、s.format.xml2010/10/18 12:56 8,959 OPTIONAL_LIBRARIES2010/09/09 23:32 4,172 rc.ofbiz2012/05/20 20:00 3,492 README2011/12/29 13:41 1,127 revert.bat2013/01/14 10:56 8 revision-of-11.04.02.txt2013/01/14 10:52 runtime2013/01/14 10:55 specialpurpose2010/09/09 23:32 2,709 startofbiz.bat2010/09/09 23:32 2,

9、713 startofbizBoth.bat2010/09/09 23:32 2,712 startofbizPos.bat2013/01/14 10:52 themes2013/01/14 10:55 toolsapplications 目录,包含了OFBIz 核心的应用程序组件,如订单管理,电子商务存储等。component-load.xml 文件配置需要载入哪几个应用程序组件。这里的每一个组件,都是一个基于OFBIZ构建的Web 应用程序。framework 框架目录,包含OFBIZ 框架的组件,例如实体引擎和服务引擎。这是OFBIZ 框架的核心。其他应用程序都是基于它来构建的,comp

10、onent-load.xml 文件配置需要载入哪几个框架组件。(二) ofbiz框架简介整体采用3层架构用户接口,逻辑和数据,在设计一些用户用例时推荐从底部到顶部的实现,这样能够在心中明白应用程序整体的架构,允许你使用ofbiz的工具在高层模块使用低层模块的架构。1. 定义实体(Entities):ofbiz-component.xml ,每一个主件(component)中实体和服务的定义,类路径和web的根路径都和该配置文件相关联2. 数据层Data Layer数据层的最佳实践就是使用ofbiz Entity Engine(ofbiz 实体引擎),绝大多数情况下实体引擎会处理99%的数据库的

11、交互问题,如果不能处理就可以使用jdbc来进行处理。3. 表现层模板最佳的实践就是HTML或者是使用freemaker,推荐使用freemaker,它能够更好的和ofbiz核心框架工具进行结合,一般来说推荐不直接使用freemaker而是使用ofbiz screen widget,目的是为了让action能和screens相关联。表现层模板应该尽可能简化,一些公共的内容比如header,footer,导航条,这些应该在允许时使用适配者模式进行加载,修饰每一页的模板文件应该在screen的定义xml中指定。第二节 项目的安装:该项目集成了ant,可以通过ant进行安装,将项目解压出来后会看到bu

12、ild.xml,定位到这个xml文件的目录下也就是项目的根路径,输入命令ant,会安装一个数据集demo,该demo中包含了很多完整的例子,包括供应商,仓库,以及商店等完整供应链的流程 命令:ant run-install,会安装一些数据库和提取准备好的后端给用户,但是没有默认的商店和账号被创建。 命令:ant run-install-extseed,会创建一个管理员的账号。 命令: ant create-admin-user-login,执行ofbiz,完成ofbiz的构建和配置。 命令: ant run,执行完成后就可以在浏览器里输入。https:/localhost: 8443/mypo

13、rtal/control/main/登陆时的默认账号是admin密码是ofbiz,该端口号的配置位于/ofbiz/framework/base/config/both-containers.xml第三节 简单的例子简单在页面上输出1行文本,这个例子将会演示如何创建和加载你自己的组件,增加一个screen(view)来显示文本this is practice application。(一) 创建一个组件在项目根路径的hot-deploy文件夹下创建1个practice文件夹hot-deploy/practice,该文件夹的名字和新创建的组件名是对应的,ofbiz-component.xml 文件

14、如下 对ofbiz-component.xml的说明:该文件的作用就告诉ofbiz哪些资源会被加入到类路径里,name的值会是任意字符串,type告诉ofbiz我们将会加载1个组件。在 里 name :- 定义web应用程序的名字。 title :- 显示在浏览器选项卡上的名字。 server :- 使用什么服务。 base-permission :- 需要用户拥有OFBTOOLS的权限才能使用该程序,admin用户有这个权限,所以就没有单独创建新的用户。 location :- 指定服务器默认的根路径。 mount-point :- 用于访问资源的url. 在这个例子中应该是localhos

15、t:8080/practice。 app-bar-display :- 让ofbiz知道是否我想要自己的主件在在主应用程序的选项卡中显示,成为公共ofbiz修饰的一部分。 (二) 创建 webapp创建文件夹webapp,目录结构(hot-deploy/practice/webapp),该文件夹包含了所有webapp想关联的文件以及所创建的component。其中hot-deploy时热部署目录,系统在加载完application和framework后就会自动加载热部署目录里的文件。在创建文件夹practice 在webapp下,目录结构(hot-deploy/practice/webapp/

16、practice),一个component可以有多个app,比如 webapp的创建是遵循的j2ee的标准,在创建文件夹WEB-INF (hot-deploy/practice/webapp/practice/WEB-INF)一个ofbiz的web应用程序需要两个配置文件controller.xml 和 a web.xml。 controller.xml文件告诉ofibz不同的访问者不同的请求,使用哪一个action,转到哪一个页面。 web.xml告诉ofbiz哪些资源是可用的比如数据库和业务逻辑的访问,如何处理web相关的问题,比如欢迎页welcome pages,重定向和错误页。这些xm

17、l可以从其他存在的component中拷贝,重要的值得改变,the localDispatcherName, the mainDecoratorLocation and the webSiteId.比如 webSiteId PRACTICE A unique ID used to look up the WebSite entity to get information about catalogs, etc. localDispatcherName practice A unique name used to identify/recognize the local dispatcher f

18、or the Service Engine mainDecoratorLocation component:/practice/widget/CommonScreens.xml The location of the main-decorator screen to use for this webapp; referred to as a context variable in screen def XML files. 把webSiteId参数的值改为PRACTICE,把mainDecoratorLocation 参数的值改为component:/practice/widget/Commo

19、nScreens.xml这个位置是主要的修饰文件的。 $parameters.mainDecoratorLocation这样做增加了代码的独立性,改变相关路径,就可以和之前使用过的screens一起工作,增加了代码的重用性,把存在的screens用于其他的component。创建一个新文件夹error(hot-deploy/practice/webapp/practice/error)创建error.jsp该文件可以从其他项目中拷贝。在controller.xml文件中指定错误页。在你的组件目录practice 中创建一个widget(hot-deploy/practice/widget).

20、这个目录就包含forms,menus, and screens,用来处理用户界面的。通过命令行输入下面: java -Xmx256M -jar ofbiz.jar (the -Xmx256M 命令仅保证程序有足够的内存)。然后在浏览器上点击这个地址https:/localhost:8443/practice/control/main第四节 做一些复杂的ui(一) 创建decorator在这个应用中为screens 创建decorator。在widget目录中创建一个CommonScreens.xml。这个文件包括公用screens,用来贯穿整个应用。一个公用screen 可以有一个header

21、 和footer 被包含以便任意其它screens 能用它作修饰器也同样有这些项。这些你可以参考example组件中的CommonScreens.xml 文件。CommonScreens.xml 文件中代码将是: (二) 创建一个菜单为此在你的组件的widget目录中创建一个PracticeMenus.xml 文件。这个可以参考example组件的ExampleMenus.xml 文件。 (三) 创建子目录actions在 WEB-INF 目录中创建子目录actions。在这个目录中我们将创建脚本文件。脚本文件是准备数据的。这些文件将是groovy 文件。以前我们是用bsh(beanshell

22、) 文件。这是用来在运行中从数据库中取数据给用户界面的脚本。工作在groovy 中总是要注意导入类和包。仅导入在你文件中使用的。要从Debug类使用方法来放置日志消息,仅从它自己开始做起。因此在actions 目录中创建一个Person.groovy,用来从实体Person取出所有记录。这时实际上做这些只要很少代码 (一行a single line) ,如下context.persons = delegator.findList(Person, null, null, null, null, false);上面的语句将从Person 实体获取所有记录并通过名字persons 放在context

23、。这个列表通过名称person 在ftl 文件中迭代显示记录。现在在practice的web 应用中创建一个名称为Person.ftl的ftl 文件,用来显示从groovy 文件中取来的数据。这时你仅需迭代存在context 中的persons 列表。仅需要如下代码Person.ftl: Some of the people who visited our site are: $person.firstName?if_exists $person.lastName?if_exists 现在在PracticeScreens.xml 文件中创建一个person的screen,也在PracticeM

24、enus.xml 文件中创建一个新的菜单项。PracticeScreens.xml 的新screen 输入将是: 第二章ofbiz中使用groovy第一节groovy是什么Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。Groovy 是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他

25、特性。Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。第二节groovy基础(一) 创建groovy项目New - Project Java Project 创建一个java项目。为了方便管理,建议在source中建两个source文件夹java和groovy,分别用于存储ja

26、va源文件和groovy源文件:1) 添加 Groovy 特性在项目上右击,Groovy Add Groovy Nature,这样会在项目中添加 Groovy Libraries。2) 添加 Groovy 类在项目groovy源文件下右键,New Other Groovy Groovy Class自动生成的源代码如下:publicclass HelloWorld/* param args*/publicstaticvoid main(def args)/TODOAuto-generatedmethodstub我们在main方法中加一句打印语句:println Hello World3) 编译运

27、行groovy类在源文件上右键,Compile Groovy File,然后右键,Run As Groovy ,在控制台中查看运行结果。实际上 groovy 语法的简练还体现在,就算整个文件中只有println Hello World这一句代码(把除这一句以外的语句删除掉吧),程序也照样能够运行。当然,为了说明groovy 其实就是java,你也可以完全按照java 语法来编写HelloWorld类。(二) Groovy语法简介1) 没有类型的java作为动态语言,groovy中所有的变量都是对象(所有对象继承自java.lang.Object),在声明一个变量时,groovy不要求强制类型声

28、明,仅仅要求变量名前使用关键字def(从groovy jsr 1开始,在以前的版本中,甚至连def都不需要)。修改main 方法中的代码:def var=hello worldprintln varprintln var.class你可以看到程序最后输出了var的实际类型为:java.lang.String作为例外,方法参数和循环变量的声明不需要def。2) 不需要的public你可以把main方法前面的public去掉,实际上,groovy中默认的修饰符就是public,所以public修饰符你根本就不需要写,这点跟java不一样。3) 不需要的语句结束符Groovy中没有语句结束符,当然为

29、了与java保持一致性,你也可以使用;号作为语句结束符。在前面的每一句代码后面加上;号结束,程序同样正常运行(为了接受java程序员的顽固习惯)。4) 字符串连接符跟java一样,如果你需要把一个字符串写在多行里,可以使用+号连接字符串。代码可以这样写:def var=hello +world+,groovy!5) 一切皆对象事实上groovy对于对象是什么类型并不关心,一个变量的类型在运行中随时可以改变,一切根据需要而定。如果你赋给它boolean ,那么不管它原来是什么类型,它接受boolean值之后就会自动把类型转变为boolean值。看下面的代码:def var=hello +worl

30、d+,groovy!println var;println var.class;var=1001println var.class输出结果:hello world,groovy!class java.lang.Stringclass java.lang.Integervar这个变量在程序运行中,类型在改变。一开始给它赋值String,它的类型就是String,后面给它赋值Integer,它又转变为Integer。6) 循环删除整个源文件内容,用以下代码替代:def var=hello +world+,groovy!def repeat(val)for(i = 0; i 5; i+)printl

31、n val repeat(var)输出:hello world,groovy!hello world,groovy!hello world,groovy!hello world,groovy!hello world,groovy!注意循环变量i前面没有def。当然也没有java中常见的int,但如果你非要加上int也不会有错,因为从Groovy1.1beta2之后开始(不包括1.1beta2),groovy开始支持java经典的for循环写法。此外,上面的for语句还可以写成:for(i in0.5)这样的结果是一样的。7) String 和 Gstring除了标准的java.lang.Str

32、ing以外(用号括住),groovy还支持Gstring字符串类型(用“号括住)。把上面的for循环中的语句改成:printlnThis is $i:$val运行一下,你就会明白什么是Gstring。8) 范围范围是一系列的值。例如“0.4”表明包含整数 0、1、2、3、4。Groovy 还支持排除范围,“0.4”表示 0、1、2、3。还可以创建字符范围:“a.e”相当于 a、b、c、d、e。“a.e”包括小于 e 的所有值。范围主要在for循环中使用。9) 默认参数值可以为方法指定默认参数值。我们修改repeat方法的定义:def repeat(val,repeat=3)for(i in0.

33、repeat)printlnThis is $i:$val可以看到,repeat方法增加了一个参数repeat(并且给了一个默认值3),用于指定循环次数。当我们不指定第2个参数调用repeat方法时,repeat参数取默认值3。10) 集合Groovy支持最常见的两个java集合:java.util.Collection和java.util.Map。前面所说的范围实际也是集合的一种(java.util.List)。 CollectionGroovy 中这样来定义一个Collection:def collect=a,b,c除了声明时往集合中添加元素外,还可以用以下方式向集合中添加元素:colle

34、ct.add(1);collectcome on;collectcollect.size()=100.0Collection使用类似数组下标的方式进行检索:printlncollectcollect.size()-1printlncollect5groovy支持负索引:printlncollect-1/索引其倒数第1个元素printlncollect-2 /索引其倒数第2个元素Collection支持集合运算:collect=collect+5/在集合中添加元素5printlncollectcollect.size()-1collect=collect-a/在集合中减去元素a(第1个)printlncollect0/现在第1个元素变成b了同样地,你可以往集合中添加另一个集合或删除一个集合:collect=collect-collect0.4/把集合中的前5个元素去掉printlncollect0/现在集合中仅有一个元素,即原来的最后一个元素

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922