参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guide

1 Creating Custom Entity

新实体的创建你可以再参考 example 组件,为此你可以看下 example 组件的 entitymodel.xml 文件。你可以按下列步骤创建新的实体:

a. 在 hot-deploy/practice/  下创建一个 entitydef 的子目录。

b. 创建一个 entitymodel.xml 文件。这个文件包括你想定义的实体定义。

c. 要装载定义,你需要在 ofbiz-component.xml 文件中定义一个条目,如下:

<entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>

可以看出必须重启服务器才能让那些修改生效。
   详细请参考:http://docs.ofbiz.org/display/OFBTECH/General+Entity+Overview.
   实际应用中将很少去定义新的实体,因为在 OFBiz 已经存在对业务处理有很大作用的实体定义。虽然你可能感觉在某些地方要给存在的实体增加更多字段,你能如何做那些呢?下一步将告诉你方法,为你的客户化需要扩展一个实体。
   先前我们通常在相同目录中需要一个或更多 entitygroup.xml 文件,这个不再需要,因为代码已经检入到 trunk 中(because code is checked in to the trunk for this)。

2 Extending an Existing OOTB Entity

是的,你可以扩展已存在的实体满足你客户化的需要。按下列方式完成:

a. 在你的客户化应用的 entitydef/entitymodel.xml 文件中按以下方式扩展你的实体。

<extend-entity entity-name="">
<field name="" type=""/>
</extend-entity>

作为例子,你可以参考 party 组件的 entitymodel.xml 文件。

这是一个最简单的表单,它也能变得更复杂,增加一个或更多字段到已存在的实体中,这个依赖于你想要进行客户化需求的字段。这儿你也能定义与其它实体的关系。但在做这些之前,你得特别地搜索下,可能你要加的字段作为其它目的已经存在。也要去进行数据模型的扩展学习然后再做。

实体引擎配置可参考:Entity Engine Configuration Guide。

3 Preparing Data For Custom Application

你的 practice 应用准备数据可按下列步骤:

a. 在 practice 创建一个目录"data",在这创建一个 PracticeData.xml 文件。

b. 我们给一个用户创建数据,我必须为一个会员按指定顺序准备好,如下:

<?xml version="1.0" encoding="UTF-8"?>
<entity-engine-xml>
<Party partyId="DemoUser" partyTypeId="PERSON"/>
<Person partyId="DemoUser" firstName="Practice" lastName="Person"/>
<PartyRole partyId="DemoUser" roleTypeId="VISITOR"/>
<ContactMech contactMechId="5000" contactMechTypeId="EMAIL_ADDRESS" infoString="practice.person@gmail.com"/>
<PartyContactMech partyId="DemoUser" contactMechId="5000" fromDate="2001-05-13 00:00:00.000" allowSolicitation="Y"/>
<PartyContactMechPurpose partyId="DemoUser" contactMechId="5000" contactMechPurposeTypeId="PRIMARY_EMAIL" fromDate="2001-05-13 00:00:00.000"/>
</entity-engine-xml>

目的是创建一个带有VISITOR 角色的个人会员,然后为那个会员创建一个电子邮件地址作为主要的电子邮件地址。

更多信息请参考:Handling of External data#Preparexmlfile

c. 现在也可以添加网站数据,如下:

<WebSite webSiteId="PRACTICE" siteName="Practice Application" visualThemeSetId="BACKOFFICE"/>

d. This data is used for theme setup of a specific application and logged in user can change his theme for the back office application.

e. 现在我们需要在ofbiz-component.xml 中加入一个如下条目:

<entity-resource type="data" reader-name="demo" loader="main" location="data/PracticeData.xml"/>

在完成这些后,你运行命令ant run-install 会导入demo 数据,从这个文件的数据将作为demo 数据导入。一旦你
启动服务器,在practice 应用的Person 表单里你能看到为个人增加的记录,或者你可以访问
https://localhost:8443/webtools/control/entitymaint ,查找每一个实体检查这些记录是否加入到数据库中。

