将对象添加到 Documentum DfCheckOutOperation 时出现异常

Exception When Adding an Object to a Documentum DfCheckOutOperation

我正在尝试编写一个 Documentum DFC 可执行文件,它将从给定的文档库中检出一个对象。我已经能够与文档库建立会话,检索要检出的对象并验证它是否尚未检出。但是当我尝试在以下代码中将对象添加到 DfCheckoutOperation 时

IDfCheckoutOperation checkoutOperation = new DfCheckoutOperation();
checkoutOperation.add(objToCheckOut);

我得到一个 NullPointerException;这是堆栈跟踪:

Exception in thread "main" java.lang.NullPointerException
    at com.documentum.operations.impl.OperationNodeTreeBuilder.populate(OperationNodeTreeBuilder.java:549)
    at com.documentum.operations.impl.OperationNodeTreeBuilder.add(OperationNodeTreeBuilder.java:65)
    at com.documentum.operations.DfOperation.add(DfOperation.java:324)

我做错了什么? 注意:两个对象引用都不为空,所以这不是典型的 NullPointerException 场景,即这不是重复问题

您需要在执行结帐操作之前检查一些事项:

  • 执行 objToCheckOut.isCheckedOut() 如果为真,您将无法继续结帐操作
  • 执行

if( objToCheckOut.getACL().getPermit(String accessorName) >= IDfACL.DF_PERMIT_WRITE) //continue with checkout operation.

此外,您可以使用 IDfACL.DF_PERMIT_VERSION 权限级别结账。

可能有什么东西阻止您执行执行操作。 阅读 this whitepaper 以获取更多信息 - 根据它,代码是按照它抛出 NullPointerException 的方式编写的,以防上面的某些内容不满足。

我 运行 遇到的问题源于我使用现在已过时的旧示例代码。我在网上找到的示例显然是 pre-Documentum-6.x,因此在我通过 new() 方法调用实例化 DfCheckoutOperation 的地方,我应该使用以下代码:

IDfClientX clientX = new DfClientX();
IDfCheckoutOperation checkoutOperation = clientX.getCheckoutOperation();

(我使用的 Documentum 版本是 6.7)我通过查看 EMC 社区论坛并找到具有类似操作问题的 post 解决了我的问题。

请注意,我实例化 DfCheckoutOperation 对象的方式并未生成空引用;我遇到的 NPE 源于 6.x 版本的 add() 方法实现中的其他对象。另请注意,评论中引用的白皮书中的结帐操作示例是最新的,因此请使用它来避免我遇到的情况。