图 2. 邮件数据库的设计元素
1. 框架集(Frameset): 框架集是框架 (Frame) 的集合,用户可以使用它在用户的 We
b 站点或者 Notes 数据库中增加或者调整结构。
2. 表单(Form):表单是用于在数据库中输入和查看信息的框架,邮件数据库可以包
括基于若干个表单建立的文档。
3. 视图(View):视图是数据库中的文档列表。基于所选择的准则,可以显示数据库
的文档子集,或者所有的文档。基于文档的内容可以进行分组和排序。
4. 文件夹(Folder):文件夹在结构上类似于视图,他们可以罗列文档,但是文件夹不
具有选择规则,而是由用户来决定在文件夹中存储的内容,可以设置成私有或者共享的。
5. 页面(Page):页面是可以向终端用户显示信息的设计元素。它类似于表单,只是
它不能包含字段或者子表单。
6. 字段(Field):字段是表单上存储数据的独立元素。字段可以确定单独的文档所能
够包含的数据。文档中的每个字段都可以存储一种特定种类的数据。用户通常需要输入并且编辑字段值。例如人名、注释、电话号码、日期或计算结果。
7. 共享代码(Shared Code):是指能够在数据库之间进行共享的 Domino 代码和设
计元素。它包括:
a. 代理(Agent):能够让用户在 Domino 中自动执行许多任务。进行设置之
后能够在服务器上基于日程或者在出现特定事件的时候自动运行。
b. 大纲(Outlines):类似于图像映射和导航器,可以为用户提供导航应用的
方式。用户在大纲源进行一次改变,每个使用大纲源的导航结构都会动态进
行更新。大纲可导航到用户数据库的视图和文件夹,或者与用户应用以外的其他元素、URL 进行链接。
c. 子表单(Subform):可以在多个表单中使用的表单水平片段。
d. 共享字段(Shared Fields):可以在不同的表单中使用,一旦改变,所有应
用都相应改变。
e. 操作(Action):可以为执行例行任务提供只需点击一次的快捷方式,可替
代菜单选择。其中,可以为不能够访问 Notes 菜单的 Web 用户提供一种方式进行操作。操作能够进行共享,可在视图、子表单和表单上使用。 f. 脚本库(Script Library):存放共享代码的位置,可以选择执行语言。 g. 导航器(Navigator):作为图像映像出现在 Web 页面上,导航器提供了图
形化的方式来让用户查找文档或在打开的数据库中执行操作而不用打开视图。
8. 共享资源(Shared Resources): 能够在用户数据库之间共享的设计元素,有图像、
文件、小应用程序、数据连接、样式表等。 每个数据库都能够包含它自己的共享代码和共享资源,用户能够在其他数据库中访问共享元素。共享元素可以让用户在应用中反复应用资源,而只需要在一个标准为之对其进行维护。利用共享代码和资源,用户还能够使用一个数据库集中存储特定类型的元素。然后在其他数据库中引用这些元素。
案例介绍
前面我们从理论上介绍了如何对邮件模板进行二次开发,下面我们结合实际案例对这一部内容进行进一步地介绍。我们知道,随 Lotus Domino/Notes 一起发布的模板主要提供对邮件信息的管理。而在实际应用中,邮件信息往往是和商业活动相关联的。通过对邮件模板的定制,能够更好地和商业活动相关联。
下面我们介绍一个简单的例子,考虑一个公司的法律部门,这个部门的员工经常需要处理与合同有关的邮件,而邮件可能来自于不同重要程度的客户:VIP 客户、重要客户和普通客户。对于来自不同级别客户的邮件所采取的响应时间是不同的,需要有相应的优先处理级别。通过创建自定义操作,终端用户可以标识邮件来自于哪个级别的客户。通过使用后台运行的代理,终端用户可以定期收到关于现有邮件的统计信息。通过创建分类清晰视图,终端用户则可以清楚地看到分类同时有层次关系的邮件。 创建自定义操作
在 Notes 客户端中,终端用户可以选择在“操作”菜单下提供的一些系统功能。通过二次开发,“自定义操作”可以添加到“操作”菜单中。“自定义操作”用前面提到的代理来实现。代理可以用简单的功能、公式、LotusScript 或者 Java 进行编程,可以根据具体任务选择最佳相应的语言和技术。
在 IBM Lotus Domino “代理”,单击“新建代理”按钮。就可以创建一个新的代理。如图 3,我们分别创建了“合同管理?Designer 中,打开邮件数据库模板。单击设计框架的“共享代码” \\ 设置为 VIP 客户”,“合同管理 \\ 设置为重要客户”和“合同管理 \\ 设置为普通客户”三个代理。这里我们使用的反斜线是帮助创建二级操作。这三个代理同属于一个一级操作“合同管理”。
图 3. 使用 IBM Lotus Domino Designer 创建代理
在代理设计过程中,你需要指定代理名称、共享方式等基本信息。这些都比较容易理解。然而,选择代理何时运行,怎样运行以及怎么样处理对象是一个关键问题。通常代理可以“按事件”触发,也可以“按日程安排”来触发。创建自定义操作的代理,我们需要选择“按事件”触发。
表 3 “按事件”触发使用的选项和注意事项。
选项 说明
“操作”菜单选项用户激活的代理使用该选项,如果在 Web 上运行该代理时,使用 WebQu
erySave 或者 WebQueryOpen 事件。 (Action menu selection) 代理列表中选择 这项设置用于通过操作、按钮、URL 或其他代理调用的代理,具有这项设(Agent list sele置的代理不会出现在“操作”菜单中。 ction)
新邮件到达前 这项设置在邮件显示在邮件数据库之前用来处理邮件。 例如,移动新邮件(Before new m到一特定的文件夹。 ail arrives) 注意:一个邮件数据库里应至多有一个具有这项设置的代理。
新邮件到达后 这项设置在邮件显示在邮件数据库之后用来处理邮件。 例如,回复,转发(After new mail或者其他操作。
has arrived) 注意:一个邮件数据库里可以有多个具有这项设置的代理。 文档被创建或修改之后 这项设置适合于用来处理新邮件或者更改的邮件的工作流任务。代理管理器(After document会定期触发这样的代理在本地 Notes 客户端或者服务器端执行。
s are created or取决于服务器的负载,代理的执行可能有 5 到 30 分钟的延迟时间。 modified) 当文档被粘贴时 当文档被粘贴到邮件数据库时需要修改时使用这项设置。 (When documen注意: 这个选项需要用户触发,不能在后台运行。 ts are pasted)
服务器启动时 具有这项设置的代理只能在服务器启动时被执行,其他时候都不会被执行。(When server st如果你希望代理不但在服务器启动时,而且在其他时候都被执行,可以使用arts) 代理列表中选择选项,然后创建另外一个在服务器启动时被调用的代理。 在这里,需要代理对终端用户可见,同时由终端用户选择触发,我们选择“操作”菜单选项。接下来,需要指定代理触发时所采取的具体的动作。对于本列来说,我们选择针对来自不同客户的邮件可以进行不同的标记。在 _ViewIcon 字段上,如果是来自于 VIP 客户,标记 116(紫色图标);如果是来自于重要客户,标记 115(红色图标);如果是来自于重要客户,标记 114(绿色图标)。标记为紫色图标的 LotusScript 代码如下所示:
Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim collection As NotesDocumentCollection Dim doc As NotesDocument Set db = session.CurrentDatabase Set collection = db.UnprocessedDocuments Set doc = collection.GetFirstDocument() While Not(doc Is Nothing) Set itemA = doc.ReplaceItemValue( \
在 Notes 客户端所产生自定义操作如图 4 所示: