Jackrabbit 如何生成 jcr:uuid(在 AEM 中)?

How does Jackrabbit generate jcr:uuid (in AEM)?

我正在尝试在所有 cq:PageContent 节点上创建一个自动生成的 GUID 属性。这将类似于 jcr:uuid 属性,但会随着内容 promotion/replication/package 安装而持续存在(而内容项的 jcr:uuid 在不同环境之间会发生变化)。

我正在尝试确定 AEM/JCR 如何在节点创建时生成 jcr:uuid 属性。定义 属性 的 CND 是:

[mix:referenceable]
  mixin
  - jcr:uuid (string) mandatory autocreated protected initialize

我尝试在类似的庄园中定义我的 GUID 属性,指定 autocreatedinitialize 属性,但这并没有导致自动生成 属性.

谁能指出 jcr:uuid 一代的来源?


顺便说一句,我在 Adob​​e 社区论坛上问了一个相关问题:http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.5_ciot.html/forum__bnxr-i_am_tryingtocreat.html

你没有提到是哪个版本的 AEM(所以无论你是在处理 Jackrabbit 还是 Oak),但结果证明机制基本相同。

分配默认值时,有一些硬编码系统 属性 名称会得到特殊处理(jcr:uuid 就是其中之一)。如果 属性 的名称被分配了默认值 匹配任何特殊情况,它会回退 [=25= 的静态默认值列表] 定义(例如在 CND 文件中列出)。

总而言之,您似乎无法借助此机制为任意 属性 分配您自己的动态默认值。您需要实现自己的事件侦听器或其他东西。


Jackrabbit:参见 setDefaultValues and computeSystemGeneratedPropertyValues

的实现

Oak:参见 TreeUtil 的实现 autoCreateProperty