Alfresco. Duplicate Child Node Name Exception y Versionado (checkin/checkout)

Al mover o crear un nodo, nos podemos encontrar con un error de que ya existe un nodo con este nombre. Para resolver esta excepción tenemos varias opciones:

  • No hacer nada
  • No moverlo
  • Borrar el destino y luego moverlo
  • Moverlo con otro nombre
  • O, la opción más elegante, incrementar la versión del documento haciendo checkin, checkout

Basándome en este post lo probé y llegué a este código, que ya pongo en la respuesta, y que cuento a continuación:

El principio es este:

You should design your script to:
* Check out a working copy of your versioned node.
* Use the new write method to update the content of your working copy.
* Check in your working copy.

Y esta es la solución en código:
(Está en inglés)

This is a move function, that detects if a node already exists
(Variables are in spanish)


// Moves a node to a destination
function moveNode (nodo, destino) {
// Search if exists
var encontrado = destino.childByNamePath(nodo.name);
if (encontrado != null) {
if (! encontrado.hasAspect("cm:versionable")) {
encontrado.addAspect("cm:versionable");
}
var wc = encontrado.checkout();
wc.properties["cm:content"]=nodo.properties["cm:content"];
wc.save();
wc.checkin("Update element: "+nodo.name);
nodo.remove();
}
else
{
nodo.move(destino);
}
}

This only has a problem, increases two versions each time. I guess wc.save(), make his part in it, while we are updating that node.

I hope this helps

Anuncios

Acerca de Antonio de la Torre
Developer & Agile Instigator, at Kaleidos, in Madrid, Spain

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: