• Openbiz 数据对象元数据

  • 发表时间:2018-07-12 18:08 | 秀站网 | 点击数:
  • 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 Column="" Value="[corrects]/[total]"...>。 其中 [corrects] 与 [total] 是在同一个数据对象中分别定义的2个字段。

    DefaultValue

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

    Validator

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

    例如: <BizField 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)

分享到:
  • 上一篇:LBS在签到“死亡”后发展方向:为个人服务 下一篇:十亿美元的阿基里斯之踵
  • 相关 明星娱乐 资讯
    精彩图库
    • 爱美
    • 健康
    • 情感
    • 美体
    Copyrights © 2011-2012 皖ICP备10208435号 Www.dedecmsmb.com 秀站网
    本站除标明"本站原创"外所有照片版权归原作者所有,如有冒犯,请联系本站,我们将立即予以删除!