要求之一是使用新内容更新文档并删除旧文档。前一个文档的文档 ID 和其他属性应该指向具有新内容的新文档。
有任何示例片段可以做同样的谢谢。
要求之一是使用新内容更新文档并删除旧文档。前一个文档的文档 ID 和其他属性应该指向具有新内容的新文档。
有任何示例片段可以做同样的谢谢。
我不太明白您是否需要创建新文档或现有文档的新版本。属性可以自动复制到新创建的版本,因此在这里使用版本控制似乎更自然。要做到这一点:
// check out the document
Document currentVersion = .. // reference to existing document
currentVersion.checkout(ReservationType.EXCLUSIVE, null, null, null);
currentVersion.save(RefreshMode.REFRESH);
// obtain the reservation object (new version in progress)
newVersion = (com.filenet.api.core.Document) documentObject.get_Reservation();
// set content
InputStream inputStream = .. // obtain input stream with content
ContentElementList contentElements = Factory.ContentElement.createList();
ContentTransfer contentTransfer = Factory.ContentTransfer.createInstance();
contentTransfer.setCaptureSource(inputStream);
contentTransfer.set_RetrievalName("content name");
contentTransfer.set_ContentType("proper MIME type");
contentElements.add(contentTransfer);
newVersion.set_ContentElements(contentElements);
newVersion.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MINOR_VERSION);
newVersion.save(RefreshMode.NO_REFRESH);
// deleting obsolete version
currentVersion.delete();
currentVersion.save(RefreshMode.NO_REFRESH);
指定用于传输到保留的属性(所有非对象属性的默认模式)将使其进入新版本,一旦它被持久化,它实际上就是保留对象。
需要注意的一点是,新版本的 ID 不能与前一个版本相同,因为每个版本都是不同的对象。要使用相同的 ID,您需要创建一个具有此 ID 的新文档并手动复制属性(在保留新文档之前删除旧文档)。
更新
关于必须包含多个对象的原子更新,您有两个选择:
除非您有复杂的更新场景,否则使用批处理是您通常会使用的更传统的方式。