gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:42:44 26 4
gpt4 key购买 nike

要求之一是用新内容更新文档并删除旧文档。前一个文档的文档 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 的新文档并手动复制属性(在保留新文档之前删除旧文档)。

更新

关于必须包含多个对象的原子更新,您有两个选择:
  • 批量更新对象
  • 使用客户端启动的 JTA 事务(如果您使用 EJB 传输进行连接)

  • 您可以在文档中阅读这些内容: Batch Concepts , Client-Initiated Transactions .

    除非您有复杂的更新场景,否则使用批处理是您通常会使用的更传统的方式。

    关于filenet-p8 - Filenet P8 5.1 和 5.2 删除/用新内容替换文档内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21535515/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com