我正在尝试通过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应用程序中尝试过此代码,但无济于事。
答案 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);