cancel
Showing results for 
Search instead for 
Did you mean: 

Control de versiones de afresco.

aldo_valenzuela
Champ in-the-making
Champ in-the-making

Hola, estoy trabajando con alfresco y al momento de subir un archivo no hay problema, el problema es que al momento de intentar subir un archivo con el mismo nombre no sube nada.  ¿Cómo hago para que cuando suba documentos que ya existan en Alfresco no me de error sino que tome el documento como una nueva versión del archivo que ya se encuentra en Alfresco? la version de alfresco que estoy utilizando es la 5.2 y el codigo para subir un archivo es el siguiente:

<?php
//DATA
$ticket = 'xxxx';
$pdfnode = '13caa245-2249-4769-953c-b010053a6fd4';
$server = 'xxxx';
$port = ':8080';
$filename = 'test.txt';
$type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
$url = $server.$port.'/alfresco/api/-default-/public/alfresco/versions/1/nodes/'.$pdfnode.'/children?alf_ticket='.$ticket;
$ch = curl_init($url);
$args = new CurlFile($filename,$type,$filename);
$data = array(
'nodeType'=>'cm:content',
'filedata'=>$args
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
?>
Atento a su ayuda.
8 REPLIES 8

angelborroy
Community Manager Community Manager
Community Manager

Para subir nuevas versiones, necesitas bloquear el nodo previamente.

Tienes un ejemplo aquí: https://community.alfresco.com/community/ecm/blog/2016/11/11/v1-rest-api-part-5-versioning-locking

Hyland Developer Evangelist

Estimado, lamentablemente no he conseguido obtener resultados positivos siguiendo el tutorial. al momento de agregar propiedades no tengo ningún problema por ejemplo en el siguiente código añado la propiedad MajorVersion=true de la siguiente manera:

 

 

<?php

 

//DATA

$ticket = 'TICKET_f7acb34052591bf8cc49add5be1dd17578ebc5cc';

$pdfnode = '13caa245-2249-4769-953c-b010053a6fd4';

$server = 'http://192.168.120.209';

$port = ':8080';

$filename = '../informeGeneradores/files/minuta12.pdf';

$type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';

$url = $server.$port.'/alfresco/api/-default-/public/alfresco/versions/1/nodes/'.$pdfnode.'/children?alf_ticket='.$ticket;

 

$ch = curl_init($url);

 

$args = new CurlFile($filename,$type,$filename);

 

$data = array(

'nodeType'=>'cm:content',

'filedata'=>$args,

'name'=> 'version',

'MajorVersion'=>'true'

);

 

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_VERBOSE, true);

 

$result = curl_exec($ch);

echo $result;

?>

 

y el resultado es el siguiente:

 

{"entry":{"isFile":true,"createdByUser":{"id":"admin","displayName":"Administrator"},"modifiedAt":"2018-05-25T16:41:49.397+0000","nodeType":"cm:content","content":{"mimeType":"application/pdf","mimeTypeName":"Adobe PDF Document","sizeInBytes":5172,"encoding":"UTF-8"},"parentId":"13caa245-2249-4769-953c-b010053a6fd4","aspectNames":["cm:versionable","cm:titled","cm:auditable","cm:author"],"createdAt":"2018-05-25T16:41:49.397+0000","isFolder":false,"modifiedByUser":{"id":"admin","displayName":"Administrator"},"name":"version","id":"0418771d-adc4-4343-8eba-9d9015b8e1b2","properties":{"cm:versionLabel":"1.0","cm:versionType":"MAJOR"}}} 

 

Pero luego en el siguiente paso le añado la siguiente propiedad:

majorversion= false de la siguiente manera:

 

 

<?php

 

//DATA

$ticket = 'TICKET_f7acb34052591bf8cc49add5be1dd17578ebc5cc';

$pdfnode = '13caa245-2249-4769-953c-b010053a6fd4';

$server = 'http://192.168.120.209';

$port = ':8080';

$filename = '../informeGeneradores/files/minuta12.pdf';

$type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';

$url = $server.$port.'/alfresco/api/-default-/public/alfresco/versions/1/nodes/'.$pdfnode.'/children?alf_ticket='.$ticket;

 

$ch = curl_init($url);

 

$args = new CurlFile($filename,$type,$filename);

 

$data = array(

'nodeType'=>'cm:content',

'filedata'=>$args,

'name'=> 'version',

'majorVersion'=>'false',

'comment'=>'second'

);

 

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_VERBOSE, true);

 

$result = curl_exec($ch);

echo $result;

?>

 

y el resultado es el siguiente:

 

{"error":{"errorKey":"version already exists.","statusCode":409,"briefSummary":"04250647 version already exists.","stackTrace":"Por motivos de seguridad, ya no se muestra el seguimiento de la pila, pero se guarda la propiedad para versiones anteriores.","descriptionURL":"https://api-explorer.alfresco.com"}} 

 

la verdad no se qué es lo que estoy haciendo mal también he intentado subiendo un archivo con la propiedad majorversion=false y repitiendo el procedimiento me da el mismo error. Espero me puedas ayudar.

Estimado angel, lamentablemente yo tambien estoy teniendo el mismo problema... paso los argumentos y puedo modificar el nombre, cambiar de majorVersion a minorVersion pero al momento de cargar el segundo archivo sigo atrapado en el mismo problema.

angelborroy
Community Manager Community Manager
Community Manager

Hace tiempo que no lo pruebo, pero esto funcionaba:

https://github.com/keensoft/alfresco-ttl-106/blob/master/postman/collections/Alfresco%20TTL%20106.po...

Hace la siguiente invocación pasando el contenido en el payload

[PUT] http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/0a3f5195-4884-49bb-b1a... version  

Hyland Developer Evangelist

Estimado,

He intentado con la url que me has mandado en el enlacePero lo que hace es descargar un archivo y no modifica la version, obviamente algo esto haciendo mal pero no logro darme cuenta en que estoy fallando, espero me puedas ayudar.

Haz un PUT, no un GET

Hyland Developer Evangelist

Muchas gracias por la paciencia Angel Voy a intentar nuevamente.

hmercado67
Champ on-the-rise
Champ on-the-rise

Aldo, cordial saludo. Pudiste resolver este asunto?