- 浏览: 724593 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
一剪梅:
关于您对于 hasRolePermission 用法的解释, ...
OFBIZ安全性技术(翻译) -
沈寅麟:
数据模型资源手册卷3中文版出版了 -
donaldjohn:
恭喜恭喜, 预祝大卖
数据模型资源手册卷3中文版出版了 -
成大大的:
OFBiz电商实战百度网盘下载:http://pan.baid ...
OFBiz入门实训教程 -
成大大的:
OFBiz电商实战百度网盘下载:http://pan.baid ...
OFBiz促销码生成解释
ofbiz中参考"The data model resource toolkit" volumn1,volumn2 及一些CRM、ERP软件中的设计方法,在整个项目的不同子系统中进行data model的设计。在没有看data model之前,我认为ofbiz的entity engine其实不是一个非常好的的设计,他只是起到一层封装的作用而已,没有对以往的直接写sql 语句的做法有很大的提高,因为它大量的使用了map,而这在编码阶段是很容易出错的,许多错误只有到运行时才能发现,给编码人员调试工作带来了很多麻烦。 在这方面相比hibernate等or mapping的工具,有着比较大的劣势。而且他的查询做的也不够好。
但是我想entity engine可能与data model的设计结合可能综合来看会带来很多的好处。
我们以往的数据库设计很多都是基于三范式来进行的,更多从项目出发,根据实际情况来设计,对于扩展性(通过增加字段或表)和一些需要考虑的与业务相关的情 况考虑不够。ofbiz的data model设计时就融入了一些oo的思想,对项目而言未必是合适,而且带来一定的编码工作量的增大,并且在查询和统计方面可能会复杂很多,但是参考 ofbiz的data model设计,可以为我们的基于业务的复用的思考带来一些新的思路。以技术平台的复用加上业务上的复用,把业务的复用建立在扎实的技术平台之上,这是我 们思考已久的事情。而ofbiz3。0的新版本就是这样做的。
data model的设计也可以用很多的pattern来表示,以下对其中几个做一个简单的介绍。
Extensibility Pattern
这是使用比较多的一个,在很多子系统中使用,主要解决了设计时和运行时的扩展性问题。对于一个实体表,我们可能需要另外三到四张相关的表。我们用 Entity来表示实体表,那我们还需要EntityClass (optional) EntityType, EntityAttribute, and EntityTypeAttr。他们的关系如下:
我们假设部门内部设计一个管理系统,管理 部门内部正在从事的项目,以项目为例,图中的entity即为项目表,比如有项目编号,项目名称,等字段;entitytype表表示产品的类型,比如软 件项目(SOFTWARE_PROJ),硬件项目(HARDWARE_PROJ)还是咨询服务(SERVICE_PROJ)。那么如果一个项目只有一种类 型,那么entity与entitytype就是一对一的关系,如果一个项目有几个类型,比如金交所同时负责硬件和软件,那么增加entityclass 来表示一对多的关系,所以说entityclass是可选的。
对于不同类型,可能有一些公共的属性,我们可以设计为 entitytype的字段,对于不同类型可能差异较大,我们需要记录不同的属性的时候,我们注意到entitytype中有一个HAS_TABLE的字 段,表示此entitytype记录是否有专门的表来记录类型,如果某记录的HAS_TABLE字段为"Y",则有一个表名与Entitytype中的这 条记录的Type字段名称一样的表,表示此类型的信息。比如entitytype中一条记录,insert into table entitytype(seq,type,has_table) values (1,"HARDWARE_PROJ","Y"screen.width/2)this.width=screen.width/2" vspace=2 border=0>,则表示另外有一张表名为HARDWARE_PROJ的表来记录此类型的具体信息。我们可以看到entitytype中还有一个 parenttype,用来表示继承关系,比如我们可以将软件项目分为交易类项目,银行类项目,则他们的parenttype都是软件项目。
entityAttr表就比较好理解,表示对entity的扩展,一个attr就可以代表entity中的一个column,比如一些attr只有很少的entity中有,而且也不常用,再如一些设计时没有考虑到的字段,就可以通过这种方式做扩展。
entitytypeattr就是表示对entitytype的扩展。
party patten
基于上面的Extensibility Pattern,我们可以来考虑party pattern的设计,这里的party是指参与者。我们知道目前许多企业都在做向客户中心的转移。那么统一的客户信息就非常必要。比如对于一个大的机构 而言,他的供应商,同样也是自己的客户,比如ibm是我们的供应商,但是我们也可以做一些他们的外包的项目,或者未来我们可以为ibm做一些内部项目,这 样他们就成了我们的客户。对于party可以分为个人(Person)与组织(Organization)两个类型。不同party间的关系也是错综复杂 的,我们如何来定义一个清晰模型就变得越来越重要。如果记录在不同的表中,可能会给未来的分析决策带来不便。
在公司内部,各员工间、不同部门间、以及各角色之间的关系使用传统的方式也变得难以定义。
party 的设计目前在不同的数据建模的书中都不相同,但都是作为一个设计的重点。在ofbiz中对party的定义相对简单。由Party PartyClassification PartyClassificationType PartyType PartyAttribute PartyTypeAttr PartyRole RoleType RoleTypeAttr PartyRelationship PriorityType PartyRelationshipType PartyDataObject PartyGroup Person等表构成(注:在文档中还有Customer表,但查实际的entity 定义中没有,PartyGroup文档中没有列出)。
参照刚才的Extensibility Pattern,根据名称我们也可以知道每张表大致的意思。
Party中定义所有的Party,所有的参与者在party表中定义,无论客户、供应商、员工或是其他。
partytype中分解类型,PartyGroup和Person是PartyType表中Has_Table=''Y''的两条记录。
PartyRole中定义Party具有的角色,角色在RoleType中定义。
还有一点需要注意,对应的权限设计,每个party可以有多个UserLogin帐户,UserLogin与Party是多对一的关系。
小结
以往在技术架构上考虑的多,确实业务上抽象比较困难,通过在表结构设计方面的一些考虑,可能能为我们在业务上复用带来一些思路。而我确实听说一些国内公司的产品能够实现技术框架、技术组件、业务组件、业务流程几个级别的复用,相信我们也可以做到。
-------------------------------
参考文档
ofbiz文档:/website/entity-overview.html
ofbiz data model
[url]( ⊙o⊙ )哇[/url]
但是我想entity engine可能与data model的设计结合可能综合来看会带来很多的好处。
我们以往的数据库设计很多都是基于三范式来进行的,更多从项目出发,根据实际情况来设计,对于扩展性(通过增加字段或表)和一些需要考虑的与业务相关的情 况考虑不够。ofbiz的data model设计时就融入了一些oo的思想,对项目而言未必是合适,而且带来一定的编码工作量的增大,并且在查询和统计方面可能会复杂很多,但是参考 ofbiz的data model设计,可以为我们的基于业务的复用的思考带来一些新的思路。以技术平台的复用加上业务上的复用,把业务的复用建立在扎实的技术平台之上,这是我 们思考已久的事情。而ofbiz3。0的新版本就是这样做的。
data model的设计也可以用很多的pattern来表示,以下对其中几个做一个简单的介绍。
Extensibility Pattern
这是使用比较多的一个,在很多子系统中使用,主要解决了设计时和运行时的扩展性问题。对于一个实体表,我们可能需要另外三到四张相关的表。我们用 Entity来表示实体表,那我们还需要EntityClass (optional) EntityType, EntityAttribute, and EntityTypeAttr。他们的关系如下:
我们假设部门内部设计一个管理系统,管理 部门内部正在从事的项目,以项目为例,图中的entity即为项目表,比如有项目编号,项目名称,等字段;entitytype表表示产品的类型,比如软 件项目(SOFTWARE_PROJ),硬件项目(HARDWARE_PROJ)还是咨询服务(SERVICE_PROJ)。那么如果一个项目只有一种类 型,那么entity与entitytype就是一对一的关系,如果一个项目有几个类型,比如金交所同时负责硬件和软件,那么增加entityclass 来表示一对多的关系,所以说entityclass是可选的。
对于不同类型,可能有一些公共的属性,我们可以设计为 entitytype的字段,对于不同类型可能差异较大,我们需要记录不同的属性的时候,我们注意到entitytype中有一个HAS_TABLE的字 段,表示此entitytype记录是否有专门的表来记录类型,如果某记录的HAS_TABLE字段为"Y",则有一个表名与Entitytype中的这 条记录的Type字段名称一样的表,表示此类型的信息。比如entitytype中一条记录,insert into table entitytype(seq,type,has_table) values (1,"HARDWARE_PROJ","Y"screen.width/2)this.width=screen.width/2" vspace=2 border=0>,则表示另外有一张表名为HARDWARE_PROJ的表来记录此类型的具体信息。我们可以看到entitytype中还有一个 parenttype,用来表示继承关系,比如我们可以将软件项目分为交易类项目,银行类项目,则他们的parenttype都是软件项目。
entityAttr表就比较好理解,表示对entity的扩展,一个attr就可以代表entity中的一个column,比如一些attr只有很少的entity中有,而且也不常用,再如一些设计时没有考虑到的字段,就可以通过这种方式做扩展。
entitytypeattr就是表示对entitytype的扩展。
party patten
基于上面的Extensibility Pattern,我们可以来考虑party pattern的设计,这里的party是指参与者。我们知道目前许多企业都在做向客户中心的转移。那么统一的客户信息就非常必要。比如对于一个大的机构 而言,他的供应商,同样也是自己的客户,比如ibm是我们的供应商,但是我们也可以做一些他们的外包的项目,或者未来我们可以为ibm做一些内部项目,这 样他们就成了我们的客户。对于party可以分为个人(Person)与组织(Organization)两个类型。不同party间的关系也是错综复杂 的,我们如何来定义一个清晰模型就变得越来越重要。如果记录在不同的表中,可能会给未来的分析决策带来不便。
在公司内部,各员工间、不同部门间、以及各角色之间的关系使用传统的方式也变得难以定义。
party 的设计目前在不同的数据建模的书中都不相同,但都是作为一个设计的重点。在ofbiz中对party的定义相对简单。由Party PartyClassification PartyClassificationType PartyType PartyAttribute PartyTypeAttr PartyRole RoleType RoleTypeAttr PartyRelationship PriorityType PartyRelationshipType PartyDataObject PartyGroup Person等表构成(注:在文档中还有Customer表,但查实际的entity 定义中没有,PartyGroup文档中没有列出)。
参照刚才的Extensibility Pattern,根据名称我们也可以知道每张表大致的意思。
Party中定义所有的Party,所有的参与者在party表中定义,无论客户、供应商、员工或是其他。
partytype中分解类型,PartyGroup和Person是PartyType表中Has_Table=''Y''的两条记录。
PartyRole中定义Party具有的角色,角色在RoleType中定义。
还有一点需要注意,对应的权限设计,每个party可以有多个UserLogin帐户,UserLogin与Party是多对一的关系。
小结
以往在技术架构上考虑的多,确实业务上抽象比较困难,通过在表结构设计方面的一些考虑,可能能为我们在业务上复用带来一些思路。而我确实听说一些国内公司的产品能够实现技术框架、技术组件、业务组件、业务流程几个级别的复用,相信我们也可以做到。
-------------------------------
参考文档
ofbiz文档:/website/entity-overview.html
ofbiz data model
评论
4 楼
javajdbc
2009-12-03
<A HREF="http://www.baidu.com">百度</A> 很少有ofbiz资料,谢谢
3 楼
javajdbc
2009-12-03
javaeye 写道
文字
2 楼
javajdbc
2009-12-03
引用
ofbiz
[url]( ⊙o⊙ )哇[/url]
1 楼
lfrick
2008-06-18
谢谢。现在也正在研究ofbiz。
发表评论
-
OFBiz抽取实体引擎和服务引擎思路(1)
2020-03-31 00:39 615# OFBiz抽取实体引擎和服务引擎思路(1) ... -
minilang开发日志书写规范
2019-01-02 10:34 564minilang书写日志5步法 任何一个xml方法中必须 ... -
自动化配置界面表定义思路1.0
2018-11-24 23:21 776总表 path 唯一编码 tableName 表名 ... -
OFBiz前端VUE组件规划
2018-11-10 10:51 1090iasudu.iteye.com 编 号 : ____ ... -
增强OFBiz通用查询方法思路
2018-11-09 17:15 755增强OFBiz通用查询方法思路 <se ... -
OFBiz前后端分离项目代码规范建议2018版
2018-05-11 09:43 1423OFBiz前后端分离项目代码规范建议__build2018 ... -
前端脚手架使用指导
2018-03-02 14:44 7571 安装nodejs https://nodejs.or ... -
RestEventHandler
2018-02-01 23:37 5/**************************** ... -
数据模型资源手册卷3中文版出版了
2017-02-18 11:58 2027我翻译的数据模型资源手册卷3出版了 -
OFBiz促销码生成解释
2014-10-07 22:07 1581OFBiz 我的购物车 输入固定的邀请码实现优惠促销 需要解 ... -
电商基本页面
2014-09-18 20:49 1750<!--StartFragment--> ... -
OFBiz入门实训教程
2014-07-14 14:28 3020加速度 15000850008 大家好,为了ofbiz的 ... -
创建OFBiz的jQuery Mobile入门页面
2014-06-13 14:21 1828jQuery Mobile 框架是一套 ... -
店铺研究
2014-05-23 23:11 1131店铺权限研究,规划如下权限: 分店库存管理权限 分店进货权限 ... -
15天用OFBiz做一个商城管理后台和店铺管理后台
2014-05-03 20:33 4076仅仅是记录一些弟兄们的工作经历。没有吹嘘使用OFBiz使用效率 ... -
一个朋友做OFBiz Crud遇到的问题
2014-01-02 12:55 1784Crud 遇到的问题 问题1:在myeclipse中开发的of ... -
OFBiz的Cache研究
2013-12-30 14:35 2400任何一个cache对象的配置属性都可以在cache.prope ... -
OFBiz同步设置说明和示例
2013-11-23 02:03 1802同步设置说明和示例 使 ... -
OFBiz的Axis2
2013-11-16 23:43 1226很多人都对Axis2的封装和调用苦恼。 今天再次深入精读OFB ... -
How to create a new component
2013-09-21 23:31 1011How to create a new component ...
相关推荐
Apache OFBiz Datamodel 2
### Apache OFBiz Datamodel 4 知识点详解 #### 一、Apache OFBiz Datamodel 概述 Apache OFBiz 是一个开源的企业级电子商务框架,它提供了完整的业务流程管理、内容管理和电子交易处理功能。OFBiz Datamodel 作为...
### Apache OFBiz Datamodel 3 #### 概述 Apache OFBiz Datamodel 3 是一个高级的数据模型系统,主要用于管理电子商务、供应链管理等业务场景下的数据流与数据结构。OFBiz 本身是一款开源的企业级应用框架及应用...
在Ofbiz中,数据库模型扮演着至关重要的角色,它是系统数据结构的基础,定义了所有业务实体及其相互关系。 数据库模型是Ofbiz的核心组成部分,它描述了系统中的各种实体(如产品、订单、客户等)以及它们之间的关系...
2. "ofbiz10.04表结构.pdm":PDM(Physical Data Model)通常是一个图形化的数据库模型表示,可能展示了OFBiz 10.04版本的表结构,包括各个表的物理布局、字段、主键和外键关系。这种可视化工具对理解数据库设计非常...
在OFBiz项目中,数据模型是其业务逻辑的基础,其中定义了大量的数据库表以及它们之间的关联和约束。本手册主要翻译了核心数据模型中的表结构和字段,以及提供了主键、外键、非空字段的说明。 核心数据模型涵盖了几...
在 Ofbiz 中,实体模型 (Entity Model) 是非常核心的概念之一,它定义了数据存储的结构。为了定义实体模型,我们需要创建一系列的 XML 文件。这些文件主要包括 `entitymodel_xxx.xml`、`ofbiz-component.xml` 和 `...
Ofbiz 会根据 entitymodel_study.xml 自动生成相应的SQL脚本并在数据库中创建表。 5. 实现增删改查操作:Ofbiz 提供了丰富的API,使得开发者可以轻松地进行数据操作。例如,创建新客户时,可以使用 EntityFactory....
在OFBiz中,你可以使用数据导入工具(Data Import Tool)来填充这些实体的数据。编写CSV文件,包含`countryCode`和`name`,然后通过OFBiz的管理界面导入这些数据,以创建实体实例。 3. 定义实体和系统标签 OFBiz...
- **entitymodel.xml**:用于定义数据模型中的实体及其属性。 - **EntityGroup**:由一系列相关的实体组成的集合,在 **entitygroup*.xml** 文件中定义。 - **EntityECA**:用于定义实体事件的条件与动作,在 **...
《数据模型资源书修订版卷一》是电子商务领域的重要参考资料,尤其在Ofbiz官网中被推荐,这表明它在理解并构建数据驱动的电子商务系统中扮演着关键角色。本资源包含了一系列与数据库设计和管理相关的源代码,适用于...
以下是一些OFBiz中关键的XML配置文件的详细解析: 1. **entityengine.xml**: 这个文件负责配置数据源,包括数据库连接池、事务管理和字段类型的定义。`<delegator>`元素定义了不同的数据操作代理,每个代理可以...
在实体引擎中,OFBIZ采用了多种设计模式,如业务代理(Business Delegate)、值对象(Value Object)、复合实体(Composite Entity)、值对象组装器(Value Object Assembler)、服务定位器(Service Locator)和数据访问对象...
- **entity**:实体引擎,负责数据模型的定义和管理,其模型定义通常在XML文件中,如`model-entity`目录下的文件。 - **service**:服务引擎,提供业务逻辑处理,通过XML配置文件定义服务接口和实现。 - **...
本篇文章旨在探讨《Data Model Resource Book, Volume 1.pdf》中所述的数据模型在 OFBiz(Open for Business)框架中的具体应用。OFBiz 是一个开源的企业级应用框架,提供了丰富的功能来支持电子商务、供应链管理等...