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

时间:2016-05-18 20:05:44

标签: java checkout operation documentum dfc

我正在尝试编写一个Documentum DFC可执行文件,它将检出给定文档库中的对象。我已经能够与docbase建立会话,检索要检出的对象并验证它是否已经检出。但是当我尝试在下面的代码中将对象添加到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方案,即这不是重复的问题

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

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

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

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

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

可能会阻止您执行操作执行。 阅读this whitepaper以获取更多信息 - 根据它,代码的编写方式是NullPointerException,以防上述情况不满足。