内容


设计复合应用程序:IBM Lotus Notes 组件

Comments

编者注:本文是正在 developerWorks® Lotus 上发表的复合应用程序系列文章的第六篇。请参阅前几篇 developerWorks 文章 “IBM Lotus Notes V8 中的 Lead Manager 应用程序:概览”、“设计复合应用程序:组件设计”、“设计复合应用程序:设计模式”、“设计复合应用程序:单元测试” 和 “设计复合应用程序:为 IBM Lotus Notes 编写 Eclipse 组件”。

关于本系列文章

复合应用程序是面向服务体系结构(Service-Oriented Architecture,SOA)和上下文协作策略中的关键元素。它们为公司和组织提供业务灵活性,从而能够快速响应当今竞争激烈的市场中的需求变化。复合应用程序由松散耦合的用户界面 (UI) 组件组成,支持组件之间的通信。

组件可以在多个复合应用程序中重用。能够将多种技术组合成一个应用程序,这种能力可以提供巨大的商业价值。它可以保护和扩展公司现有的软件资产,增加业务灵活性。与传统的应用程序开发方式相比,创建复合应用程序要容易得多,这帮助公司快速且成本高效地响应业务需求。

复合应用程序体系结构的这种松散耦合还使位于不同地点的小组可以相互分享工作成果并进行协作。例如,一个部门正在为一家公司开发会计应用程序,而另一个小组正在开发销售趋势跟踪应用程序。复合应用程序的设想是将销售趋势跟踪应用程序中的一些组件添加到会计应用程序中,从而按照会计学的上下文提供相关的资产视图。同样,在销售趋势跟踪应用程序中也可以添加会计应用程序中的组件,从而按照资产的上下文提供会计信息。随着您的公司开发出的复合应用程序越来越多,共享组件的机会会呈指数式增长。这种体系结构的目的就是让整体大于部分之和。

复合应用程序模型是 IBM WebSphere® Portal 开发人员已经熟悉的模型。这种方式已经扩展到 Lotus Notes 8 中,这让 Lotus Notes 开发人员能够在复合应用程序中以组件形式提供他们的 Lotus Notes 应用程序。IBM Lotus Domino® Designer 已经可以使用属性代理,并提供一个更直观的用户环境。Lotus Notes 8 还支持插入 Eclipse 组件。复合应用程序可以是 Lotus Notes 组件和 Eclipse 组件的任意组合。这些组件可以同时出现在界面(on-the-glass)集成的同一个用户界面 (UI) 中;如果进行扩展,也可以通过属性代理让组件可以互相操作。可以使用复合应用程序编辑器或 WebSphere Portal 应用程序模板编辑器定义复合应用程序。

简介

Lotus Domino Designer 8 Help 在 “复合应用程序 —— 设计和管理” 部分中讨论了如何构建 Lotus Notes 组件。该部分讨论了使用的 API,包括帮助您创建基于 Lotus Notes 组件的简单复合应用程序示例,而且还介绍了如何从头开始创建基本组件。

本文在上述基础上又提供了一些在复合应用程序使用现有 Lotus Notes 应用程序的提示和技巧。我们使用了现有 Lotus Notes 应用程序示例来探究发布在 Lotus Sandbox 的 针对 IBM Lotus Notes V8 的 Lead Manager 复合应用程序示例 中的一些组件。

先决条件

本文假定您熟悉 Lotus Notes 中的复合应用程序,请参考 IBM Lotus Domino Designer Help 中的复合应用程序部分。

然后应当查阅先前引用过的本系列的前四篇文章,这几篇文章介绍了高级组件设计。这些文章讨论了以域为中心的组件和上下文域组件,它们本身都是元模式。

体系结构决策

当考虑 Lotus Notes 应用程序开发时,通常会想到表单、视图、框架集和其他组件。在把 Lotus Notes 应用程序重新考虑为复合应用程序时,很自然地会认为只需提取这些现有构建块并为它们分别构建组件。

