首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

为 IBM Lotus Domino 应用程序添加提醒功能(3)

为 IBM Lotus Domino 应用程序添加提醒功能(3)

通过 Refresh_Logged_in_user_list 代理确保用户退出系统refreshUserMsg 代理将更新每个用户的文档,对于每个到达代理的请求,都会使用最后修改日期来更新文档。只要用户停留在其中一个启用了提醒的页面上 —— 即上述带有 JavaScript 代码的页面,那么该用户的用户文档就会具有一个递增的时间戳。当用户关闭浏览器或离开应用程序后,时间戳将停止工作。您可以利用此行为来判断用户没有在线,通过使用预定的代理来检查时间戳,并在出现更新的时间戳时重置用户状态。
我们将用户状态变为离线的时间间隔设置为两分钟。代理如清单 4 所示。
清单 4. Refresh_Logged_in_user_list 代理
1
2
3
4
5
SELECT Form = "user" & status != "not logged in"
& @Adjust(@Now;0;0;0;0;-2;0) > @Modified;
@Do(
@SetField("status" ; "not logged in")
)




可以在视图中完成此任务,不过您可能知道在视图中违反代码编写规范并使用 @Now 时将面临的问题。将代理排定为按照 Lotus Domino 所允许的时间间隔(五分钟间隔)来运行,这样在某些用户已经停止活动后,其在线状态仍将保持两分钟以上。
通过 e-msg 表单来发送和接收消息如图 5 所示,e-msg 表单将定义所发送的消息。它既用于开始消息交换,也用于读取和响应。请注意,即使表单用于读取所发送的消息,也总是使用 ?OpenForm URL 命令来打开表单。您可以使用该命令直接从相同的页面创建响应。文档的惟一 ID 将作为参数进行发送,您可以通过使用 @GetDocField 命令方便地获得消息内容。
图 5. e-msg 表单首次启动此表单时,将使用 openForm&to=Tomas%20Nielsen 这样的参数。表单的 To 字段将获得该参数,并利用它将消息传递到正确用户。如果需要接收方答复,那么第二次使用该表单时将发送两个参数 to 和 unid。unid 描述了用来存储要显示的消息的文档;然后参数通过使用 @GetDocField 公式来检索消息主体。
如果您的用户启用了弹出窗口拦截器,则应该允许在您自己的域内弹出窗口。否则将无法接收消息。若要避开此类拦截器,您可以使用 DHTML。如果用户在传递消息前关闭了浏览器,则消息将处于等待状态直到用户再次登录系统,并在载入首页时传递消息。
返回列表