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

时间:2014-02-03 19:02:12

标签: filenet-p8 filenet filenet-content-engine

其中一个要求是用新内容更新文档也删除旧文档。文档ID和上一文档的其他属性应指向带有新内容的新文档。

有任何样本片段都要做同样的感谢。

1 个答案:

答案 0 :(得分:6)

无论是否需要创建现有文档的新文档或新版本,我都无法理解。属性可以自动复制到新创建的版本,因此使用版本控制似乎更自然。要做到这一点:

// 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和复制属性的新文档(在保留新文档之前删除旧文档)。

更新

关于必须包含多个对象的原子更新,您有两个选择:

  1. 批量更新对象
  2. 使用客户端启动的JTA事务(如果使用EJB传输进行连接)
  3. 您可以在文档中了解这些内容:Batch ConceptsClient-Initiated Transactions

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