建站经验 experience
当前位置:首页 > 网站建设专题 > 建站经验
Openbiz 数据对象元数据
发布日期:2012-04-18 阅读次数:1174 字体大小:

Openbiz 数据对象

Openbiz通过BizDataObj类映射数据库中的表到数据对象(DO)。每一个数据对象都定义了一个表名和表中的列与数据对象字段的映射关系。下图展示的就是一个最简单的数据对象与单一数据表之间的影射关系。

数据对象元数据

Openbiz数据对象有一个核心类“BizDataObj”,这个类的元数据定义如下:

BizDataObj 元素

BizDataObj 元素是一个数据对象元数据的跟元素,它有三个子元素,分别是BizFieldList, TableJoins 和 ObjReferences。BizDataObj元素具有如下属性:

Name

Name 属性是一个数据对象的标识符。Name属性应该与数据对象的文件名完全一致。

Description

Description 属性描述了数据对象的功能与方法。

Class

Class 属性指定了该对象的实现类。

DBName

DBName 属性是在Config.xml 文件中定义的数据库名称。

Table

Table 属性是数据对象所映射的数据库的表名字。我们通常把表在BizDataObj元素中也将其成为“基本表”。

IDGeneration

IDGeneration 属性指定了基本表的主键的生成方法。它支持的值可以是“Openbiz”, “Identity”, “Sequence:seqname”, “GUID”, “UUID”, 或者其它

SearchRule

SearchRule 属性为从数据源(数据表)来获取数据时附加搜索规则。

例如:SearchRule="start_time>'1999-10-20'"

SortRule

SortRule属性为从数据源(数据表)来获取数据时附加排序规则。

例如: SortRule="start_time ASC"

OtherSQLRule

OtherSQLRule 属性为从数据源(数据表)来获取数据时附加用户指定的规则。

例如: OtherSQLRule = "GROUP BY position HAVING age>30"

AccessRule

AccessRule 属性指定了一个附加的搜索规则来限定数据访问控制

例如: AccessRule="owner_id='{@profile:Id}’'"

CreateCondition

CreateCondition 属性为数据记录的创建行为设定了访问规则 (ACL)

例如: CreateCondition=“project.create”。 这里 “project”是一个资源名,而 “create” 是一个行为名,它们都是在Cubi模块的XML文件ACL章节中 被定义的。

UpdateCondition

UpdateCondition属性为数据记录的更新行为设定了访问规则 (ACL)

例如: UpdateCondition=“project.update”

DeleteCondition

CreateCondition属性为数据记录的删除行为设定了访问规则 (ACL)

例如: DeleteCondition=“project.delete”

Uniqueness

Uniqueness 属性设定了数据是否唯一的有效性校验。

语法: Uniquess ="fld1,fld2;fld3,fld4;.."

Openbiz将检测(fld1,fld2) 和 (fld3,fld4)的唯一性,如果数据不是唯一将会抛出异常

BizField 元素

BizField元素描述了数据对象的字段,一个字段通常用于映射到一个表格得列,它也可以是一个SQL表达式或者计算后的值。BizField元素具有如下属性:

Name

Name 属性是BizField的标识符。

Join

Join 属性是在<Join>元素中定义的名字。如果”Join”属性在BizField元素中指定,”Column”属性指向到连接表的列。

Column

Column 属性默认是基本表的列。如果”Join”属性在BizField元素中指定,”Column”属性指向到连接表的列。

SQLExpr

SQLExpr属性映射数据库引擎的SQL表达式为一个数据对象的字段。如果SQLExpr被指定,必须确定Column属性是空的,否则会引起错误。

范例: 《BizField Name=“FullName” Column="" SQLExpr=“CONCAT(FirstName,'',LastName)"..>

Type

Type 属性设定了字段的数据类型,Openbiz数据对象所支持的数据类型为Text, Number, Date, Datetime, Currency, Phone, Blob.

Format

Format 属性指定了目标字段的数据现实格式,不同的数据类型会有不同的格式定义。我们将在数据类型与格式章节对其进行详细讲解。

Value

