#xpages #lotus-notes #lotus-domino
#xpages #lotus-notes #lotus-domino
Вопрос:
Я пишу Java-код в службе XPage Rest на основеhttps://setza-projects.atlassian.net/wiki/spaces/RSD/pages/44007659/IBM Domino это служба REST, написанная на Java, используемая для обработки базы данных резервирования ресурсов. Однако, как это работает в настоящее время, это создает резервирования только для текущего пользователя сеанса:
private JsonObject createIntanceAppointment(ResourceDefinition rd, Database reDatabase, Date dtStart, Date dtEnd, String subject) throws NotesException {
Session session = reDatabase.getParent();
Name nnOrganizier = session.createName(session.getEffectiveUserName());
Name nnREsource = session.createName(rd.getFullName());
DateTime dt_startDateUTC = session.createDateTime(dtStart);
DateTime dt_endDateUTC = session.createDateTime(dtEnd);
Document doc = reDatabase.createDocument();
doc.replaceItemValue("form", "Reservation");
doc.replaceItemValue("Purpose", subject);
doc.replaceItemValue("ReservedFor", nnOrganizier.getCanonical());
doc.replaceItemValue("ResourceName", nnREsource.getAbbreviated());
doc.replaceItemValue("ResNameFormat", nnREsource.getAbbreviated());
Я делаю очень похожую интеграцию с Domino, хотя я бы предпочел, чтобы бронирования создавались для отдельных пользователей (они предоставляют свое имя пользователя и пароль в приложении бронирования номеров на сенсорном экране).
Я мог бы просто аутентифицироваться как пользователь в моем REST-клиенте, но если я правильно понимаю требования к установке для этого RoomZ api, «пользователь, управляющий api» должен быть подписан исключительно на базу данных, поэтому мне нужно было бы сделать это для каждого пользователя в Domino, который мог бы делать оговорки.
Я пытался использовать, NotesFactory.createSession("", "user", "password");
но это не работает, это выдает Cannot create a session from an agent
ошибку, если я не могу создать другой сеанс, есть ли какой-либо способ, которым я мог бы проверить, что username
и password
, переданные API в полезной нагрузке, верны (чтобы проверить, может ли пользователь войти в систему)? Тогда я мог бы просто установить органайзер / зарезервированный для этого пользователя.
Кроме того, есть ли какой-либо способ сделать так, чтобы эти оговорки также отображались в календаре заметок организатора? В настоящее время они успешно созданы в базе данных резервирования и все такое, но организатор не знает о них, несмотря на то, что он назначен для резервирования.
Ответ №1:
Вам не нужно создавать сеанс для каждого пользователя. Важным является nnOrganizer = session.createName(» «), который должен содержать пользователя. Возможно, вам также потребуется задать дополнительные поля, такие как chair или from, для резервирования.
Если вы хотите иметь какие-то записи в календаре организаторов, отправьте им соответствующее приглашение или создайте запись календаря в их почтовом файле.
Комментарии:
1. Но с помощью
nnOrganizer = session.createName("")
я смог успешно создать резервирование для любого случайного имени пользователя, например,nnOrganizer = session.createName("CN=asdasdasd/O=Server")
даже если пользователь не существовал на сервере Domino. Если идти этим путем, могу ли я как-то проверить, действительны ли некоторые учетные данные? Я бы отправил имя пользователя и пароль в полезной нагрузке json и подтвердил, что они действительны в Java XPage.2. минимальной проверкой было бы убедиться, что пользователь существует в каталоге, и если пользователь находится в каталоге, существует функция session.verifyPassword….
3. Спасибо, я проверю это. Что касается приглашения организатора (чтобы он также увидел резервирование в своем календаре), как я мог этого добиться?
4. В качестве отправной точки вы могли бы использовать, например, itknowledgeexchange. techtarget.com/itanswers/… . Доступна схема календаря и планирования от IBM, которая пытается объяснить все поля. www-10. lotus.com/ldd/ddwiki.nsf/dx/cs_schema_toc