Filenet P8 5.1和5.2用新内容删除/替换文档内容



的要求之一是用新内容更新文档,还删除了旧文档。上一个文档的文档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,您需要创建一个具有此ID并手动复制属性的新文档(在坚持新文档之前删除旧文档)。

更新

关于必须包括几个对象的原子更新,您有两个选项:

  1. 批处理中的对象
  2. 使用客户端发射的JTA事务(如果使用EJB运输连接)

您可以在文档中阅读有关这些信息:批处理概念,客户启动的交易。

使用批处理是通常使用的更常规方式,除非您有复杂的更新方案。

最新更新