在考虑诸如表单和视图之类的低级设计构造时,可能通常会使用这其中的一个或多个元素来表现单个逻辑单元。例如,您可能有若干个以各种方式显示数据选项的视图。复合应用程序的组件都是围绕构成应用程序的逻辑单元精心设计的,而不是围绕刚好用于设计这些组件的 Lotus Notes 设计构造。

较高级别的聚合构造(例如框架集、页面或轮廓)用于构建特定用户界面。这些构造通常设计用于在 Lotus Notes 客户机或浏览器中最佳地展示应用程序。优秀的组件应用程序的设计目标是在侧重于所显示信息的应用程序中,或者在仅使用信息突出显示其他组件信息的应用程序中,设计可以通过各种方法使用的 UI 元素。虽然这两个目标不是对立的,但是两者有时很难协调。

把 Lotus Notes 应用程序组件化的最简单方法是返回到其最初的抽象设计。几乎所有 Lotus Notes 应用程序都是基于一个或多个数据元素类型。数据元素类型是一个信息单位,用含有一组值的 Lotus Notes 文档来表示。应用程序的业务逻辑将定义这些文档的生命周期、如何构造这些文档中的值以及这些文档如何与其他文档关联。表单把数据以特定方式呈现给用户。视图使用对用户和工作流有意义的各种方式显示文档集。

例如,讨论数据库中的基本数据元素是个人使用文档形式发表的帖子。在文档级别上,数据值可以是主题、文档主体以及许多其他值(例如创建者或撰写日期)。数据库的业务逻辑将通过 child-parent 层次结构把这些文档组织成讨论线索。表单根据业务逻辑定义的三种基本关系类型 —— 主题、回复和回复的回复 —— 显示这些数据。有很多视图根据此层次结构显示文档,分为多个类别并按创建者、日期和其他条件进行索引。

有很多种抽象方法可以把这些元素视为组件:

  • 详细信息:此组件用于在它成为关注焦点时相应地显示单个数据元素的大部分信息。
  • 摘要信息:此组件用于在它不受关注时相应地显示单个数据元素的某些信息。
  • 编辑模式:此组件用于为改变单个数据元素的信息内容提供用户界面。
  • 列表:此组件用于显示数据元素集。
  • 约束列表:此组件用于显示受某个因素约束的数据元素子集。

此列表并不十分详尽。根据应用程序的复杂度,可能会出现其他抽象类型。同样,其中一些类型可以获得不同的实现。如果 Lotus Notes 应用程序有若干个数据元素,则每个数据元素可能有一个或多个抽象类型的组件。

提供此列表的目的是为您提供一个起点,考虑如何把 Lotus Notes 应用程序呈现为组件集。我们现在将详细查看这些组件类型并讨论实现方法。

通用组件模式

创建组件的挑战之一是如何设计意外情况。最佳组件是在各种场景中都可以使用的那些组件;但是,很难十全十美。在最高、最常见级别上,我们可以通过查看如何部署组件集合来获得一些设计指导。具体来讲,有两种模式的出现频率似乎比其他模式更高:窄栏和宽栏以及焦点(focus)和外围(periphery)。

窄栏和宽栏

许多页面布局环境允许您在多个样式之中做出选择。这些样式通常都归结到添加固定数目的窄栏或宽栏。由于这个说法十分常见,因此指定组件使用窄栏还是宽栏就十分有意义。这种方法允许您更好地针对目标环境衡量 UI。例如,如果目标环境是宽栏,则可能使用字段标签来设置同一行中的字段前缀;如果环境要求指向窄栏,则可能需要调整它,以便使前缀标签垂直位于目标字段之上。

