¿Controlando la jerarquía de nodo en JCR?

Sé que los nodos individuales se pueden versionar en repositorys JCR. Pero, ¿qué ocurre si tengo documentos que están compuestos por una jerarquía de pequeños fragments individuales, alias a nodos en un set de fragments de mayor tamaño? Me gustaría tomar una instantánea de todos los nodos en un documento y compartir información del estado actual de la jerarquía entre todos los clientes que están editando el documento. ¿Es posible con JCR y me puedes dar algunos consejos sobre cómo hacerlo?

Sí, es posible (y bastante fácil) versionar un subgrafo en su totalidad. El nodo en la parte superior del jcr:versionable debe tener la jcr:versionable , explícita o implícitamente a través de un supertipo del tipo primario o types mixin del nodo. Ningún otro nodo en el subgrafo necesita ser marcado como versionable; de hecho, es mucho más fácil si ninguno de ellos lo tiene.

De forma pnetworkingeterminada, todos los comportamientos "de versiones de padres" de las definiciones de propiedad y las definiciones de nodo hijo son COPY , lo que funcionará perfectamente.

Luego, simplemente obtenga el VersionManager para la Session JCR (a través del espacio de trabajo de la session) y verifique en el nodo:

 javax.jcr.Node subgraphRoot = ... javax.jcr.VersionManager vmgr = session.getWorkspace().getVersionManager(); vmgr.checkin(subgraphRoot.getPath()); 

Revisarlo para modificarlo es igual de simple:

 vmgr.checkout(subgraphRoot.getPath());