我正在尝试通过OpenCMIS更新alfresco文件的内容类型。
CMIS工作台在类型窗口中显示类型,仅禁用了"Policy controlable"开关。本地名称为document
, queryname为prefix:document
, Base type为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("nnFrom "+PropertyIds.OBJECT_TYPE_ID+" cmis:document to " + " D:prefix:document:nnn");
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);
但是,他使用这个示例片段创建节点,而不是更新节点。
我还在链接到alfresco的java应用程序中尝试了此代码,但无济于事。
一旦通过CMIS创建对象,就不能更改对象的类型。如果您查看cmis:objectTypeId属性定义,您会注意到它的可更新性被设置为"ONCREATE"而不是"READWRITE"。
杰夫尝试在这里做类似的事情。
我有几个文档,最初是作为。doc文件上传的,mime类型是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);