在销售趋势跟踪应用程序的 Sales Leads 页面中,有三个窄栏组件和一个宽栏组件。摘要信息组件(例如,Lead Details 和 Company Information)包含的信息较少并且是以适于窄栏显示的简洁形式显示。同样,如果需要在窄栏中显示视图,则可以选择显示少量相关的信息栏。在销售趋势跟踪应用程序中,图 1 左侧的 Sales Leads Browser 是一个很好的例子。相反,受限的 Pending Leads 和 Closed Leads 附签式视图包含许多栏并且适合显示在宽栏中。

图 1. 窄栏和宽栏示例
窄栏和宽栏示例
窄栏和宽栏示例

焦点和外围

此布局技术将使用指示板说明。一个重要组件是关注焦点。安排在外围区域的是提供与焦点组件相关的附加信息的其他组件。对于组件设计,此概念表示是要把组件设计成关注焦点,还是充分利用它以便为其他重要组件提供补充信息。

在销售趋势跟踪应用程序示例中,诸如 Company Details(位于图 2 的中心)之类占用较大屏幕可用区域的组件或者编辑模式组件都非常适合设计为关注的焦点。诸如摘要信息或约束列表(位于图 2 的底部)之类的其他组件最适于辅助布局,因为它们的显示依赖于其他上下文设置。

图 2. 焦点和外围示例
焦点和外围示例
焦点和外围示例

选择组件属性

由于这里讨论的每个组件类型都与一种数据元素类型有关,因此它共享一个公开的通用属性集。常见的公开属性是数据元素中的大多数字段。应当在公开每个可能的字段(计算或相反)与只公开所需的最少字段之间进行权衡。最理想的组件是可以在超出其最初概念的领域中重用的组件。公开的属性越多,重用的机会就越大,并且以后需要做出的更改就越少。

可是,记住,属性太多会搅乱布置好的 UI。作为最低要求,至少公开完成手边最紧急任务所需的属性。然后,添加可以为其开发用例的所有属性。最后,把其余属性记录到开发说明中,作为将来可能会公开的属性。在本文中,我们把这些属性称为数据模型属性。在 Lead Manager Core 数据库 (lm_core_8.nsf) 中,我们选择 company、contact、categories 和 body 字段作为数据模型属性。

选择组件操作

除了编辑模式组件以外,操作通常用于搜索和选择数据元素类型。这个操作对于所讨论的许多组件都非常常见。在最简单的级别上,候选操作是能够惟一指定文档的 Lotus Notes 定义:UNID 和 Lotus Notes URL。它们是应用程序定义的下一个最高级别标识符,还可用于标识文档。通常,这些标识符是包含诸如客户名称或帐户 ID 之类的信息的字段。为了提高访问速度,这些标识符通常都与视图中的索引关联在一起。通常,它们不应当是能够返回多个文档的值。

如果要实现特殊搜索,则把执行此任务的代码提取到共享库中是一项不错的实践。那样,详细信息组件和所有摘要信息组件中的操作可以使用相同的代码。键入错误的风险会减少,并且共享库将为更新修改和 bug 修复提供单一入口点。

选择数据类型

公开的所有属性或操作都必须具有与之关联的数据类型。要使两个组件可以相互通信,两个连接元素必须属于同一个数据类型。最佳实践是确定一个维护已声明数据类型的一致性的过程,以供构建复合应用程序的组织中的所有开发人员使用。

数据模型属性中的每个元素都需要指定给它的数据类型。首先,查看 Notes 定义的数据类型。如果字段与其中列出的数据类型直接对应,则使用该数据类型。其次,在组织的系统库中查看。跨组织定义的常用数据类型数目越大,组件的互操作性就越好。如果您在这两个位置都没有找到相应的数据类型,则考虑定义一个数据类型来反映其值。如果这样做,则应当注册它,以便其他开发人员可以编写与您的组件进行通信的组件。

此外,如果拥有纯符号化字段,请考虑给它分配一个一般字符串类型。如果字段的定义非常一般化,则可能不需要发布或使用它。例如,类别是许多组件可能发布的常见属性。定义类别数据类型是使用类别的所有组件的良好约定。

