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

StackOverflow https://stackoverflow.com/questions/591693

  •  09-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

doc.getResponses()

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

db.getDocumentByUNID(doc.getParentDocumentUNID())

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top