Jasmine 香 飘 茉 莉 开---- “ 多 能 奔 腾CPU、32MB 内 存( 推 荐64MB)、200MB 自 由 硬 盘 空 间( 推 荐300MB)、Windows NT 4.0 … …”, 这 些 在 目 前 的 普 通 用 户 中 还 难 以 随 手 实 现 的 组 合, 却 仅 仅 是Jasmine 所 要 求 的 最 低 配 置。 当 我 拿 到CA 公 司(Computer Associates International, Inc.) 的 最 新 数 据 库 产 品Jasmine( 茉 莉 花) 时, 某 种 高 不 可 攀 的 神 秘 感 一 下 子 吸 引 了 我。 ---- 在 关 系 数 据 库 统 治 数 据 库 市 场 的 今 天, 各 大 传 统 的 数 据 库 厂 商, 像Oracle 和IBM, 纷 纷 推 出 基 于Web 和 多 媒 体 的 新 型 数 据 库 系 统, 此 时CA 公 司 也 推 出 以 面 向 对 象 为 旗 帜 的 数 据 库 产 品Jasmine。 而 与 其 他 多 数 厂 商 的 关 系 对 象 型 数 据 库 不 同 的 是,Jasmine 属 纯 面 向 对 象 型 数 据 库, 这 一 特 点 更 令 我 感 到 神 秘 莫 测。 强 大 的 功 能Jasmine 的 完 全 安 装 需 要 约175MB 的 磁 盘 空 间, 安 装 选 项 含 有 数 据 库 对 象、 数 据 库 管 理 和 开 发 环 境、Web 连 接 管 理 等, 用 户 可 以 根 据 自 己 的 需 要 选 择 安 装 相 应 的 部 件。---- 对Web 和 多 媒 体 的 强 力 支 持 是Jasmine 的 主 要 特 色。Jasmine 带 有 支 持Internet 的HTTP Server 和Web Server 部 件, 可 以 将 数 据 库 直 接 建 立 在Web 服 务 器 上。 设 计 者 还 可 以 通 过 对Jasmine 内 部Internet Explorer 或Netscape Navigator 插 件 的 定 制 设 计, 方 便 地 实 现Internet 的 访 问 功 能。Jasmine 的 应 用 程 序 既 可 以 建 立 成 客 户 机/ 服 务 器 结 构, 也 可 以 设 计 为 通 过Netscape Navigator 或Internet Explorer 等 网 络 浏 览 器 直 接 访 问 的 网 页。 ---- 在 利 用Jasmine 进 行 多 媒 体 数 据 库 开 发 时, 开 发 者 肯 定 会 在Jasmine 的 应 用 程 序 开 发 环 境(Jasmine Application Development Enviroment,JADE) 的 可 视 化 设 计 环 境 中 尽 享 对 象 数 据 库 开 发 的 乐 趣。 此 外, 开 发 者 还 可 以 利 用 目 前 流 行 的 各 种 开 发 工 具, 如Visual C++、Java、Visual Basic 和ActiveX 等, 建 立 自 己 的 数 据 库 系 统。Jasmine 提 供 了C API 和 对 象 数 据 库 查 询 语 言ODQL(Object Database Query Language), 原 先 那 些 不 得 不 进 行 代 码 设 计 的 应 用 程 序, 在Jasmine 的 环 境 下 一 下 子 变 得 既 简 单 又 规 范。 方 便 灵 活 的JADE---- Jasmine 应 用 程 序 开 发 环 境 称 为JADE(Jasmine Application Development Environment)。JADE 是 多 功 能 的 面 向 对 象 数 据 库 开 发 工 具, 通 过 它 用 户 可 以 建 立 和 设 计 多 平 台、 可 用 于Web 的Jasmine 多 媒 体 应 用 程 序; 同 时,JADE 还 可 以 对 数 据 库 数 据 进 行 管 理。---- 进 入JADE 先 要 建 立 和 数 据 库 的 连 接, 此 连 接 既 可 以 建 立 在 单 机 上, 也 可 以 设 计 为 分 布 式 客 户 机/ 服 务 器 结 构, 甚 至 可 以 建 立 成Internet 的 远 程 连 接。 在 下 面 的 例 子 中 我 们 选 择Jasmine 的 本 地 连 接“local”。 ---- JADE 中 的 一 个 程 序 是 一 个Application 对 象, 在 每 个Application 中 有 含 有 多 个Scene 对 象, 每 一 个Scene 相 当 于 一 个 图 形 界 面。 在JADE 的 可 视 化 编 程 中, 设 计 者 要 做 的 就 是 从 对 象 类 库 中 拖 动 某 一 对 象 到Scene 中, 并 赋 予 此 对 象 相 应 的 动 作。 应 用 程 序 的 运 行 就 表 现 为Scene 中 对 象 的 动 作 和Scene 之 间 的 切 换。 在JADE 中 进 行 设 计, 可 随 时 运 行Scene 来 查 看 设 计 的 效 果。 强 力 且 有 趣 的 多 媒 体 开 发---- 下 面 通 过 一 个 例 子 来 看 一 看JADE 中 功 能 强 大 且 有 趣 的 多 媒 体 开 发。---- 在JADE 应 用 程 序 管 理 器(JADE Application Manager) 中, 利 用 菜 单File-New 生 成 一 个 新 的Application, 命 名 为MyApp。 选 中MyApp, 再 用New 菜 单 生 成MyApp 的 两 个Scene。(New 功 能 还 可 以 通 过 鼠 标 右 击 对 象, 然 后 在 弹 出 菜 单 中 选 择 来 获 得。) 这 样 就 建 立 了 一 个 含 有 两 个Scene 的 应 用 程 序, 将 这 两 个Scene 分 别 命 名 为MyScene1 和MyScene2( 如 图1)。 ![]() 图 1 在JADE 应 用 管 理 器 中 进 行Scene 设 计 ---- 在 图1 中, 用 户 区 的 左 边 是Application 的 结 构, 右 边 显 示 的 是 当 前Scene 的 一 些 外 在 特 性, 如 分 辨 率、 设 计 时 是 否 需 要 网 格 等。 选 中MyScene1, 用 菜 单File-New-Object 或 工 具 条 中 的 对 应 图 标 激 活JADE Class Browser 窗 口。JADE Class Browser 是Jasmine 进 行 数 据 库 类 和 数 据 管 理 的 窗 口, 在JADE Class Browser 中, 我 们 可 以 引 用Jasmine 类 库 中 的 对 象, 可 以 设 计 和 修 改 自 己 的 类 和 其 中 的 对 象。 ---- Jasmine 的 类 都 是 逐 层 分 布 的。JADE Class Browser 窗 口 中, 选 中CAStore 类 族, 一 层 层 地 展 开, 从 中 找 出Background 类。 此 时, 用 户 区 右 边 列 出 了Background 类 中 的 实 例, 如 图2。 ![]() 图2 JADE 的 类 浏 览 器 ---- 用 鼠 标 把 对 象 实 例 中 的clouds 拖 到NewScene1 中, 松 开 鼠 标 时, 那 个 红 色 的 方 块 图 标 竟 然 变 成 了 一 幅 蓝 天 白 云 的 图 像。 注 意 到 了 吗 ? 这 是 关 于Jasmine 程 序 设 计 的 一 个 关 键 时 刻,Jasmine 的 程 序 设 计 就 是 在 这 样 的 拖 动 中 实 现 的 ! 调 整clouds 图 像 的 位 置, 使 此 背 景 和NewScene1 的 边 框 吻 合。 ---- 然 后 再 用 类 似 的 方 法 从Button 类 中 将 三 个Belts 对 象 拖 至NewScene1 中。 这 样 就 做 成 了NewScene1 的 背 景 和 三 个 控 制 按 钮, 下 面 我 们 在 其 中 加 入 查 询。 ---- 在JADE Class Browser 中 逐 级 打 开CA Composite-Active Object-Piece-Garmen, 选 中Garment, 然 后 选 中 此 窗 口 右 半 部 分 的Queries 栏, 在 其 中 生 成 一 个 新 的 查 询 对 象 — —NewQuery。 双 击 此 对 象, 就 会 弹 出 一 个 名 为Query Editor 的 窗 口, 我 们 可 以 在 此 窗 口 中 对 这 个 查 询 对 象 进 行 编 辑。 在 本 例 中 仅 用 简 单 地 设 置hot 项 大 于0, 如 图3。 ![]() 图3 Jasmine 的 查 询 编 辑 器 ---- 这 时 选Results 栏 就 能 够 看 到 满 足 查 询 条 件 的 所 有Garment 的 对 象。 再 回 到JADE Class Browser 窗 口, 拖 动NewQuery 到MyScene1。 此 查 询 对 象 在MyScene1 中 显 示 为 多 个 立 体 堆 积 的 立 方 盒 子。 ---- 鼠 标 右 击NewQuery 图 标, 在 弹 出 的 菜 单 中 选 择New Display Holder 项, 会 发 现 在MyScene1 中 出 现 了 一 个 小 图 片, 这 是 用 来 显 示NewQuery 的 查 询 结 果 的。 用 这 种 方 法 生 成 两 个 这 样 的 图 片, 如 图4 排 列 好。 再 右 击NewQuery 图 标, 选 择Property Inspector 项, 进 入NewQuery 的 特 性 窗 口。 在 其 中 找 出photo 特 性 对 象, 将 其 拖 至MyScene1 中。 如 图4, 此photo 对 象 在MyScene1 中 显 现 为 一 个 稍 大 的 图 片。 ![]() 图4 在 场 景 中 插 入 图 片 ---- 下 面 来 给 各 个 对 象 加 入 其 相 应 的 动 作。 右 击NewQuery 图 标, 选 择Behavior, 这 样 就 激 活 了Behavior 窗 口( 图5)。 ![]() 图5 查 询 中 的 动 作 窗 口 ---- 在 图5 显 示 的 动 作 窗 口 中, 有Selected Item、Message 和Action 三 栏, 分 别 对 应 发 生 动 作 的 对 象、 此 对 象 响 应 的 消 息 以 及 在 此 消 息 下 产 生 的 动 作。 图 中 的Jasmine_Query_10 是NewQuery 在 本 例 中 的 名 字。 从 图 中 可 以 看 出 对 此 对 象 动 作 属 性 的 设 置。 以 第 一 行 为 例 说 明 一 下Behavior 窗 口 各 栏 的 含 义:Jasmine_Query_10 对 象 收 到 鼠 标 左 击 事 件 时, 向Garment_photo_14 发 送Show Request 消 息。 此 处 的Garment_photo_14 即 前 面 提 到 的photo 对 象。 ---- 在Jasmine 中, 本 例 中 的 查 询 结 果 是 在 两 个 小 图 片 框 中 体 现 出 来 的, 所 以 鼠 标 左 点 事 件 发 生 在 这 两 个 小 图 片 框 上 就 会 向Jasmine_Query_10 对 象 发 送Left Click 消 息。 ---- 下 面 来 设 置Garment_photo_14 的Behavior 属 性, 如 下:
---- 这 样, 当 程 序 运 行 时, 左 下 的 两 个 小 画 框 显 示 出Garment 类 中 满 足 查 询 条 件 的 前 两 个 对 象。 用 鼠 标 左 击 其 中 的 一 项, 此 图 片 就 会 在 右 边 大 图 片 框 中 放 大 显 示。 图6 就 是 在 此 设 计 基 础 上 的MyScene1 的 运 行 图, 左 上 显 示 的 是 一 个 正 在 播 放 的Video 文 件。 ![]() 图6 一 个 设 计 好 的 可 激 活 视 频 播 放 的 程 序 ---- 下 面 就 加 入 刚 刚 提 到 的Video 对 象, 并 通 过 设 置 三 个 按 钮 的 属 性 来 展 示Jasmine 中 除 图 片 以 外 的 其 他 媒 体( 本 例 中 是Video) 加 载 和 不 同Scene 之 间 的 连 接。 ---- 在CAComposite 类 族 中 逐 层 找 到Movies 类, 双 击 其 中 的Welcome 对 象 打 开Welcome 对 象 的 特 性 窗 口。 在Welcome 对 象 的 特 性 窗 口 中 可 以 看 到 显 示 为 一 个 小 摄 像 机 图 标 的Video 属 性( 图7), 将 此 属 性 对 象 拖 到MyScene1 中。 在MyScene1 中, 此 对 象 仍 显 示 为 一 个 小 摄 像 机 图 标。 ![]() 图7 JADE 的 对 象 特 征 窗 口 ---- 下 面 是 对MyScene1 中 按 钮 和Video 对 象Behavior 的 设 置:
---- 上 表 中, 按 钮5 和 按 钮6 发 送 的 消 息 分 别 是Play Video Start 和Play Video End, 这 两 个 消 息 都 是 送 向Video 对 象Movies_video_15 的。 按 钮7 的Behavior 中 的Change Scene 动 作 的 参 数 是MyScene2, 即 将 当 前Scene 改 为MyScene2。 ---- 再 回 过 头 来 看 一 下 图6, 运 行 时 先 显 示 左 下 的 两 个 小 图 片, 点 中 其 中 的 一 个 就 会 在 大 图 片 框 中 放 大 显 示 此 图 片。 按 第 一 个 按 钮, 左 上 就 会 播 放Welcome Video, 按 第 二 个 按 钮 停 止 播 放。 右 下 的 按 钮 负 责 切 换 到MyScene2。 ---- 怎 么 样 ? 是 不 是 非 常 简 单 有 趣 ? 仅 在 鼠 标 点 拉 之 间, 一 个 可 爱 的 多 媒 体 程 序 就 完 成 了。 方 便 的 类 及 对 象 设 计---- 下 面 让 我 们 回 过 头 来 简 单 地 看 看 如 何 在 数 据 库 中 建 立 自 己 的 类 和 数 据。---- 在JADE Class Browser 窗 口 中 用File-New 菜 单 生 成 类MyClass 和 它 的 子 类Mysub。 右 击Mysub, 在 弹 出 菜 单 中 选 择Build 建 立 数 据 库 的 类( 图8)。 ---- 建 立 了Mysub 类 之 后, 在 弹 出 菜 单 中 选 择Tear off 将Mysub 提 取 出 来, 双 击Mysub 弹 出Mysub 的 类 特 性 窗 口。 在Mysub 的 类 特 性 窗 口 中 能 够 生 成 新 特 性 并 对 此 特 性 进 行 编 辑。 如 图9, 设 置Class Family 为mediaCF,Class 为CAVideo。 ![]() 图8 在JADE 浏 览 器 中 建 立 Mysub类 ![]() 图9 在JADE类 特 征 浏 览 器 中 设 置 类 的 属 性 ---- 在Mysub 类 的 特 性 设 置 完 成 后 就 可 以 关 闭 此 窗 口, 返 回 到Mysub 的JADE Class Browser 窗 口 创 建 对 象。 在Mysub 的JADE Class Browser 窗 口 中 生 成 一 个 新 的Mysub 对 象, 打 开 此 对 象, 窗 口 显 示 和 图7 类 似。 从NT 的 资 源 管 理 器 中 找 出 需 要 的.avi 文 件, 拖 放 到 图 中 摄 像 机 图 标 上, 随 着 鼠 标 的 松 开, 一 个Mysub 对 象 就 在 数 据 库 中 生 成 了。 选 择 此 对 象 的Edit 命 令 还 可 以 立 刻 欣 赏 这 个.avi 文 件。 ---- 在Jasmine 中 建 立 别 的 类 型 的 数 据 对 象 也 同 样 简 单, 这 里 也 就 不 再 赘 述。 ---- 总 的 来 说,Jasmine 所 提 供 的 功 能 是 十 分 强 大 的, 如 本 文 中 没 有 提 到 的Web 功 能 和 与 各 种 当 今 流 行 的 开 发 工 具 的 接 口 等。 经 过 对Jasmine 的 一 段 时 间 的 使 用, 我 觉 得, 无 论 是 开 发Jasmine 应 用 程 序 还 是 使 用Jasmine 应 用 程 序 都 将 是 一 件 轻 松 有 趣 的 事 情。 在 目 前Internet 和 多 媒 体 的 时 代,Jasmine 肯 定 可 以 凭 其 在 这 方 面 的 优 势 有 所 作 为。 ---- 此 时 我 想 到, 其 实 我 们 没 有 必 要 在 到 底 纯 对 象 数 据 库 好 还 是 对 象 关 系 混 合 型 数 据 库 好 这 个 问 题 上 争 论 不 休。 只 要 功 能 强 大, 只 要 使 用 简 单, 用 户 就 会 喜 欢。( 徐 彤 理 工 大 学 博 士 生) 中国计算机世界出版服务公司版权所有 |