详细信息组件

详细信息组件样式将提供关于所引用的数据元素的完整信息。它适合显示在宽栏中或显示在中心位置(参见图 3)。通常使用默认表单呈现文档。

图 3. 用红色突出显示的详细信息组件
用红色突出显示的详细信息组件
用红色突出显示的详细信息组件

此组件的选项包括:

  • 属性:典型的组件属性选项,并且应当使用数据模型属性中的那些属性。
  • 操作:同属性一样是典型的选项,并且应当使用数据模型属性中的操作。
  • 实现:虽然可以创建直接指向表单的 Lotus Notes URL 并使用该 URL 创建组件,但是此操作将导致在新文档顶部插入空表单。我们需要能够打开带有该表单的特定文档,因此需要使用另外一种方法。解决方案是创建一个拥有几乎不可见的左侧框架和一个占位符右侧框架的框架集。在左侧框中,装入为容纳可以接受的操作而创建的文档。这些文档接受值、执行查找,然后,如果找到文档,则在 NotesUIWorkspace 对象上使用 SetTargetFrame 和 EditDocument,在旁边的面板中打开文档。

注:在装入并显示了找到的文档后,还应当把它的所有值发布到已经定义的属性中。此步骤将在已经与之建立联系的所有连接中触发进一步操作。

在 Lead Manager Core 数据库中,检查名为 CompanyDetail 的框架集以查看如何整合框架集。要查看几乎不可见的左侧框架的框架属性,则必须先使它可见。为此,需要显示右侧框架的信息框,并在第二个附签中启用 Allow Resizing,然后在第三个附签中把边界宽度增加为大于零的值。在名为 CompanyDetailActionPanel 的表单中检查 setCompanyID 操作以查看如何开发执行查找和切换的表单。

编辑模式组件

在典型的 Lotus Notes 应用程序中,当您需要编辑文档时,需要把文档的表单置于编辑模式下,用全屏显示。在复合应用程序中,您可以通过在焦点和外围样式页面中打开数据元素的编辑模式组件来改进这一点。不同于用户切换附签或者应用程序将数据剪贴到正在编辑的文档这样的普通方法,我们可以在页面四周安排可以通过连接添加和传输数据的组件。

在某些实现中,编辑模式组件只是详细信息组件的一个变体。这种相似性十分有利,因为需要管理的组件更少,但是可能会导致单个组件的创建、维护和使用更加复杂。考虑下面的选项,然后确定哪些约束对您的应用程序非常重要。

此组件的选项包括:

  • 属性:根据在初始分析中确定的属性选择要公开的属性。不同于详细信息组件或摘要信息组件,我们不但需要在装入组件时传播它们的值,而且还需要在这些值发生更改时进行传播。需要根据创建的值更新连接的组件。
  • 操作:再次进行分析,并确定要公开哪些操作。此外,应当有与表单中的大多数编辑字段相对应的操作。当这些操作被触发时,它们将用传入值更新表单的值。例如,订购表单可能有一个成本中心(cost center)字段。其中多种外围组件可以允许您浏览公司的成本中心并作出一个选择。这个选中的值随后将更新订购单中的成本中心字段。把这些字段公开为操作让您可以实现此场景。本系列第三篇文章 “设计复合应用程序:设计模式” 详细讨论了这种组件模式。
  • 实现:您可以用编辑模式组件扩展详细信息组件(参见图 3)的实现,而不用创建新组件。该组件将解析 ID 并检查特定模式值以表示是否应当在编辑模式下打开该文档。

接下来,必须实现字段交换。在每个编辑字段中都可以挂接 Exiting LotusScript® 事件。添加代码以获得该字段的新值并且把它发布给属性代理。对于操作,为每个传入字段添加操作。获取其值,并把它设置到表单的字段中。注意,在有多个编辑表单时,例如在 Lead Manager Core 数据库 (lm_core_8.nsf) 中,您需要在每个表单中完成此操作。常用代码最好存储在库中以简化操作。

