Исключение при добавлении объекта в 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 если что-то из вышеперечисленного не выполнено

Другие вопросы по тегам