OFBiz快速入门

Stella981
• 阅读 951

OFBiz快速入门

原文URL:https://cwiki.apache.org/OFBIZ/ofbiz-tutorial-a-beginners-development-guide.html

一个大厦能够建多高,是由其基础决定的;一个软件能够’容纳‘多少功能,是由其架构决定的。

一个优秀的架构能够容许很多工程师协同合作,长期不断累积功能;反之,一个脆弱的架构则捆绑住工程师的手脚,每添加一个功能都是困难重重,涉及到很多人的交互,效率非常低下,长期维护也是非常麻烦,代价很高,到一定程度就遇到天花板,无法再加入功能了。

OFBiz(Open For Business)

现在关于OFBiz的所有相关的信息,大部分都是英文的,可能,在当下的IT江湖里,OFBiz还没有引起ITer或IT公司的广泛关注,也只是部分群体在学习与研究。当然,OFBiz的发展也是想当得快的,毕竟每天都有人commit代码,但是,版本的频繁发布,如果不能前后维持一个统一的技术架构和一个一致的编程开发模式,就会导致基于某些版本的OFBiz的系统应用不能很好的升级,留下了维护与移植的痛苦,其次就是现在的OFBiz框架本身就灰常的膨大,如果是一般的小型应用,真的有点杀鸡用牛刀的感觉了,不过由于OFBiz提供了一种可插拔的机制,也可以剔除一些不相关的应用。可能也是当前没有什么人愿意花时间成本去研究的原因!(当然,原因肯定是多方面的!也不用去细究了!一切还是得源自自我爱好!要不然,都是胡扯!)

下面的文字,都是自己用烂掉牙的英语翻译能力翻译的,定会存在不少纰漏与错误!请大伙们多多指点了!有些地方,如果自己找不到很好的中文表述,我会加上英语原文的!

这个教程被分为6个部分,也是一个由浅入深的过程。

第一部分

NOTE1:这里的代码很多都会来自Example组件。你会经常找到有关最新的OFBiz代码在Example组件中。无论在什么时候你为这个应用去看一些简单代码,都应该应用Example组件,这个能帮助你在OFBiz上开发的更好!每当有新特性出现,都会被优先加到Example组件中作为参考范例。所以,想在OFBiz基础框架上进行开发应用时,应该多关注Example组件。了解Example组件,能更好的了解OFBiz的新特性和OFBiz的编程模型是什么。

NOTE2:不要从其他组件拷贝任何文件,这样做,文件的版本号也会被遗弃拷贝的。始终去创建一个新文件,真的要求了,可以从文件中拷贝些内容。也可以对无用的代码有很强的意识。

1.创建第一个名为“practice”的应用程序

1.1 在OFBiz的hot-deploy目录中,创建一个子目录,命名为:practice(hot-deploy/practice),所创建的目录名称应该匹配OFBiz中新组件的名称。

【注意】要记住,所有客户化的开发都是尽可以被部署到hot-delopy目录中。

1.2 在(hot-deploy/practice)目录中创建名称为ofbiz-component.xml的文件。并加入以下的内容:

<ofbiz-component name="practice"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">

<webapp name="practice"

title="Practice"

server="default-server"

base-permission="OFBTOOLS"

location="webapp/practice"

mount-point="/practice"

app-bar-display="false"/>

很明显,这个文件的作用就是我们创建的(practice)应用集成到OFBiz的入口点。这个文件是用来描述OFBiz框架集中某个应用的描述文件。那么,我们来了解一下这个文件里各个元素的含义吧。

name属性可以是任意的字符串,type属性就是要告诉OFBiz,我们将要装载一个组件到OFBiz容器中。

标签中,拥有很多不同的属性,其含义如下:

name:定义我们新建的web应用名称(应该是唯一的不与其他的应用名称有冲突)

title:该应用的标题,会被显示在顶部导航条中。

server:让OFBiz知道使用什么服务器

base-premission:要求用户必须要具有OFBTOOLS的权限才能使用这个应用。‘admin’管理员一直都有这个权限,我们就不必去创建任何新用户了。

location:表示服务器默认的根目录的位置路径。

mount-point:访问这个资源的URL路径。在本机上,就是 localhost:8080/practice

app-bar-display:如果为TRUE,表示我们希望组件显示在主应用的标签。也是共同OFBiz的装饰器的一部分。

目前为止,应用的第一步已经弄好!至少,在上面,你创建的内容已经可以被OFBiz加载了!下面的就是按照Java EE规范来创建WEB应用的目录结构了!

2.创建Web应用程序

在OFBiz中,创建一个WEB APP的目录结构是完全符合Java EE的标准规范的!并没有手痒,自己另起灶炉!这一点,可以说,如果在日后不想把应用程序搭建在OFBiz之上,移植也是很方便!

2.1 在practice组件中创建目录(webapp),完整路径是:hot-deploy/practice/webapp

这个目录包含了所有与webapp相关的文件。

2.2 在webapp中创建子目录(practice),这个也是你将要开发的webapp名称。(hot-deploy/practice/webapp/practice)(有点不流利的翻译,杯具)。在OFBiz中,一个组件可以被多个webapp应用连接。e.g. (marketing)组件就有两个webapps,分别是(marking)和(sfa)。webapp都是依据Java EE webapp 标准来创建的。

PS:如果一个组件中有两个可连接的webapps,那么是如何配置的呢?后面分析。

2.3 创建一个(WEB-INF)目录在webapp中,完整路径是:hot-deploy/practice/webapp/practice/WEB-INF

当然,既然是基于OFBiz上开发JavaEE APPs,就会与标准的有点不一样的,但并不是那种结构上的改变,而是类似要在标准的JavaEE应用中加入日志系统等类似,只是需要配置两个文件,就可以标识,你现在的应用是一个OFBiz webapp。两个文件分别是:controller.xml 和 web.xml

controller.xml

告诉OFBiz如何去处理来自visitors的requests。采取什么的actions并呈现(render)什么页面。

web.xml

告诉OFBiz哪些资源(数据库和业务逻辑访问)可用于此webapp以及如何处理web相关问题,如欢迎页面,重定向和错误页面。

2.4 web.xml的内容(符合Java EE的webapp规范)。可以从/framework/example组件中拷贝。我们只需要修改其中一些重要的值,如、localDispatcherName、mainDecoratorLocation和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 for   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.

暂停……

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
OFBiz 快速入门——续二
OFBiz快速入门——续二2011年03月17日星期四00:03OFBiz 快速入门2.5 创建一个文件,取名为(controller.xml),被OFBiz webapp控制器使用的。在没有额外增加功能时,这个文件内容非常的小与简单,如下:<?xml version"1.0" encoding"UTF8"?<siteco
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这