检查文档由其他用户xpages打开

时间:2014-03-26 06:35:20

标签: xpages xpages-extlib xpages-ssjs

我正在使用xpages来处理以下场景。 我有一个代理程序将更新值来自notesview的数据源字段之一。有时,当一个用户通过xpage打开数据源时,其他用户同时运行代理。那时,代理可以运行并更新数据源字段。但是从xpages方面来说,我们可以捕获异常,因为该文档被其他用户修改并且无法保存xpages。 我想从代理方面阻止这种情况。我想知道是否有办法知道该文档是由代理端的用户之一打开的,因此代理不会更新该数据源的值。 谢谢您帮忙。

1 个答案:

答案 0 :(得分:0)

首先:混合代理和XPages比它的价值更麻烦,你最好将代理代码转换为Java类(并支付代理中随时间积累的技术债务)。

一个大的原因:代理和XPage在该用户的会话中不共享内存中的文档(如果移交)。

如果从XPage启动代理:您可以使用在用户打开文档时使用unid和username填充的ApplicationScope变量(例如java.util.HashMap)。在启动该代理之前,如果unid在内部使用不同的用户名,则检查范围。如果是,请不要运行代理。

您需要构建一个机制来使这些锁过期并更新这些锁,否则最终会导致死锁条目。

如果代理是直接启动或按计划启动,事情会变得复杂一些。您可以实现一个处理锁的Web服务servlet,因为XPage和代理都可以与Web服务进行通信。