`
jiasudu1649
  • 浏览: 713717 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用OFBiz创建一个完整的应用(翻译hello3)

阅读更多

网上的资料太老了
都是04,05年的
ofbiz还是在发展的。
javaeye太垃圾了
只允许jpg,gif,png,bmp格式的图片和zip,rar格式的压缩文件。最多三个附件, 每个文件大小不能大于5M
我贴了n久图都没贴上去。

Building a Complete Application with OFBiz

用OFBiz创建一个完整的应用

在这个指南中,我们将使用OFBiz创建一个完整的应用程序。我们的应用程序将允许用户登录并创建一个他们自己个人信息,他们的爱好。并且查看其他访问这个站点的人和他们的爱好内容等等,这是一个简单的访问站点。

 previous tutorials,

请确认你已经看过前面的所有指南,我将不再重复相同的内容。

定义一个数据模型

第一步是定义数据模型。我们想用户信息和他们的爱好并且查看每个人的所有爱好(或者, 所有的人分享一种爱好)。数据模型是定义人员,爱好,和人员-爱好的联系。

在关系型数据库中,你将定义两个table,其中一个是人员,另一个是爱好。 还有定义他们之间联系的第三个表. 第三个表允许一个人员关联许多爱好, 反之亦然. 你将定义人员和爱好的外键来约束第三个表。

 

OFBiz工作原理也是类似. 你可以定义两个实体,我们将定义helloperson和hellohobby ,和一个连接实体, hellopersonhobby , 并建立了它们之间的关系. 他们之间关系主要是外键约束,而且不需要你自己去定义。(当外键改变,需要改变你的代码) .

注意:我们正在创造一个应用完全独立的数据模型来作说明. 如果我们是在建立一个真正完整的应用, 最好的做法是尽可能利用许多现有的OFBiz框架实体来做,而不是创造自己helloperson ,我们将利用现有的框架OFBiz Party/Person/PartyGroup这三个已有实体.

 

定义数据模型, 在hellocrm下 创建entitydef文件夹

在entitydef /目录内 ,创建entitymodel.xml和entitygroup.xml

helloperson和hellohobby各有一个主键, hellopersonhobby有两个主键, 它用来链接helloperson和hellohobby . 这是好的做法,让你外键关联,使调试容易,避免发生意外。 外键的名称OFBiz由产生.

定义这些实体在另一文件里, entitygroup.xml,这也是很重要的(但很容易忘记) 。 在entitydef /目录,这样OFBiz就会知道哪些数据写入数据库中,以供使用人) :

否则,将实体存在OFBiz的,但是当你真正尝试使用他们,你会得到这个错误:

org.ofbiz.entity.GenericEntityException: Helper name not found for entity HelloPerson

最后,你必须增加这一行到你的ofbiz-component.xml中的 ,这样让OFBiz知道这个实体是应用程序的一个组件

现在启动OFBiz.你将看到你的console.log在(linux下),你在(Windows)的命令行下,通知你你的实体是被加载的。

5336  (main) [            UtilXml.java:242:DEBUG] XML Read 0.0070s: /home/sichen/eclipse/workspace/ofbiz/hot-deploy/hello3/entitydef/entitymodel.xml

5693  (main) [            UtilXml.java:242:DEBUG] XML Read 0.0050s: /home/sichen/eclipse/workspace/ofbiz/hot-deploy/hello3/entitydef/entitygroup.xml

When you go into webtools, you will see the entities:

在你进入webtools,你将看到这些实体。
 

点"All" 在 HelloPerson ,你可以看到他的所有属性:

注意,接下来的每个属性是有java类型和SQL类型. SQL类型是在ramework/entity/filedtype/目录,并视你使用数据库不同而不同, (自带的是 Derby) . 如果有任何数值,它会显示在这个实体的属性.

 

创建例子数据

现在让我们一起创建一些例子数据,为我们的hobbies. 在大多数OFBiz的应用程序中, 我们都将创造一个data/目录内的应用,并创建一个XML文件的例子数据. 让我们看看hobbiesdata.xml :

这个实体引擎XML文件, 是一个标准OFBiz的XML格式的输入及输出数据. 实在是相当简单. 使用名称是实体( " hellohobby "在我们的情况)的标签名称, 使用名称的领域要么属性或作为内标签(见上次值为"葡萄酒"

你的属性可以是属性的数值或内部的标签的值, 如果你有很长的数值在CDATA段落里面是最好的. 另外, 主键不须大写或隔着_ , 但在其他OFBiz的应用程序这是一个规范.
 

现在你准备加载例子数据. 到Web Tools主界面,你会看到链接的" XML Import " . 点击" XML Import " ,并于下一个画面,它会提示你文件夹的名称, 在你的OFBiz中的路径. 我通常不点击任何复选框和仅仅是" Import " . 如果你是成功的, 同一个介面底部会告诉你,有多少数据添加:

   1.

如果你的导入失败了,仔细地阅读错误信息从你的console.log文件。 它是 通常 是这些原因之一:

   1. 你使用了为一个主键是太长的数值。 OFbiz “id-ne”是Java String,但是在SQL中他是20-char的VARCHAR。
   2. 你丢失了一个必需的主键。
   3. 你设法插入一个属性将违反外键约束。

如果你仔细地读了日志,你能明白(GenericValue) OFBiz设法创建的数值,并且数据库反馈的错误信息是什么。 它也许给你一个违反了外键约束并且有些隐蔽的外键的名字

你在Web Tools 主页也许注意了“XML Export”链接。 这个链接可以为你产成一个XML文件。

现在去“Entity Maintenance”(实体维护),在HelloHobby旁边点击“所有”,你可以看到插入的数值:

除了增加你的属性和数据之外,当你的数据被创建并且被更新时,OFBiz自动地创建了时间戳,这是为了横跨OFBiz多个事例同步数据。

最后,如果你增加这个命令到你的ofbiz-component.xml文件, 在安装过程期间OFBiz可以自动地安装你的例子数据: 

OFbiz实际上让你定义数据是否有“例子数据”,这样为你的app可以展示,例子数据仅仅是展示用的。
创建业务逻辑

即然我们已经定义了数据模型,我们可以写一种简单的应用以delegator直接地访问实体。 这是OFBiz应用程序的标准操作,但是,做为业务逻辑的分层:新建,更新和删除。 delegator直接地为查找数据使用,如更加复杂的查寻。

创建业务逻辑的过程是有二步。 首先,你定义了通用的业务逻辑在 XML文件(使用class 和 方法 或者 脚本),来告诉OFBiz业务逻辑引擎你的参数和位置,第二,你实现服务可以用java,OFBiz minilang,或者另一种脚本语言

业务逻辑通常定义在一个servicedef/目录里面 ,并且包括一个或更多services.xml文件。 这我们的services.xml 文件:

注意services.xml是参考实体执行。同时直接地与 标签执行。 这些自动属性标签保存你时间并且使你的应用更加容易维护。

你在你的ofbiz-component.xml也会需要参考service资源。 另外,你必须创建   并告诉它在哪里的ofbiz-component.xml装载apps。 这就是为什么我们的ofbiz-component文件看起来相似,在增加classpaths以后,实体体定义、 service定义和例子数据:

现在它是否看起来和其他ofbiz-component.xml很相似?

现在创建services。A Java service流行的写法是在你的应用的src/目录里面被写的: 一个公共的class 有两个参数的公开静态方法, DispatchContext为得到一个对象是你输入参量的delegators, dispatchers, locale, and security,和称上下文的 map并且退回结果map:

Java services也将需要编译,需要适当的classpaths的知识为其他OFBiz apps。 这可以使用ant 并且build.xml构建脚本,当然你可以从另一种应用通常复制。 它是在所有OFBiz应用和框架中一个相当长的标准文件,因此我这里不会包括它。

当写你的service和创造build.xml脚本,你能建立你的象这样的Javaservice:

sichen@linux:~/eclipse/workspace/ofbiz/hot-deploy/hello3> ant

Buildfile: build.xml

 

init:

 

clean-lib:

   [delete] Deleting directory /home/sichen/eclipse/workspace/ofbiz/hot-deploy/hello3/build/lib

 

prepare:

    [mkdir] Created dir: /home/sichen/eclipse/workspace/ofbiz/hot-deploy/hello3/build/classes

    [mkdir] Created dir: /home/sichen/eclipse/workspace/ofbiz/hot-deploy/hello3/build/lib

 

classpath:

 

classes:

    [javac] Compiling 1 source file to /home/sichen/eclipse/workspace/ofbiz/hot-deploy/hello3/build/classes

 

jar:

      [jar] Building jar: /home/sichen/eclipse/workspace/ofbiz/hot-deploy/hello3/build/lib/ofbiz-party.jar

 

BUILD SUCCESSFUL

Total time: 2 seconds

构建过程基本上采取了在src/目录的所有您的文件,编译了他们并且把他们放入构建或lib目录。

Minilang比较起来是简单的。 简单的minilang service在script/目录里面并且是一个XML文件。 由于它是专门为共同的OFBiz应用任务设计,例如 查寻数据,存放数据,检查premissions,并且与现有的实体一起使用,并且执行业务逻辑,它使那些任务工作非常容易:

最后,测试它,重新启动OFBiz装载所有新的定义在ofbiz-component.xml和services.xml。 然后,打开beanshell 窗口并且测试我们的service (注意: 您首先应该 下载bshcontainer.bsh 并且把它放入在你的ofbiz/目录)

这里, beanshell称执行service的服务调度员,他们是成功的,因此正确的数据被创建。 (当然,它实际上采取了大约六次尝试,但我不会和你谈论细节使你不耐烦。)

那么现在你创造了数据模型和service为他们。 下一个步骤将放他们入Web应用程序。

 

分享到:
评论

相关推荐

    ofbiz一个完整例子

    ofbiz一个完整例子,ofbiz学习实战例子.

    ofbiz电商框架hello主题文件定制

    与hello资源结合使用,这是一个html5后台管理的模块,但实现了ofbiz主题针对具体应用的深度定制方法,里面只有一个页面,但基本思路已经包括在里面,希望大家能不断挖掘

    ofbiz的helloworld例子

    ofbiz的helloworld例子,网上不好找到比较全的,这个比较全,可以了解ofbiz的整体架构和运行机制。

    ofbiz 部署一个新网站

    ofbiz 部署一个新网站,一个简单的方法利用ofbiz去建立一个新网站

    Ofbiz 9 :Hello World

    NULL 博文链接:https://lmzf.iteye.com/blog/575969

    ofbiz电商框架hello与皮肤定制实例

    ofbiz电商框架hello与皮肤定制实例,实现自定义自己的所有主题,包括菜单与内容区域,

    Apache+OFBiz+开发初学者指南

    OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。...

    一个简单的ofbiz的实例

    别人写的一个ofbiz的一个简单的例子,希望对大家有用,顺便挣点儿积分!

    ofbiz应用安装包(win版)

    使用批处理(包含vbs)和winrar自解压方法制作ofbiz web应用安装包。 包括:自动安装mysql服务,设置ofbiz启动所需jre环境,生成桌面启动ofbiz server的快捷方式。 包含文件:winrar自解压启动文件install.bat及...

    ofbiz 入门+增删改查+实体

    ofbiz入门图文讲解,包括入门helloworld 和使用ofbiz 新建实体 操作数据库对实体增删改查

    OFBIZ快速入门OFBIZ快速入门

    OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门OFBIZ快速入门

    OFBiz 教程

    ofbiz 官网文档翻译 ,按照此文档里面的步骤,可以安全快速的编译自己的第一个小模块 "Hello World",一开始是很抵触的,但是学着学着发现其实框架道理是相似的,为了将代码解耦,每个框架都有自己的独特解耦之道和...

    原创 Ofbiz 入门教程

    像 Tomcat, Ant, BeanShell, Jboss 等,构建了一个强大的系统平台,Ofbiz 已经完成了大部分商务类软件系统 都需要的部件,像用户认证、工作流、商务规则处理等,Ofbiz 的核心技术在于 Entity Engine,其他的组件基本...

    Apache+OFBiz+开发初学者指南.chm

    OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。...

    ofbiz10.04表结构(包含自己翻译)

    ofbiz10.04表结构(包含自己翻译),以前发现网上很难找,自己分享下

    OFbiz实体引擎指南

    OFBiz是一个非常著名的电子商务平台,是一个非常著名的开源项目,提供了创建基于最新J2EE/XML规范和技术标准,构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类WEB应用系统的框架。...

Global site tag (gtag.js) - Google Analytics