2016-02-10 10 views
1

Привет и спасибо заранее за помощьAlfresco можно изменить свойства "cmis: creationDate и cmis: lastModificationDate" Updatablity?

У меня есть проблемы с вставкой и обновлением документов в Alfresco, поэтому, когда я установил свойство как «КМИС: CreationDate или КМИС: lastModificationDate», документ создан успешно, но свойства, которое имеет Updatability = ReadOnly, не устанавливает новое значение, заданное автоматически при помощи alfresco. Есть ли решение установить обновление этих свойств на «ReadWrite»? Я использую Aalfresco 5.0 и openCmis 0,13 это мой код:

public void createDocument(Folder folder) throws ParseException { 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
    Date d = sdf.parse("21/12/2012"); 
    String name = "myNewDocument.txt"; 
    Map<String, Object> properties = new HashMap<String, Object>(); 
    Calendar cal = new GregorianCalendar(); 
    cal.setTime(d); 
    properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document,P:cm:titled,P:cm:author"); 
    properties.put(PropertyIds.NAME, name); 
    properties.put(PropertyIds.CREATION_DATE, cal); 
    properties.put(PropertyIds.LAST_MODIFICATION_DATE, cal); 
    properties.put("cm:title", "Title"); 
    properties.put("cm:description", "Description"); 
    properties.put("cm:author", "author"); 
    properties.put("cmis:creationDate ", cal); 
    byte[] content = "Hello World!".getBytes(); 
    InputStream stream = new ByteArrayInputStream(content); 
    ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(content.length), "text/plain", stream); 
    Document newDoc = folder.createDocument(properties, contentStream, VersioningState.MAJOR); 
} 

ответ

4

Обновление только для чтения полей требует работы на стороне Alfresco. Существуют политики, которые предотвращают изменение свойств объекта cm:auditable.

Вы можете обновить поля в Alfresco с помощью NodeService API после того, как вы отключили это поведение политики. Вот пример:

policyBehaviourFilter.disableBehaviour(node, ContentModel.ASPECT_AUDITABLE); 
// Update CreatedDate 
nodeService.setProperty(node, ContentModel.PROP_CREATED, dateTime); 
//Enable policy 
policyBehaviourFilter.enableBehaviour(node, ContentModel.ASPECT_AUDITABLE); 

Вы можете упаковать это в пользовательский WebScript, чтобы свойства, чтобы изменить удаленно.

+0

Должен ли он снова включить поведение для этого аспекта, как только он сыграл с этими реквизитами? –

+0

Большое спасибо за ваш ответ, но я действительно новичок во всём мире, не могли бы вы дать мне больше информации о том, как это сделать на стороне альфреско, вы говорите об исходном коде Alfresco? какие файлы следует изменить? –

+2

Этот вопрос немного выходит за рамки одного потока. Вы захотите посмотреть некоторые учебные пособия по расширению Alfresco. Вот несколько ресурсов, которые помогут вам начать работу: https://wiki.alfresco.com/wiki/Developer_Guide & http://ecmarchitect.com/alfresco-developer-series-tutorials/ – DocWatson