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



假设我有一个文档doc,我想把它的barcode元数据更新为"01234"

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

如何做到这一点与DotCMIS/OpenCMIS?

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

代码明智,看看Updating properties代码样本的OpenCMIS,这是它适用于你的情况:

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

在使用DotCMIS的情况下,示例页面提供了另一个有用的代码片段,下面是映射您的用例的修改版本:

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);
}

相关内容

  • 没有找到相关文章