Filenet 更改文档类

Posted

技术标签:

【中文标题】Filenet 更改文档类【英文标题】:Filenet Change Document Class 【发布时间】:2017-10-12 19:10:30 【问题描述】:

我正在尝试更改给定文档的类,下面是我使用的代码

Document p8Document = Factory.Document.getInstance(p8ObjectStore,
                oldDocumentClassName, new Id(documentId));
p8Document.changeClass(newDocClassName);
        p8Document.save(RefreshMode.REFRESH);

执行代码后,我可以看到文档类已成功更改。现在的问题是,如果我再次为同一个 guid 运行代码,下面的行会使用旧文档类名再次获取文档。

Document p8Document = Factory.Document.getInstance(p8ObjectStore,
                    oldDocumentClassName, new Id(documentId));

【问题讨论】:

【参考方案1】:

通过使用getInstance,您不会要求服务器验证对象的存在。请改用fetchInstance

来自Instantiating Objects

getInstance 方法用于实例化引用假定已经存在的服务器对象的对象。在 Content Engine 服务器上不会验证对象的存在,并且在您对对象执行功能之前不会往返于服务器

getInstance 是一种设置对象同时避免访问 CE 服务器的方法。

fetchInstance 方法通过首先往返于 Content Engine 服务器并检索(“获取”)属性值来实例化对象。

fetchInstance 实际上会从 CE 服务器检索对象。

【讨论】:

好吧,让我试试。 IBM 的代码 sn-p 使用了 getInstance,所以我使用了它 你的前两行代码没有问题。这是第 3 行的假设错误。 @ManjunathaMuniyappa 你有来自 IBM 的代码 sn-p 的 URL 吗?我或许可以解释他们为什么使用 getInstance。 给你先生,ibm.com/support/knowledgecenter/en/SSNW2F_5.2.0/… 查找行 doc.changeClass(“newDocClass”); 谢谢。在该示例中,IBM 向您展示了如何更改类,但从不引用文档的任何属性。因为不需要知道文档的当前属性,所以调用 getInstance 方法以节省时间。调用 Save 方法时,服务器会验证文档是否存在,如果找不到文档则抛出异常(我相信是 Object_Not_Found 异常)。如果他们需要在更改类之前验证属性,则需要在文档或属性上发生 fetchInstance。

以上是关于Filenet 更改文档类的主要内容,如果未能解决你的问题,请参考以下文章

在 FileNet CPE 中重新分类文档父类

找不到 IBM Filenet P8 更改预处理器 Java 实现

如何在不更改版本的情况下更新 Filenet 文档的内容?

FileNet:FileNet 文件夹中的文档总数

从文档中删除 SID - FileNet

IBM Filenet 如何与 Angular 应用程序集成