cancel
Showing results for 
Search instead for 
Did you mean: 

Establecer propiedades al mover documentos a espacios con CI

alex888
Champ in-the-making
Champ in-the-making
Hola,

tengo una jerarquía de espacios de dos niveles del siguiente modo:

    Raíz
     |- Cliente1
          |- Asunto11
          |- Asunto12
     |- Cliente2
          |- Asunto21
          |- Asunto22
            …
     |- Clienten
         |- Asunton1
           …

es decir un espacio raíz y luego clientes que a su vez pueden tener asuntos relacionados. Los documentos deben ir alojados en las carpetas de asuntos y tienen una propiedad "cliente" y una propiedad "asunto". Necesitaría que al mover documentos vía CIFS en cualquier carpeta de asunto, se rellenaran esas propiedades con el nombre del espacio de asunto y el nombre del espacio de cliente que lo contiene.  Por favor, ¿podría alguien sugerirme la mejor forma de hacerlo?, ¿con un script asociado al evento inbound de los espacios quizás?.

Un saludo y muchísimas gracias por adelantado.
20 REPLIES 20

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Buenas,

Puedes poner el script que estas ejecutando? En un principio solo se le deberian aplicar esos metadatos si el tipo de documento que estas subiendo es el que tu has personalizado, para el tipo por defecto, no estan definidos los atributos cliente y asunto.

Saludos

alex888
Champ in-the-making
Champ in-the-making
El script realmente son esas dos líneas, más salvar las propioedades del documento:


document.properties["my:asunto"] = documento.parent.name;
document.properties["my:cliente"] = documento.parent.parent.name;
document.save();

… solo se le deberian aplicar esos metadatos si el tipo de documento que estas subiendo es el que tu has personalizado, para el tipo por defecto, no estan definidos los atributos cliente y asunto.

Saludos

Ese es precisamente el tema. Si yo subo el contenido (momento en el que se ejecuta la acción y, por tanto el script), y después elijo como tipo de contenido mi tipo y le doy valor a cliente y a asunto, ¿no estaré sobreescribiendo los valores?. Por otro lado, si el tipo de contenido que elijo es el standar, como tú bien dices, no aparecen siquiera cliente y asunto en la hoja de propiedades …

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Buenas,

Correcto ahora lo capto, lo que querias decir. Efectivamente si ejecutas la regla, te sobreescribira cualquier valor que pongas en dichos campos por los asignados en la regla (ya que esta se ejecuta al final del todo).

Lo unico que se me ocurre es que compruebas antes de realizar la asignacion si esas dos propiedades estan ya cumplimentadas.

Saludos

alex888
Champ in-the-making
Champ in-the-making
Jejjejeje, me he explicado mal. Tal y como dices tu es como quiero que ocurra!!!. Yo pensaba que era al revés, que la regla se ejecutaba al principio, antes de elegir el modelo de contenido (lo digo porque tengo puesto que salgan trazas en la ventana del Tomcat y creo haber visto que se ejecutaban antes), pero si me dices tu que es así mejor, porque lo que quiero es forzar esas dos propiedades con lo que se asigne en la regla. Es decir que si luego el usuario elige otro client y otro asunto, que prevalezcan los de la regla.

Igual lo expliqué mal.

En serio Pedro, te estoy muy agradecido por las molestias. A ver si sale y te cuento lo que era …

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Buenas,

De todas formas se me olvido comentarte que la regla la puedes aplicar para que solo se ejecute en el caso de que el documento que subes es de tu tipo personalizado.

Saludos

alex888
Champ in-the-making
Champ in-the-making
Hola Pedro,

soy incapaz de conseguir que funcione. Lo probé ayer y creo (por favor, vuélveme a corregir si me equivoco) que la regla asociada a un evento inbound se ejecuta justo después de que subas el fichero, pero antes de que le asignes los metadatos (repito, igual me equivoco).  Por otro lado me da un poco lo mismo porque para lo que me interesa es a la hora de añadir contenido vía CIFS (con lo que realmente no metes ningún metadato a mano). El caso es que cuando miro las propiedades del documento tras ejecutarse el script (veo las trazas que he puesto en el log), ninguna de las propiedades añadidas parece. Yo me pregunto … ¿no habría que decirle al document de alguna forma que el tipo de metadatos asociado sería el tipo que yo he definido en mi modelo personalizado?. No se, algo del tipo:


document.setContenType["my:type"];??

Gracias de nuevo …

Un saludo.

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
Buenas Alex,

Por las pruebas que yo he realizado, la ejecucion de la regla se produce una vez que le has asignado las propiedades (cierto es que via CIF no lo he probado), siempre lo hago via webclient. Para solucionar eso tienes dos vias. O definir una regla previa a la de asignar metadatos que convierta todos los documentos que subas al tipo que tu has definido o bien probar si te funciona lo siguiente:

document.type=Fully qualified QName type of the node (Literal de la wiki)

Saludos

alex888
Champ in-the-making
Champ in-the-making
Hola Pedro,

el "node" al que hace referencia imagino que será el nodo correspondiente al modelo de contenido que definí yo, ¿no?. ¿Con qualified name se refiere a la ruta completa donde se encuentra?, yo lo tengo en alfresco/extensions …

Mil gracias de nuevo por tu tiempo.

Un saludo.

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
No a la ruta donde se encuentra, sino a como lo has definido en tu modelo.

Ejem.

{http://www.someco.com/model/content/1.0}whitepaper

Saludos

alex888
Champ in-the-making
Champ in-the-making
Hola,

por fín conseguí solucionarlo, pongo el codigo para la posteridad:

var result = document.specializeType("{http://www.someco.com/model/content/1.0}mytype");
document.properties["my:asunto"] = documento.parent.name;
document.properties["my:cliente"] = documento.parent.parent.name;
document.save();

{http://www.someco.com/model/content/1.0} es lo que está definido en los namespaces del xml de configuración del modelo, es decir:


   <namespaces>
      <namespace uri="http://www.someco.com/model/content/1.0" prefix="my"/>
   </namespaces>

y mytype es el nombre que se le haya puesto al tipo dentro de ese mismo fichero.

Solucionado esto, sigo teniendo un problema. Vía CIFS, todo funciona perfecto. Pero si el documento es añadido mediante "add content" en el interfaz de alfresco, la regla se activa después de establecer las propiedades generales del documento (Name, Type (content por defecto), encoding, COntent Type), pero ANTES de establecer las propiedades particulares de Content Type o del tipo particular definido como es mi caso. Ocurre que si se desactiva la casilla donde se lee "Modify all properties when this page closes", entonces el documento tiene las propiedades que yo he definido en el script, en caso contrario se sobreescriben, ya que al usuario le sale la Hoja de Propiedades de Content Type o del tipo particular elegido.

Por tanto, una solución para mí sería que esta regla SOLO se ejecutara en caso de que el documento se suba vía CIFS, ¿hay alguna forma de detectarlo en el script?. O en cualquier caso, Pedro, ¿se te ocurre otra forma de hacerlo?.

Un saludo.
Alex.