摘要信息组件

此组件将提供关于所引用数据元素的详细信息选项。它适合显示在窄栏中或者显示为外围组件。可以有多个不同的摘要组件,每个都提供与特殊信息域相关的信息。

图 4. 用红色突出显示的摘要信息组件
用红色突出显示的摘要信息组件
用红色突出显示的摘要信息组件

此组件的选项包括:

  • 属性:虽然只显示一部分数据元素的属性,但是有些组件可以通过编程访问其他值。由于属性发布是在代码级别完成的,因此即使不显示也可以访问字段。最佳实践是发布所有数据模型属性。这种方法使其他的应用程序组装程序能够使用摘要组件获取公开的额外信息,而无需使用详细信息组件。
  • 操作:通常,公开数据模型属性中的所有操作是个好主意;但是,实现与不显示的键相关的操作可能没有必要。
  • 实现:用于显示 Lotus Notes 文档的表单名称存储在文档的表单字段中。在本例中,需要通过不同于编码表单的方法来显示文档。不能使用对详细信息组件使用的技巧。相反,我们将创建一张显示所需的信息子集的专用表单,称为 facade 表单。实际上,我们绝对不会将使用这个表单创建的文档保存在数据库中。我们只使用它显示来自其他文档的值。制作此表单的一个非常简单的方法是创建一个原始表单的副本,然后删除不感兴趣的所有字段。这种方法将最大程度保留大部分 UI 界面外观。如果数据布局支持重用,则可以通过使用子表单实现重用。

向此表单添加相应的接收操作,接受搜索值并查找相应文档。在获得目标文档后,可以从中读取需要显示的值。我们无法把值直接写入字段;相反,可以计算这些字段,并把它们的值链接到初始的对应字段。然后把所有初始字段标记为隐藏,从而允许显示值,而不会由于底层数据而使用户感到十分混乱。

实现上述操作的简单方法是剪切并粘贴表单中的所有字段。当以这种方式把字段粘贴到 Lotus Notes 中时,将自动添加 “_1” 后缀。应当按照前面的说明调整所有这些新字段。在操作代码中,更新所有初始字段并指示 NotesUIDocument 执行刷新以完成更新。

要了解如何为 Lead Manager Core 数据库执行此操作,请查看样例中名为 CompanySummary 和 LeadSummary(参见图 4)的表单。操作属性 setCompanyID 和 setLeadID 将分别执行此工作。

列表组件

此组件用于通过各种方法列出数据元素类型。它适合使用宽栏或者作为中心组件(参见图 5)。最简单的情况下,它与 Lotus Notes 视图对应。Lotus Notes 应用程序通常包括一些导航器,其中列出被划分为各个主要部分的多个数据元素类型的视图。最灵活的组件设计策略是创建与单个数据元素类型相关的组件。这样,只对一种数据元素类型感兴趣的应用程序组装程序可以把列表限定为该类型。如果需要更多数据类型,可以使用带有附签的视图。

图 5. 用红色突出显示的列表组件
用红色突出显示的列表组件
用红色突出显示的列表组件

