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 更改文档类的主要内容,如果未能解决你的问题,请参考以下文章