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 应 用 中 去。