从Alfresco看老外的软件设计(二)Alfresco的核心介绍

Alfresco Repository 是Alfresco 的存储核心,所有涉及到存储的服务都在这一层!同时它也是各种规范的实现。

Repository库的是围绕着“节点存储”=>“XML”-“Model”-“DB”-“Lucene”展开的。

XML定义了数据结构并接替了数据库的[color=red]数据完整性检查[/color]!
我们会在XML中定义节点的类型,以及子节点的类型!
DB会存放特定的数据,而Lucene提供了对文件系统的搜索,以及[color=red]虚拟文件路径[/color]PATH和Properties的搜索工作!
PATH类似的写法如下: PATH=/root/directory
那么我要搜索 用户为A的目录下的所有二级文件夹中的图片,那么我在Alfresco就可以写成
[color=red]
PATH=/homt/users/A/* and TYPE=JPEG [/color]这样就可以完成虚拟文件系统的快速检索!
[color=red]
以上大致介绍了一下Alfresco的特性,那么下面要介绍的是实现上面所需要的XML技术和特定的模型介绍。[/color]

很多内容这里无法更好的解释,如果不明白在后面的数据库分析中就会详细的明白alfresco的数据设计方式,同时也会明白Node, Type, Aspect, Associations ,Child Associations, QName, store , properties 的意思了
Data Dictionary 的核心是描述一个或多个内容的元数据. 可以按照 元模型的描述 M1,M2,M3..., 我们所涉及到的 字典元模型是采用 M2 描述,内容模型采用 M1 描述。
元数据支持2种主要的结构体:Content Type(内容类型) 和 Content Aspect(内容描述) , 他们2个都提供了去描述所指定内容结构的能力,包括了数据的性质和对其他内容的关联。面向对象的结构,如继承也是支持的。
Content Type(内容类型) 和 Content Aspect(内容描述) 的区别是什么? Content通常被看作是一个Content Type. Type描述的是Content的基础的结构.Content Aspect 所表示的是另一种封装的形式, 就是任意内容的ContentType都能很好的被描述的清楚(自己的话), 就是说 Content Aspect 就是扩展和封装Content Type 使之更容易扩展.
附加说明:Content Type 和 Aspect 均描述在同一个xml中,如下:
[img]http://dl.iteye.com/upload/attachment/259712/9e8f00f8-aa17-3ce4-9f20-51dbcb6438f8.jpg[/img]
Type 主要是描述一个类型的操作性质,可以认为是一个基本属性。
基本文件属性:
文件名称:name // 这是一个 QName
修改时间:modifyDate // 这是一个 QName
发布日期:publishedDate // 这是一个 QName

Aspect 被认为是一个扩展属性(应该用在描述文件的外围属性) , 大量的集合属性。
增强型的扩展属性组:
Email属性组: // 这就是一个aspect
Email地址:abce@sina.com // 这是一个 QName


Meta-Model 元模型
元模型分为4级, M3,M2,M1,M0.
M3 - 元元模型 (采用MOF元对象库标准)
M2 - M3 的实现 - 元模型 - UML 的 元模型 , 满足 JSR-170 节点类型的标准 ( 像Class, Interface.Attribute 的定义方式等.. JSR170即内容管理API的标准接口定义)
M1 - M2 的实现 - 模型 - 内容模式模型 (像 文件夹,文件 等实际抽象一点的描述)
M0 - M1 的实现 - 用户对象 - 实际的对象体信息( 像 文件夹的路径 /root/my , 文件的名称readme.txt)
注: 在源码和Wiki的图片中我们可以看到大量 M2标示 ,说明该 UML 和 源码均在JSR170的标准上实现。

[img]http://dl.iteye.com/upload/attachment/259716/8ec822d0-ba09-3246-acab-b27187b256c8.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/259718/052efcbd-12e8-33db-924a-077fce113696.jpg[/img]

原模型是定义JCR的,说到JCR我就上一张图

[img]http://dl.iteye.com/upload/attachment/259720/f6612aee-b338-3757-982c-51135b29a199.jpg[/img]


[img]http://dl.iteye.com/upload/attachment/259722/70d27f4d-79cc-3766-a026-320b3b2d338e.jpg[/img]
上面的图说明了JCR中的存储是以Node为原型,节点分别代表了其路径。这样我们就可以实现一个虚拟的文件系统节点。可以方便存储和管理!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值