当前位置: 代码迷 >> 软件设计 >> 从Alfresco瞅老外的软件设计(二)Alfresco的核心介绍
  详细解决方案

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

热度:5436   发布时间:2013-02-26 00:00:00.0
从Alfresco看老外的软件设计(二)Alfresco的核心介绍
Alfresco Repository 是Alfresco 的存储核心,所有涉及到存储的服务都在这一层!同时它也是各种规范的实现。

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

XML定义了数据结构并接替了数据库的数据完整性检查
我们会在XML中定义节点的类型,以及子节点的类型!
DB会存放特定的数据,而Lucene提供了对文件系统的搜索,以及虚拟文件路径PATH和Properties的搜索工作!
PATH类似的写法如下: PATH=/root/directory
那么我要搜索 用户为A的目录下的所有二级文件夹中的图片,那么我在Alfresco就可以写成

PATH=/homt/users/A/* and TYPE=JPEG
这样就可以完成虚拟文件系统的快速检索!

以上大致介绍了一下Alfresco的特性,那么下面要介绍的是实现上面所需要的XML技术和特定的模型介绍。


   很多内容这里无法更好的解释,如果不明白在后面的数据库分析中就会详细的明白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中,如下:

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的标准上实现。
   




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





上面的图说明了JCR中的存储是以Node为原型,节点分别代表了其路径。这样我们就可以实现一个虚拟的文件系统节点。可以方便存储和管理!