继上一篇说明Jackrabbit节点类型定义文件后,下面给出一个实例.
OpenKM是基于Jackrabbit的文档管理应用,将自己定义的节点类型放在其CustomNodes.config文件中.
CustomNodes.config
- <nt = 'http://www.jcp.org/jcr/nt/1.0'>
- <jcr = 'http://www.jcp.org/jcr/1.0'>
- <mix = 'http://www.jcp.org/jcr/mix/1.0'>
- <okm = 'http://www.openkm.org/1.0'>
-
- [mix:accessControlled]
- - okm:authUsersRead (string) multiple mandatory
- - okm:authUsersWrite (string) multiple mandatory
- - okm:authRolesRead (string) multiple mandatory
- - okm:authRolesWrite (string) multiple mandatory
-
- [okm:resource] > nt:resource, mix:versionable
- - okm:size (long) mandatory
- - okm:author (string) mandatory
-
- [okm:document] > nt:hierarchyNode, mix:referenceable, mix:lockable, mix:accessControlled
- - okm:author (string) mandatory
- - okm:name (string)
- - okm:language (string)
- - okm:keywords (string)
- - okm:notification (string) multiple
- + okm:content (okm:resource) primary mandatory
-
- [okm:folder] > nt:folder, mix:referenceable, mix:lockable, mix:accessControlled
- - okm:author (string) mandatory
- - okm:name (string)
- - okm:notification (string) multiple
-
- [okm:config] > nt:hierarchyNode, mix:accessControlled
- - okm:lockTokens (string) = '' multiple autocreated
-
- [okm:query] > nt:hierarchyNode, mix:accessControlled
- + * (nt:unstructured)
接着给出说明:
文件定义了四个名域,其中三个为JCP保留的名域,一个是自己的,名字为okm
文件定义了六个节点类型,其中一个增加了一个mix,其余的为自己的类型
- mix:accessControlled节点类型,该节点类型名字是mix:accessControlled,具有四个多值属性,属性类型都是字符串,而且都是强制性的,名字分别为okm:authUsersRead, okm:authUsersWrite,等
- okm:resource节点类型,继承了nt:resource类型和mix:versionable类型,同时具有两个属性, okm:size和okm:author,而且都是强制行的,类型分别是long和string, 这样OpenKM中的资源就是可以版本化的
- okm:document 节点类型.继承了 nt:hierachyNode, mix:referenceable, mix:lockable, mix:accessControlled节点类型,这样文档就可以被引用,锁定,层次化,和访问控制化. 这里okm:document节点类型依赖刚才定义的节点类型mix:accessControlled. okm:document定义了5个属性和一个子节点okm:content. 注意这个子节点的类型是刚才定义的okm:resource类型,并且是强制性的,和主要的. 注意这里有一个容易混淆的事情: okm:content指的是这个子节点的名字,而okm:resource指的是节点类型的名字,所以注意区分,有的okm:xxxx是指节点名字,而有的是指节点类型名字,这在JCR中非常容易搞混.
分享到:
相关推荐
在这个"Jackrabbit入门实例"中,你将找到一系列在Eclipse环境下运行的示例项目,帮助初学者快速理解并掌握Jackrabbit的使用。 首先,让我们深入了解一下JCR。JCR是一个接口规范,定义了如何存储、检索和管理半结构...
- Node:在JCR中,内容被组织成节点,类似于文件系统的文件和目录。 - Property:节点可以拥有属性,类似于文件的元数据。 - Workspace:工作区是节点和属性的集合,用户可以在其中进行读写操作。 - Session:...
`ImportUUIDBehavior` 枚举常量定义了在导入节点时如何处理 UUID。 8. **版本控制**: Jackrabbit 支持节点的版本历史记录,允许回滚到以前的版本。 在学习 Jackrabbit 时,你需要熟悉这些基本概念以及它们在实际...
4. **操作节点**:通过Session创建、查找、修改或删除节点,节点类似于文件系统中的文件和目录。 5. **保存更改**:所有对存储库的更改都需要通过Session的save()方法进行提交。 6. **查询内容**:使用QueryManager...
- `Node`:在Jackrabbit中,内容被组织成节点树,每个节点代表一个内容单元,可以包含子节点和属性。节点有类型,类似于数据库中的表,这些类型定义了节点可以拥有的属性和子节点。 - `Property`:节点上的属性是...
2. Apache Jackrabbit:作为JCR规范的实现,Apache Jackrabbit提供了全面的功能,包括事务支持、版本控制、查询语言、节点类型定义等。它是一个高性能、可扩展的JCR服务器,可用于构建内容管理系统、文档管理系统、...
Jackrabbit仓库是一个持久化的、基于文件系统的数据存储结构,可以被视为一个内容数据库。 描述中的“博文链接:https://kinglord2010.iteye.com/blog/665530”指向了一篇博客文章,遗憾的是,由于无法直接访问该...
2. 高级功能:除了基本操作,适配器还支持PHPCR特有的功能,如节点类型的定义、节点属性的设置、版本控制、工作空间管理等。 3. 灵活性:由于Flysystem的设计理念,开发者可以根据需求选择不同的PHPCR后端,无需...
PHPCR的引入让PHP开发者有机会利用类似JCR的强大数据存储机制,如树形结构、节点类型定义、多版本控制等。这不仅提升了数据管理的效率,还增强了数据的组织和检索能力。通过PHPCR,开发者可以创建复杂的查询来找到所...