Lotus 的Domino 服 务 器 不 仅 是Notes 服 务 器, 还 是 一 个HTTP 服 务 器, 当 你 使 用Domino 服 务 器 作 为 你 的Web 站 点 时, 你 可 能 想 在 你 的 主 页 上 增 加 一 个 计 数 器, 告 诉 用 户 是 第 及 个 访 问 者, 并 且 你 也 可 以 把 它 作 为 统 计 你 的Web 站 点 访 问 情 况 的 一 个 重 要 数 据。 目 前, 在 标 准 的Web 服 务 器 上, 计 数 器 通 常 都 是 通 过CGI 程 序 来 实 现 的。 本 文 将 告 诉 你, 如 何 通 过Notes Designer for Domino 来 实 现 计 数 器。
下 面 简 要 的 介 绍 一 下Domino Web 服 务 器 工 作 原 理:
Domino 能 把 Notes 构 件( 如 导 航 器, 视 图, 表 单, 文 档, 链 接) 自 动 地 转 换 成 在 Web 浏 览 器 上 能 显 示 的 HTML 。 您 只 需 简 单 地 在 Notes 中 开 发 Web 应 用 程 序, 由 Domino 完 成 余 下 的 工 作。
* 设 计 你 站 点 的 主 页 表 单, 在 其 中 加 入 一“Count” 计 算 域, 用 来 显 示 此Web 页 面 的 访 问 次 数, 计 算 公 式 为“Count”。
* 设 计 一 个 代 理, 用 于 在 该 表 单 在 被 打 开 前 执 行, 我 们 用Notes 的Profile 文 档 来 存 放 页 面 被 访 问 的 次 数, 表 单 页 面 每 一 次 打 开 之 前, 都 要 先 读 取Profile 文 档 中 存 放 页 面 访 问 的 次 数, 加 一 后, 赋 给 表 单 的Count 域, 并 把 新 值 存 回 到Profile 文 档 中; 如 果 站 点 是 第 一 次 被 访 问,Profile 文 档 不 存 在, 这 时 只 需 表 单 的Count 域 赋 为1, 把1 存 回 到Profile 文 档 中。
1、 选 择 创 建- > 设 计- > 代 理
2、 把 新 建 的 代 理 命 名 为“Counter”
3、 设 置 代 理 属 性 为“ 共 享 代 理”, 运 行 此 代 理 的 时 间 设 为“ 从< 操 作 > 菜 单 选 择 执 行”, 指 定 代 理 操 作 的 文 档 设 为“ 运 行 一 次( 可 能 使 用@ 命 令)”
4、 选 中“Script”, 在Initialize 事 件 中 输 入 如 下 代 码
Sub Initialize
Dim Session As New NotesSession
Dim ProfileDoc As NotesDocument
Dim doc As NotesDocument
Dim CountNum As Double
Dim CountString As String
'得到当前数据库的句柄
Set db = Session.CurrentDatabase
'获得名为"CounterProfile"的Profile文档,
如还不存在,GetProfileDocument
'新建一个名为"CounterProfile"的Profile文档。
Set ProfileDoc = db.GetProfileDocument
("CounterProfile")
'得到驻留内存文档
Set doc = Session.DocumentContext
'从Profile文档的取得Web页面已被访问次数
CountString =ProfileDoc.Count(0)
If CountString < > "" Then
CountNum = Cdbl(CountString) + 1
Else '第一次访问该站点
CountNum = 1
End If
ProfileDoc.Count = Cstr(CountNum)
'新值存回到Profile文档中
Call profiledoc.save(False,False)
'将当前Web页面已被访问次数传
递给文档中的Count条目
doc.Count = CountNum
End Sub
5、 保 存 该 代 理
回 到 主 页 表 单, 在 该 表 单 的WebQueryOpen 事 件 中, 加 入 下 列 代 码 @Command([ToolsRunMacro]; "< Counter >")
我 们 知 道 在Notes 中 有QueryOpen 事 件, 在 当 前 文 档 被 打 开 前 发 生。WebQueryOpen 事 件 是 在 Domino 将 文 档 转 换 为 HTML 并 且 发 送 到 浏 览 器 之 前 运 行 代 理。
如 果 你 使 用 的 是Notes 早 期 版 本, 其 中 可 能 没 有WebQueryOpen 事 件, 那 么 你 可 以 在 表 单 中 填 加 一$$QueryOpenAgent 的 计 算 域, 把 其 缺 省 值 置 为 "Counter", 与 使 用WebQueryOpen 事 件 一 样。
* 在 公 用 通 讯 录 的 服 务 器 文 档 的 代 理 管 理 者 区 段, 把 你 的 加 入 到 运 行 受 限LotusScript/Java 代 理 中。
做 完 上 述 步 骤 后, 一 个 简 单 的 计 数 器 就 已 设 计 完 成, 这 样 每 当 一 个 用 户 访 问 你 的 页 面 时, 他 就 能 看 到 此 页 面 被 访 问 过 的 次 数。
你 可 以 点 击 浏 览 器 上 的 刷 新 按 钮, 你 将 看 到 每 刷 新 一 次, 访 问 次 数 将 回 加1。 你 可 以 把 它 们 加 入 到 你 用Notes 开 发 好 的Web 应 用 中 去。