Alfresco Создать личную рабочую копию

Я использую Alfresco Community4.0.e, chem-opencmis-client 0.7.0,primefaces 3.4.1. Я хочу добавить функцию "Редактировать в автономном режиме" в мое вложение. Файлы в моем веб-приложении, для этого я пытаюсь использовать веб-скрипты ". checkout ", но я не смог найти правильный способ вызова этих веб-сценариев. Я запускал эти веб-сценарии через"CMIS WorkBench"и пытался прочитать журнал, который я обнаружил, что на открытом воздухе вызывает эти веб-сценарии, как это

DEBUG ent.bindings.spi.http.DefaultHttpInvoker: POST http://fateh:8080/alfresco/service/cmis/checkedout

TRACE ent.bindings.spi.http.DefaultHttpInvoker: POST http://fateh:8080/alfresco/service/cmis/checkedout > Headers: {null=[HTTP/1.1 201 Created], Date=[Tue, 16 Jul 2013 10:38:53 GMT],Transfer-Encoding=[chunked], Location=[http://fateh:8080/alfresco/service/cmis/pwc/s/workspace:SpacesStore/..., Content-Type=[application/atom+xml;type=entry;charset=UTF-8], Server=[Apache-Coyote/1.1],Pragma=[no-cache], Cache-Control=[no-cache]}

я пытаюсь написать код, чтобы соответствовать тому, что я понимаю из журнала, но он не работает -_-

 public String cancelCheckOut(String objID) throws JSONException{
     try{
         HttpPost httpPost = new HttpPost("http://"+Constant.getAlfrescoIpConcatPort()+"/alfresco/service/cmis/checkedout");
         //StringEntity requestEntity  =new StringEntity(json);
         //httpPost.setEntity(requestEntity);
         httpPost.setHeader("Transfer-Encoding", "chunked");
         httpPost.setHeader("Content-type", "application/atom+xml");
         httpPost.setHeader("Location", "http://50.17.228.246:80/alfresco/service/cmis/pwc/s/workspace:SpacesStore/i/5b4772c9-8d8d-4fab-a7b9-5fe5d25b45f1");
         httpPost.setHeader("Content-Type", "application/atom+xml;type=entry;charset=UTF-8");
         httpPost.setHeader("Pragma", "no-cache");
         httpPost.setHeader("Cache-Control", "no-cache");

         System.out.println("Http post "+ httpPost.toString());

         HttpResponse response = client.execute(httpPost);
         System.out.println("response "+ response.toString());

         HttpEntity entity = response.getEntity();
         if (entity != null) {
                 return "done";
         }
    }catch (Exception ex) {         
        System.out.println(ex.getLocalizedMessage());
    } finally {
        client.getConnectionManager().shutdown();
    }
    return "failed";    
} 

Любая помощь?

3 ответа

Решение

Я нашел более простой способ создания частной рабочей копии, потому что я не использовал до запроса curl

Session session = CMISUtils.getSession();
Document doc = (Document) session.getObject(session.createObjectId(attachment.getIdAttachment()));
Document pwc = (Document) session.getObject(doc.checkOut());

Вам нужно будет добавить полезную нагрузку в ваш POST, чтобы указать документ, который вы хотите оформить, например:

<?xml version="1.0" encoding="utf-8"?>
  <entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
    xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">
    <cmisra:object>
    <cmis:properties>
    <cmis:propertyId propertyDefinitionId="cmis:objectId">
    <cmis:value>workspace:/SpacesStore/5b4772c9-8d8d-4fab-a7b9-5fe5d25b45f1</cmis:value>
    </cmis:propertyId>
    </cmis:properties>
    </cmisra:object>
 </entry>

запрос curl для проверки документа по протоколу CMIS

Просто чтобы четко указать ответ alfrescian, вот что вы должны написать перед client.execute:

String data = "what alfrescian wrote";
httpPost.setEntity(new StringEntity(data));
Другие вопросы по тегам