此组件的选项包括:

  • 属性:需要从该组件公开的主要属性是当前选中的文档。您可以通过传播在分析中确定的所有属性来完成此任务。此外,您可以把它限定为与相应常规操作分析中定义的输入搜索键相对应的字段。
  • 操作:此组件应当使用所有常规操作。如果出现成功匹配,则应该修改选择状态以反映新文档。此外,当做出新选择时,应当传播属性以反映新数据。
  • 实现:必须增强要加入组件的所有视图。通常要处理两种用户动作:单击和双击。Onselect LotusScript 事件适合触发当前选择(例如,单击),而 Queryopendocument LotusScript 事件适合触发打开文档动作(双击)。调用后,可以派生当前选择、检索文档并发布属性。注意,由于视图可以包含诸如 twisties 之类引用类别并且不是实际文档的层次结构元素,因此应当经常查看以确保当前选择是一个实际的文档。

    类似于其他组件,可以在视图中创建操作以使用定义操作和相应地更改选择。在组件只有一个视图的情况下,可以记录该视图的 URL 并在复合应用程序编辑器中使用它把组件添加到面板中。有多个视图时,必须构造框架集。在一个框架中设置一种选择机制,这种机制可以是一个外形框架(outline),或者是具有按钮的特殊表单,能够使用相应的视图替换其他框架。文档的 URL 则是框架集的 URL。

    在 Lead Manager Core 数据库中,查看名为 CompanyFrameset 的框架集,它有两个框架:左侧框架中的 CompanyOutline 页面是一个导航器;以及包含 Company By Name、Company by Revenue 和 Company By Type 视图的右侧框架。我们决定仅在这些视图中支持双击,因为 CompanyFrameset 组件位于没有其他组件的页面中。在大多数情况下,单击属性将影响页面中的组件,而双击属性将导航到另一个页面(可能使用跨页面连接)。

  • 调试:每个焦点变化都会触发 Onselect 事件。交互式 LotusScript 调试程序将在发生第一个事件时提取焦点。根据应用程序的架构,可能触发其他事件,并且可能不需要获取 Onselect 事件。对于调试,考虑创建一个手动触发的操作来调用可以传播选择更改的代码。代码能够正常运行后,您可以把它复制到 Onselect 方法中以进行最终测试和产品发布。单元测试是把同时发生的 LotusScript 事件的数目降至最低的另一种好方法。这个话题将在本系列第四篇文章 “设计复合应用程序:单元测试” 中介绍。

约束列表组件

此组件类似于列表组件,只不过列出的内容被限定到特定的域(参见图 6)。例如,可能显示仅属于某个类别、收入范围或创建者的数据元素。它可以使用宽栏或窄栏。与摘要信息组件一样,您可以将多个约束列表组件限制到不同的信息域。约束可以是简单的单值,也可以是复合值或多个类型。多类型示例指受类别和子类别约束的视图。

图 6. 用红色突出显示的约束列表组件
用红色突出显示的约束列表组件
用红色突出显示的约束列表组件

另一种方法是使用固定约束。可能需要只显示某种状态下的文档。已被关闭的订购单就是一种处于某种状态的文档。

您甚至可以混合和匹配类型。例如,约束列表组件可以按状态和所有者列出销售趋势,其中状态被改为关闭,但是创建者处于打开的连接状态。

此组件的选项包括:

  • 属性:此组件将把所有相同属性公开为列表组件。注意,还应当具有一个良好定义的值,用来命名当前所选的记录,以防止一条记录也没有选择的情况。如果应用的约束没有生成匹配,则需要能够传播未选择任何内容这一情况。
  • 操作:此组件将把所有相同的操作公开为列表组件,但是还需要公开操作才能使用不同约束。
  • 实现:不同于列表组件,在这种情况下我们将只处理单个视图。Lotus Notes 8 包含可以轻松开发约束列表组件的内置视图操作。此类内置操作之一是 FilterCurrentUIViewViaCategory。在 Lotus Notes 8.0 中,您可以通过在组件 WSDL 文件中定义它来启用此操作,但是在 Lotus Notes 8.x 中此操作得到了改进,这样您可以通过在复合应用程序编辑器中设置复合应用程序页面和组件属性来启用它。有关此功能的更多信息,请参阅 Lotus Notes 8.0.1 发行说明。由于销售趋势跟踪应用程序最初是为 Lotus Notes 8.0 开发的,因此更新了 WSDL 文件。

