用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应用程序。

 

你可能感兴趣的:(eclipse,linux,xml,脚本,领域模型)