通过化学OpenCMIS更新露天内容类型

时间:2013-05-14 13:10:47

标签: java alfresco cmis opencmis apache-chemistry

我正在尝试通过OpenCMIS更新alfresco中的文件内容类型。

CMIS工作台显示类型窗口中的类型,仅禁用开关“Policy controlable”。其本地名称为document,queryname为prefix:document,Base类型为cmis:document

在groovy控制台中,我尝试了以下内容:

Folder folder = (Folder) session.getObjectByPath("/Sites/mySite");

CmisObject o = session.getObject(aNodeRef);
cmis.printObjectSummary(o);

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, "D:prefix:document");
properties.put(PropertyIds.NAME, "itsanewname!");

println("\n\nFrom "+PropertyIds.OBJECT_TYPE_ID+" cmis:document to " + " D:prefix:document:\n\n\n");

o.updateProperties(properties);
cmis.printObjectSummary(o);

名称已更新,但内容类型仍为cmis:document

这段代码写给了Potts先生本人的以下例子:

properties.put(PropertyIds.OBJECT_TYPE_ID, "D:sc:whitepaper,P:sc:webable,P:sc:productRelated");
properties.put(PropertyIds.NAME, filename);
properties.put("sc:isActive", true);
GregorianCalendar publishDate = new GregorianCalendar(2007,4,1,5,0);
properties.put("sc:published", publishDate);

但是,他使用此示例代码段创建节点,而不是更新

我也在与露天链接的java应用程序中尝试过此代码,但无济于事。

2 个答案:

答案 0 :(得分:4)

通过CMIS创建对象的类型后,无法更改对象的类型。如果查看cmis:objectTypeId属性定义,您会注意到它的可更新性设置为“ONCREATE”而不是“READWRITE”。

杰夫

答案 1 :(得分:0)

尝试在此处做类似的事情。

我有一些文档最初作为.doc文件上传,其中mimetype为Microsoft Word(application / msword),用于露天共享。

现在我已经能够成功更改扩展并将mime类型属性更新为Microsoft Word 2007.但是,当文件下载并使用microsoft word打开时,它会抛出一个错误,说文件格式不匹配扩展名。

我以为我做得对,但显然不是。 以下是应该处理mime类型转换的代码部分。

Map<String, Object> updateProperties = new HashMap<String, Object>();

updateProperties.put("cmis:name", changeName);
updateProperties.put("cmis:contentStreamFileName", changeName);
document.updateProperties(updateProperties);

ContentStream contentStream = document.getContentStream();
InputStream stream = contentStream.getStream();
ContentStream cs1 = session.getObjectFactory().createContentStream(changeName, docLength, MimeTypes.getMIMEType("docx"), stream);

document.setContentStream(cs1, true);