cancel
Showing results for 
Search instead for 
Did you mean: 

Modificación de metadatos de un espacio mediante javascript

volasolo_9270
Champ in-the-making
Champ in-the-making
Hola,
No llevo mucho tiempo con Alfresco, y aunque me voy apañando tengo una duda que no sé como resolver. Os explico…
Estoy haciendo un proyecto donde los documentos van a ser una agrupación de documentos no definida (varios word, varios pdf… lo que quieran). Tomé la decisión de crear un espacio que contenga los documentos que el usuario quiera añadir. Una vez incluídos dentro del espacio hay una fase de aprobación que tengo solucionada. El espacio se va moviendo mediante reglas de aprobación a diferentes espacios, es decir trato el espacio (con un metadatos creados al efecto) como "un documento". Lo que quiero es, mediante javascript modificar los metadatos de dicho espacio según va pasando las fases de aprobación (fechas, estado…). He conseguido que funcione (afecta al espacio donde la regla es local), pero lo que quiero hacer es que funcione en los subespacios, y a pesar de que defino asi la regla no funciona. ¿Alguien me puede decir como forzar a que se ejecute en los subespacios? Es un poco lioso, espero haberlo explicado bien.
Muchas gracias
7 REPLIES 7

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Pues yo lo haria con una regla asociada al espacio que ejecutara un js.

Via js, puedes recorrer todos los subespacios que cuelgan del principal e ir modificando sus metadatos.

Saludos

volasolo_9270
Champ in-the-making
Champ in-the-making
Hola,
Muchas gracias por responder tan rápido.
Había contemplado esa posibilidad, pero no sé muy bien como hacerlo. No sé el nombre exacto que el espacio va a tener y lo único que he encontrado es esto childByNamePath("nombre_espacio"). ¿Hay una forma más genérica de conseguirlo?

Gracias de nuevo.

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Pues se me ocurre que al ejecutarse en una espacio determainado, el objecto space es el espacio donde estas, y para buscar los descendientes bastaria con iterar haciendo uso de la propiedad children y comprobando si es un espacio para cambiarles las propiedades.
Entiendo que deberia ser algo asi
for (i in space.children)
Comprobar si es espacio y si si…. asignar nuevos metadatos
En los ejemplos de la API de javascript tienes ejemplos.

Saludos

volasolo_9270
Champ in-the-making
Champ in-the-making
Gracias, lo pruebo y te cuento

volasolo_9270
Champ in-the-making
Champ in-the-making
Hola,
Bueno… he conseguido que recorra los espacios hijos, pero no consigo que me cambie las propiedades. Paso el código por si alguien me puede ayudar. No casca, pero me temo que la sintaxis no es la correcta. He estado mirando por aqui por el foro y no veo código que se asemeje. ¿Me podéis echar un cable? Gracias por anticipado.


for (i=1;i<space.children.length;i++){
    var nodo = space.children;
    var nome=space.children.name;
   
    if(nodo){
       nodo.properties["ero:WFlowAsociado"] = "Texto—————–texto";
       space.save();
         }
   space.save();   
}

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
A ver site podemos ayudar:

for (i=1;i<space.children.length;i++){
var nodo = space.children; Aqui cojes el nodo hijo
var nome=space.children.name;    ESto para que???

if(!nodo.isDocument ){     Si el nodo no es un documento entonces sera un espacio.Pero revisa si el ! se lo traga
nodo.properties["ero:WFlowAsociado"] = "Texto—————–texto";
space.save();
}
space.save(); Sobraria ya
}

volasolo_9270
Champ in-the-making
Champ in-the-making
Por fin!! lo conseguí!!
Lo que pasaba es que no estaba haciendo correctamente el "save". Lo estaba haciendo a nivel del espacio padre (el que ejecuta la regla) y debía de hacerlo a nivel del hijo (el que hace dispararse la regla)

Muchísimas gracias por tu ayuda.