Исключение при добавлении объекта в 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, т. Е. Это не повторяющийся вопрос
2 ответа
Проблема, с которой я столкнулся, возникла из-за использования старого образца кода, который сейчас устарел. Примером, который я нашел в Интернете, был, по-видимому, pre-Documentum-6.x, поэтому, где я создавал экземпляр DfCheckoutOperation через new()
вызов метода, я должен был использовать следующий код:
IDfClientX clientX = new DfClientX();
IDfCheckoutOperation checkoutOperation = clientX.getCheckoutOperation();
(Версия Documentum, которую я использую, - 6.7). Я разобрался в своей проблеме, просмотрев форум сообщества EMC и найдя пост с похожей операционной проблемой.
Обратите внимание, что способ создания экземпляра моего объекта DfCheckoutOperation не генерировал нулевую ссылку; NPE, который я испытал, проистекает из какого-то другого объекта в рамках реализации add()
метод выпуска 6.x. Также обратите внимание, что пример операции извлечения в официальном документе, цитируемом в комментариях, является современным, поэтому используйте его, чтобы избежать ситуации, в которой я оказался.
Вам нужно проверить некоторые вещи перед выполнением операции оформления заказа:
- выполнять
objToCheckOut.isCheckedOut()
если истина, вы не можете продолжить операцию проверки - выполнять
if( objToCheckOut.getACL().getPermit(String accessorName)
>= IDfACL.DF_PERMIT_WRITE)
//continue with checkout operation.
Кроме того, вы можете оформить заказ с уровнем разрешения IDfACL.DF_PERMIT_VERSION
,
Возможно, что-то мешает выполнить команду "Выполнить". Прочтите этот документ для получения дополнительной информации - в соответствии с ним, код был написан так, как он бросает NullPointerException
если что-то из вышеперечисленного не выполнено