Использование Java API для чтения документов Lotus Notes

Я использую Java API Lotus Notes 6.5.1 для чтения файла .nsf. Каждый документ в файле .nsf имеет историю нескольких документов. Просматривая документы в файле .nsf с помощью Java API Lotus Notes, я получаю все версии документов как отдельные документы.

Как убедиться, что Lotus Notes получает только последнюю версию каждого документа? Есть ли способ однозначно идентифицировать документ и всю его историю версий как его дочерние элементы?

Ответов (1)

Решение

В Notes Domino есть встроенная функция управления версиями документов. В зависимости от того, как он настроен в проекте базы данных (и при условии, что разработчик базы данных не развернул свои собственные), версии будут либо ответами на исходный родительский элемент, либо наоборот, когда новые версии станут родительскими, а более старые версии будут ответы.

Однако все это делается для автоматической настройки иерархии ответов в базе данных при редактировании документов. Как остальная часть проекта базы данных взаимодействует с этой иерархией, зависит от разработчика.

Что вы, вероятно, захотите сделать, так это создать представление, которое показывает только документы наверху иерархии ответов. Затем вы можете просмотреть это представление и знать, что документы, которые вы получаете из него, являются последними версиями.

Итак, если у вас есть документы, созданные с помощью формы «Статья», формула выбора вида будет такой.

SELECT form*="Article" & [email protected]($ref)

Это выбирает все документы статьи, которые не являются ответами. Теперь в коде вы можете просто открыть представление и пройти по нему.

После того, как вы разберетесь с документом, вы можете получить его немедленные дочерние ответы через

doc.getResponses()

Это возвращает, DocumentCollection что вы можете повторно найти ответы на ответы. Вы не можете получить родительский документ напрямую. Сначала вам нужно получить его идентификатор, doc.getParentDocumentUNID() а затем позвонить db.getDocumentByUNID() . Конечно, вы можете комбинировать это:

db.getDocumentByUNID(doc.getParentDocumentUNID())

В любом случае вам нужно будет посмотреть, что на самом деле делает ваша база данных, как она была изначально спроектирована и соответствовала этому.