人类JCR工作空间的解释和使用案例

lis*_*sak 3 workspace jackrabbit jcr modeshape

可以请任何人解释有关JCR工作空间的JCR 2.0规范吗?

我知道会话总是绑定到一个持久工作空间,尽管单个持久工作空间可能绑定到多个会话.

这可能与版本控制和交易有关,但我不知道为什么.

一些观察:

  • 只能在同一工作空间的节点之间进行引用
  • 执行查询将始终定位到单个工作区

工作区似乎是关于表示相同内容(相同UUID)的节点,在:

  • 不同版本的"东西",项目可能吗?
  • 工作流程的不同阶段

并且不应该用于ACL.

同样在JackRabbit中,每个工作区都有其持久性管理器.而ModeShape有一个源连接器 - 独立于工作空间.

Ber*_*taz 6

David的模型(http://wiki.apache.org/jackrabbit/DavidsModel)规则#3建议仅在需要clone(),merge()或update()时使用工作空间.对于绝大多数JCR应用程序,这意味着不使用工作空间.将事物放在不同的路径上,在它们上设置特定的属性值或mixin节点类型并使用JCR的版本控制涵盖了您提到的版本控制和工作流用例.

例如,要管理打印作业,您只需在名为"new","in-progress","rejected"和"done"的JCR文件夹之间移动它们.这是在一些unix版本中使用文件系统文件夹完成的.JCR允许您执行相同操作,同时受益于其"类固醇文件系统"功能,从而使事情变得非常简单,透明和高效.

另请注意David的规则#5:引用是有害的 - 我们(Apache Sling和Day/Adob​​e CQ/CRX开发人员)倾向于仅使用路径,作为更宽松和更灵活的引用.

当你提到查询时:我们也只使用很少的查询 - 如果你的内容模型的路径结构对最常见的用例有意义,那么在JCR树中导航会更有效.