Использование Java API для чтения документов Lotus Notes - PullRequest
3 голосов
/ 26 февраля 2009

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

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

1 Ответ

3 голосов
/ 27 февраля 2009

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

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

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

Таким образом, если у вас есть документы, созданные с формой "Статья", формула выбора вида будет такой:

SELECT form*="Article" & !@IsAvailable($ref)

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

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

doc.getResponses()

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

db.getDocumentByUNID(doc.getParentDocumentUNID())

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

...