Value 属性是一个按指定字段计算后得出的数值。Value属性支持简单表达式。

例如: <BizField Name="Precentage" Column="" Value="http://www.chinaz.com/web/2012/0412/corrects/total"...>。 其中 [corrects] 与 [total] 是在同一个数据对象中分别定义的2个字段。

DefaultValue

DefaultValue 属性定义了一个新记录的默认值。

Validator

Validator 属性定义了一个数据有效性校验规则,通常被应用在数据记录创建或更新时来校验本列的数值是否为有效。

例如: <BizField Name="”Fee" Column="fee" Format="Currency" Validator="{Fee>=15}">

ValueOnCreate

ValueOnCreate 属性设置了当数据记录被创建时该列的默认值

例如: <BizField Column="changetime" Type="Datetime" ValueOnCreate="{date('Y-m-d H:i:s')}"ValueOnUpdate="{date('Y-m-d H:i:s')}"/>

ValueOnUpdate

ValueOnUpdate属性设置了当数据记录被更新时该列的默认值

Join 元素

Join 元素描述了一个表如果连接到当前数据对象的基本表。通过连接,一个数据对象可以将其字段映射到多个数据表中。Join元素具有如下属性:

Name

Name属性是一个Join 元素的标识符。

Table

Table 属性是一个用来与当前数据对象中的基本表相连接的数据表的名字

Column

Column 属性定义了连接表中的一个列,这个列通常是指向基本表的主键的外键列。

JoinRef

JoinRef 属性定义了一个连接引用。使用JoinRef我们可以定义一个引用到连接表的引用,它也被叫做二次引用。

ColumnRef

ColumnRef 属性引用了基本表(或者JoinRef引用表)的一个列,ColumnRef通常映射的是基本表中的主键

JoinType

JoinType 属性定义了连接表的连接类型,它的值可以是 INNER JOIN, LEFT JOIN, RIGHT JOIN, 或者 FULL OUTER JOIN.

Object 元素

Object 元素定义了当前数据对象与其它数据对象的映射关系。影射关系可以是多对一,一对多,一对一和多对多映射,Object元素具有如下属性:

Name

Name 属性是数据对象引用的标识符。

Relationship

Relationship 属性定义了当前数据对象和引用的数据对象的映射关系,它的值可以是 M-1, 1-M, M-M 和 1-1.

Table

Table 属性定义了被引用对象的数据表

Column

Column属性指定了被引用对象的数据表的一个列,这个列包含了基本表的外键。

OnDelete

OnDelete 属性定义了当一个记录将被删除之前应采取什么行为。可用的选项如下:

- Cascade. 不管行在主表还是被引用表中被删除,在其它引用表中与该行记录相外键匹配的子记录也将会被删除。这就叫做联立删除,与CascadeDelete = Y 的意义相同

- Restrict. 如果有一条记录存在于该外键所对应的引用表中并且其值与当前值为引用关系,那么该记录将不允许被删除

- SetNull. 当引用的行被删除时,在引用行中的外键值将被设置为Null

OnUpdate

OnUpdate 属性定义了当一个记录被更新之前将采取什么行为,可用的选项如下:

- Cascade. 不管行在主表还是被引用表中被删除,在其它引用表中与该行记录相外键匹配的子记录也将会被更新为同样的值。

- Restrict. 如果有一条记录存在于该外键所对应的引用表中并且其值与当前值为引用关系,那么该记录将不允许被更新

- SetNull. 当引用的行被更新时,在引用行中的外键值将被设置为Null

XTable

XTable 如果当前数据对象的映射关系是多对多,那么此属性则定义了此关系中的中间表的表名。

XColumn1

XColumn1 属性是中间表的列,并且该列具有基本表的外键

XColumn2

XColumn2 属性是中间表的列,并且该列具有引用表的外键。

XDataObj

XDataObj 是一个 BizDataObject对象,它的基本表就是中间表XTable。当用户从引用的数据对象到基本数据对象关联一个记录时,一个新的记录将会在XdataObj对象对应的中间表中被创建。

(责任编辑:sunsun