cancel
Showing results for 
Search instead for 
Did you mean: 

¿Se puede agregar contenido a un documento creado con webscript?

josenavarrovarg
Confirmed Champ
Confirmed Champ

Buenas, 

Quisiera saber si existe la forma de agregar contenido (como ContentStream) a un documento creado a través de un webscript 'personalizado' que cree. Sé cómo hacerlo con CMIS, pero necesito saber si puedo darle contenido usando un webscript y si es así, agradecería que me guíen con la forma de hacerlo.

PD: no sé si sea relevante, pero el modelo de contenido es custom también. 

¡Saludos!

5 REPLIES 5

angelborroy
Community Manager Community Manager
Community Manager

¿Te refieres a subir o modificar contenido utilizando una invocación REST? (sería equivalente a CMIS)

File upload | Alfresco Documentation 

Hyland Developer Evangelist

Hola Angel, lo que necesito es poder agregar contenido a un documento que creo utilizando un webscript. Explico: desde java envío (con POST) los datos como nombre del archivo y metadata al webscript que me crea el archivo y debo darle contenido, como el ContentStream que utilicé cuando hice esto mismo con CMIS.
Lo que debo hacer entonces es leer una hoja de cálculo que entre sus datos tiene la ruta del archivo que tiene el contenido que quiero colocar en este documento que creo, pero no sé de qué manera hacer esta 'copia' como lo podía hacer con CMIS. 

Con CMIS hacía esto, es un un extracto del código: 

Map<String, Object> properties = new HashMap<String, Object>();
properties.put("cmisSmiley SurprisedbjectTypeId", "D:bc:document, P:bc:data");
properties.put(PropertyIds.NAME, name);
properties.put("bc:documentType", nameDoc);
properties.put("bc:documentTypeId", idType);
properties.put("bc:idDocument", typeDoc);
properties.put("bc:folioDocument", folio);
properties.put("bc:rutClient", clientId);
properties.put("bc:clientName", clientName);

fld = CreateFolders.CreateFolderTree(CreateFolders.listFolderNames(clientId));

try {
byte[] data = Files.readAllBytes(new File(path).toPath());
InputStream stream = new ByteArrayInputStream(data);
ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(data.length),
"application/pdf", stream);
fld.createDocument(properties, contentStream, VersioningState.MAJOR);
} catch (IOException e) {
e.printStackTrace();
}

Mi consulta es como llevar este ContentStream (solo el content porque las propiedades las seteo en el Webscript con los datos recibidos por POST) al webscript para así poder aplicar el 'document.content = args.contentStream' o algo parecido y así mi documento tenga contenido. 

Por si sirve, así envío los datos por POST hacia el webscript: 


post.setEntity((HttpEntity) new UrlEncodedFormEntity(data, "UTF-8"));

Donde "data" es una lista de NameValuePair.

Creo que eso es precisamente lo que te proporciona la API a la que he hecho referencia antes. ¿O has desarrollado tu propio webscript y quieres enviarle el contenido del documento por ahí?

Hyland Developer Evangelist

Así es, he usado mi propio webscript porque así me lo han pedido en la práctica profesional :B
Viendo la API veo que me permite subir subir un archivo y su metadata a un repositorio dado, pero en mi caso solo necesito obtener el content stream de un archivo para así ingresarlo a este documento que creo con el webscript

angelborroy
Community Manager Community Manager
Community Manager

No sé si entiendo bien lo que necesitas, pero supongo que podrías adaptar tu webscript para que fuese un POST que acepta un formulario (no hay otra forma de subir un fichero).

Quizá el código fuente de Alfresco te sirva de inspiración: https://github.com/Alfresco/community-edition-old/blob/master/projects/remote-api/config/alfresco/te...

Hyland Developer Evangelist