OFBiz进阶之HelloWorld(五)创建新实体的更多相关文章

  1. WordPress插件制作教程(五): 创建新的数据表

    上一篇讲解了怎样将数据保存到数据库,今天为大家讲解创建新的数据表,也就是说当我们激活插件的时候,会在该数据库下面创建一个新的数据表出来.原理很简单,激活插件的时候运行创建数据库的代码.看下面代码: & ...

  2. OFBiz进阶之HelloWorld(二)创建热部署模块

    参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guid ...

  3. OFBiz进阶之HelloWorld(一)创建热部署模块

    创建热部署模块 参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Developm ...

  4. OFBiz进阶之HelloWorld(三)CRUD操作

    参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guid ...

  5. EF5&MVC4 学习1、创建新的Contoso University Application,并创建Model Class 生成对应的database

    参考:http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/creating-an-entity-framewo ...

  6. Python进阶(三十五)-Fiddler命令行和HTTP断点调试

    Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令   上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的se ...

  7. 重装windows7企业版时提示“安装程序无法创建新的系统分区,也无法定位现有系统

    第一步:把win7镜像发在你电脑的非系统盘的其他硬盘上. 第二步:重启机器,通过U 盘启动.进入win pe系统,关于这点我说一下,有些朋友也许不知道什么叫win pe系统,这个win pe 究竟有什 ...

  8. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  9. 解决Win7系统安装时“安装程序无法定位现有 系统分区,也无法创建新的系统分区”提示

    第一步:U盘启动装系统时,格式化主分区的内容后出现上面的问题 第二步:重启机器,通过U 盘启动.进入win pe系统. 第三步:把windows 7的ISO镜像解压到电脑的非系统盘的其他硬盘上.如D: ...

随机推荐

  1. 探讨PHP页面跳转几种实现技巧

    PHP被许多程序员用来开发WEB的首选语言.在实际开发中,网站的各项功能都可以通过PHP语言的编写来满足,比如PHP页面跳转这一方法. 探讨PHP变量解析顺序如何获取提交数据 深入解读PHP运行机制 ...

  2. python基础语法小笔记

    这几天看着python,然后就记下一些自己觉得需要注意以下的基础语法吧! 如下: for i in range(0,100)表示从0到99,不包括后边界 单引号(')和双引号("" ...

  3. LeetCode 203

    Remove Linked List Elements Remove all elements from a linked list of integers that have value val. ...

  4. 【优先队列】【最近连STL都写不出来了/(ㄒoㄒ)/~~】hdu_5360/多校#6_1008

    题意:就是让你写出一个邀请朋友的顺序,朋友答应一起出去玩的条件是除他以外所有同意出去玩的人数要在[ l[i], r[i] ]范围内,否则他就不答应. 分析:这题比赛的时候想麻烦了,其实只要在左边界满足 ...

  5. hdu 2665 划分树

    思路:裸的划分树 #include<iostream> #include<algorithm> #include<cstring> #include<cstd ...

  6. nginx限制ip请求次数 以及并发次数

    如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见 ...

  7. 在Ubuntu下配置Apache多域名服务器

    1. 目标: 在本机 实现访问不同域名 可以访问不同的目录. 即:访问a.com 进入 /var/www/a 目录下的程序,访问b.com 进入/var/www/b目录下的程序. 2.遇到的问题: / ...

  8. linux c/c++ IP字符串转换成可比较大小的数字

    由www.169it.com搜集整理 IP字符串转换成可比较大小的数字,具体代码如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include "stdio. ...

  9. iOS动画——文字晃动

    比如密码错误提示,需要文字左右晃动几次,以起到警示的作用. 为了调用使用方便,做一个分类.代码如下: .h文件 #import <QuartzCore/QuartzCore.h> @int ...

  10. javascript笔记——正则表达式学习笔记

    indexof 查找 substring 获取字符串 [) charAt 获取某个字符 split 分割字符串,获得数组 \s:空格 \S:非空格 \d:数字 \D:非数字 \w:字符 \W:非字符 ...