проверить, открыт ли документ другим пользователем xpages

Я работаю с xpages для следующего сценария. У меня есть один агент, который обновит значение до одного из полей источника данных из notesview. иногда, когда один пользователь открывает источник данных через xpage, а другой пользователь одновременно запускает агент. в это время агент может запустить и обновить поле источника данных. но со стороны xpages мы можем поймать исключение, поскольку документ изменен другим пользователем и не может сохранить xpages. Я хотел бы предотвратить это со стороны агента. Я хотел бы знать, есть ли способ узнать, что документ открыт одним из пользователей со стороны агента, чтобы этот агент не обновлял значение для этого источника данных. Спасибо за помощь.


person user3462661    schedule 26.03.2014    source источник


Ответы (1)


Прежде всего: смешивание агента и XPages — это больше хлопот, чем того стоит, вам лучше преобразовать свой код агента в класс Java (и оплатить накопившийся за время технический долг в агенте).

Одна БОЛЬШАЯ причина: агент и XPages не имеют ничего общего, кроме документа в памяти (если передано) в сеансе этого одного пользователя.

Если вы запускаете агент из XPage: вы можете использовать переменную ApplicationScope (например, java.util.HashMap), которую вы заполняете unid и именем пользователя, когда пользователь открывает документ. Прежде чем запускать этот агент, вы проверяете область действия, не находится ли внутри unid с другим именем пользователя. Если да, не запускайте агент.

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

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

person stwissel    schedule 27.03.2014