将对象添加到 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()
方法实现中的其他对象。另请注意,评论中引用的白皮书中的结帐操作示例是最新的,因此请使用它来避免我遇到的情况。
我正在尝试编写一个 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()
方法实现中的其他对象。另请注意,评论中引用的白皮书中的结帐操作示例是最新的,因此请使用它来避免我遇到的情况。