如何使用DotCMIS / OpenCMIS修改CMIS文档的属性

时间:2013-04-22 08:15:13

标签: cmis opencmis dotcmis

假设我有一份文档doc,我想将其barcode元数据更新为"01234"

该文档可能存在其他属性,我不想丢失它们 如果doc已经有barcode,则会被覆盖。

如何使用DotCMIS / OpenCMIS进行此操作?

1 个答案:

答案 0 :(得分:1)

在CMIS中,默认情况下更新属性将覆盖现有值,默认情况下会保留您不与updateProperties消息一起发送的属性。也就是说,协议语义已经保证了您的要求。

代码明了,请查看OpenCMIS的Updating properties code sample,这里适用于您的案例:

CmisObject cmisobject = ....
Map<String, Object> updateProperties = new HashMap<String, Object>();
updateProperties.put("acme:barcode", "new value"); // single-value property
cmisobject.updateProperties(updateProperties);

对于DotCMIS,samples page提供了另一个有用的片段,这是用于映射您的用例的修改版本:

ICmisObject cmisObject = ...

IDictionary<string, object> properties = new Dictionary<string, object>();
properties["acme:barcode"] = "new value";
IObjectId newId = cmisObject.UpdateProperties(properties);

if (newId.Id == cmisObject.Id) 
{
    // the repository updated this object - refresh the object
    cmisObject.Refresh();
}
else
{
    // the repository created a new version - fetch the new version
    cmisObject = session.GetObject(newId);
}