【问题标题】:Filenet Change Document ClassFilenet 更改文档类
【发布时间】: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));

【问题讨论】:

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


    【解决方案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。
    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多