在样例中,检查名为 LeadByCompanyPending 和 LeadByCompanyClosed 的视图以查看如何针对 Lead Manager Core 数据库处理此应用程序。我们先前讨论了内置操作。分别在 Onselect 和 Queryopendocument LotusScript 事件中处理了单击和双击动作。还可以向视图中添加操作以反映属性代理操作、读取值和设置视图选择。

销售趋势跟踪应用程序中引用的组件实际上是使用框架集实现的双重约束列表,其具体内容超出了本文的范围。要获得恰当示例,请参考 LeadListByCompanyByClosed 和 LeadListByCompanyByPending 视图本身。

整合

开发销售趋势跟踪样例复合应用程序时使用了先前介绍的组件。样例下载包括描述每个组件、页面布局和连接的文档 (Lead Manager - Notes 8.pdf)。详细信息组件和编辑模式组件用于 Lead 页面和 Company 页面,摘要信息组件和约束列表组件用于 Sales Leads 页面,而列表组件用于 Company List 页面。

我们得到了什么?

表面上,我们似乎获得了本系列第一篇文章 “IBM Lotus Notes V8 中的 Lead Manager 应用程序:概览” 中介绍的 Lead Manager Core 数据库,把该数据库细分为组件,然后将组件重新组装为数据库。如果得到的功能与开始的功能相同,那么我们得到了什么?

在 Lotus Notes 应用程序的初始功能方面,我们保持不变。但是,我们获得了以不同方式安排组件以提供上下文的能力,并且能够使不同组件作为关注中心。如前述,Sales Leads、Company List、Lead 和 Company 页面都有不同的关注中心。复合应用程序的主要优点是可以与其他应用程序(Lotus Notes 应用程序和其他应用程序)集成。为了简单起见,我们只讨论了一个应用程序 —— Lead Manager Core 数据库。但是,在现实情况中,还可能利用其他应用程序。考虑下列场景:

  • 场景 1:Lead Manager 概述文章介绍了如何使用四个独立的 Lotus Notes 应用程序(包括讨论数据库、文档库数据库和目录)来开发销售趋势跟踪样例复合应用程序。这个新应用程序将提供多个应用程序的界面集成并允许用户在一个组件中设置上下文,然后在其他组件中公开相应信息。
  • 场景 2:第一个场景介绍了组合多个数据库的共五个页面的复合应用程序。ZetaBank(虚构的企业)的开发人员最初可能意识到讨论和文档库数据库都使用相同的术语作为约束列表组件进行分类;即 LeadByCompanyPending 和 LeadByCompanyClosed。它们可以创建更简单的复合应用程序,利用一致的分类并使用来自 Lead Manager Core 数据库的视图显示讨论和合同。
  • 场景 3:ZetaBank 这个虚构的企业有一个用于跟踪客户呼叫的后端系统。这些信息非常有用,但是决不会被其他应用程序获得。开发人员把此系统设计成一套 Eclipse 组件并且使其显示在 Lead Manager 复合应用程序中,从而显示与 Sales Leads 和 Companies 有关的客户呼叫。

结束语

本文讨论了把现有 Lotus Notes 应用程序扩展为适合构造复合应用程序的组件的步骤。还简要介绍了这些组件的一些使用方法,发表在 Lotus Sandbox 上的 Lead Manager 示例复合应用程序 提供了例子。附带的代码可直接用于该应用程序,也可以此作为基础创建您自己的应用程序。

在了解了如何扩展 Lotus Notes 应用程序使其包括组件之后,下一步是在包括多个 Lotus Notes 数据库的应用程序中使用此过程。复合应用程序的威力在于能够提供上下文来组合来自多个组件的信息并在执行任务时利用这个上下文。本文介绍的场景提供的复合应用程序示例将来自多个 Lotus Notes 数据库的多个组件与外部应用程序集成在一起。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Lotus
ArticleID=388381
ArticleTitle=设计复合应用程序:IBM Lotus Notes 组件
publish-date=05112009