您已经听说过 IBM Workplace Designer,并想要知道它究竟是什么样的。本文向您介绍 IBM Workplace Designer,描述谁应该使用它,以及何时使用它,并带领您逐步构建一个示例应用程序,说明用 IBM Workplace Designer 开发定制应用程序有多么容易。
IBM Workplace Designer 是一个非常新的开发平台,用于快速构建 J2EE 应用程序,并最终构建富客户机应用程序。它是一个可视的脚本环境,用于构建组件并将它们部署到 IBM Workplace Collaboration Services 或 IBM Workplace Services Express。Workplace Designer 是 IBM Workplace 软件系列中的一部分。
Workplace Designer 通过一个以文档为中心的范例来简化应用程序开发。开发人员不是处理关系表、SQL、JSP 或定制 JSP 标记,而是使用一个易于理解的 API 来处理文档,并可视地将 UI 控件绑定到文档元素。简而言之,Workplace Designer 允许开发人员将精力集中于应用程序价值而非应用程序管道(plumbing)。
何时应该使用 Workplace Designer,以及谁应该使用它?表 1 列出了 IBM Workplace 的应用程序开发工具,展示了 Workplace Designer 处于 IBM 的开发工具包中的什么地位。
表 1. IBM 的开发工具包
工具 | 描述 | 典型受众 | 技能 | 示例应用程序 |
---|---|---|---|---|
IBM Workplace Builder | 一个用于 Workplace Collaboration Services 和 Workplace Services Express 的零代码应用程序装配工具。Workplace Builder 将现有组件装配成复合应用程序和应用程序模板。 |
|
|
|
IBM Workplace 表单模板 | 以图形化的方式构建简单的基于表单的应用程序组件(不需要编码)。设计具有字段和列表的表单来查看文档。 注意:该工具与 IBM Workplace Forms 并不相关。 |
|
|
|
IBM Workplace Designer 2.5/2.6 | 可视的、脚本驱动的快速定制应用程序开发环境。 |
|
|
|
IBM WebSphere Portlet Factory | 使用叫做构建器的类似于向导的工具进行半自动的 portlet 开发。 |
|
|
|
IBM Rational Application Developer for WebSphere Software | 一个完全 J2EE 集成的开发环境,用于完整的定制开发。 |
|
|
|
一般来说,为 IBM Workplace 环境开发一个新的应用程序/组件时,使用上表中满足应用程序需求的第一个工具。例如,不要使用 Rational Application Developer 来构建联系列表组件 (portlet),因为在 Workplace Designer 中做到这一点更加容易。同样,不要使用 Workplace Designer 来构建分布式在线购物商场,因为该任务更适合于使用 Rational Application Developer。
与 IBM Lotus Domino Designer 的比较
来看一下 Workplace Designer 用户界面,与 Lotus Domino Designer 的类似性很清楚(这是故意的)。Workplace Designer 为习惯于 Domino 的开发人员提供相同的快速应用程序开发环境。您可以在 Workplace Designer 中找到熟悉的 Domino Designer 概念,比如表单、文档、脚本,甚至 @functions。
为突出类似性,图 1 和图 2 分别在 Lotus Domino Designer 和 Workplace Designer 中显示了联系组件中的一个 Person 表单。Domino 开发人员将会很容易接受 Workplace Designer。
图 1. Domino Designer 中的 Person 表单
图 2. Workplace Designer 中的 Person 表单
Workplace Designer 和 Workplace 复合应用程序
Workplace Collaboration Services 和 Workplace Services Express 支持一个复合应用程序模型,您可以在该模型中通过组合一个或组件来构造应用程序。业务组件是应用程序中的功能组件(与页面组件对应),并且可以来自不同的来源 —— 一个简单的应用程序可以包含由 Workplace Designer 构建的来自 Workplace 表单模板、Rational Application Developer 和第三方产品的组件。图 3 说明组件如何可以来自许多来源(包括 Workplace Designer)并被装配成单个复合应用程序。
图 3. Workplace 复合应用程序
除了支持复合应用程序以外,Workplace Collaboration Services 和 Workplace Services Express 还支持一个模板框架。复合应用程序可以被定义为模板,而应用程序实例可以创建自模板。每个应用程序实例具有其自己的参数,并且依赖于组成应用程序的业务组件的设计,每个实例具有其自己的数据源。图 4 说明多个应用程序实例如何可以创建自一个模板。
图 4. 模板应用程序框架
Workplace Designer 组件可以参与复合应用程序模型。就像任何其他业务组件一样,Workplace Designer 组件也可以被放入模板或现有应用程序中。Workplace Collaboration Services 和 Workplace Services Express 为用户将组件添加到应用程序提供了一种容易的机制:Content 调色板。图 5 展示了 Content 调色板中一个由 Workplace Designer 开发的组件。
图 5. 出现在 Content 调色板中的 Workplace Designer 组件
在 Workplace Designer 中,您可以构造组件。在版本 2.5 和 2.6 中,这些组件被部署为 Workplace Collaboration Services 或 Workplace Services Express 上的 portlet。Workplace Designer 的未来版本将允许您创建部署到即将发布的 Lotus Notes 版本(代号为 Hannover)的组件。表 2 展示了 Workplace Designer 中的主要概念。
表 2. Workplace Designer 中的主要概念
概念 | 描述 |
---|---|
组件 | 组件是模块化的应用程序,可以单独使用,也可以与其他组件组合起来形成复合应用程序。 在 Workplace Designer 2.5/2.6 中,组件被部署为 Workplace Collaboration Services 或 Workplace Services Express 上的 portlet。组件包含设计元素,如表单、模式、脚本库和图像。 Workplace Designer 支持一个以文档为中心的数据模型,并且每个组件具有一个专用的文档数据库,用于创建/读取/更新/删除它的文档。 |
表单 | 表单基本上就是页面,并且所有用户交互都发生在表单上。 表单可以用来在组件的文档数据库中创建/读取/更新 XML 文档。表单提供一个到 XML 文档的用户界面,使输入到表单的数据可以存储在 XML 文档中。同样,表单还可以用于查看 XML 文档的内容。当一个表单用于创建/读取/更新 XML 文档时,该表单就与一个 XML 模式相关联。 与 HTML 页面一样,表单还可用于其他用途,比如展示数据库中所有文档的视图,展示消息,充当 Welcome 页面以及任何其他用户交互。 |
UI 控件和数据绑定 | 这些包括诸如输入框、标签、组合框等等之类的对象。所有 UI 控件都放置在表单上。UI 控件可以根据模式而被绑定到数据库中的文档元素(参见下面)。 |
属性和事件 | Workplace Designer 中的大多数对象(输入框、表单、表、组件,等等)都具有属性和事件。属性可以显式地进行设置,在很多情况下也可以通过一个公式或 JavaScript. 表达式来设置。例如,输入框的只读属性可以基于 Workplace Designer 中的用户角色,或者基于文档中其他元素的值。 |
容器 | 容器是用于显示集合的 UI 控件。Workplace Designer 具有两种类型的容器:视图和面板。 视图容器根据一个选择条件显示数据库中文档的一个列视图(columnar view)。Panel 容器显示任意集合中的记录的一个定制呈现(rendering)。任何集合可以包括数据库中的一组文档、单个文档中的一组子元素或者任何其他集合。 |
脚本编写和 @functions | 针对 Workplace Designer 的脚本语言是 JavaScript。所有 Workplace Designer API 都是从 JavaScript. 被调用,Workplace Designer 提供一个具有代码完成和内部错误报告之类特性的强大的脚本编辑器。 Workplace Designer 支持服务器端 JavaScript,大多数应用程序逻辑是通过使用服务器端 JavaScript. 来执行的。例子包括 document.save() 和 context.redirectToFormOnServer(),前者将当前文档保存到文档数据库中,后者将用户重定向到另一个表单。 JavaScript. 也可用于调用 Java 方法,前提是 Java 类对组件是可见的。developerWorks 文章 “Extending the power of IBM Workplace Designer with custom Java code” 中证实了这一点。 Workplace Designer 也支持 Lotus Notes 样式的 @functions 作为一些函数的 JavaScript. 的替代物。例如,@Author 和 document.getAuthors() 可以用于检索文档作者。 除了服务器端 JavaScript,组件还可以包含客户端 JavaScript,用于与浏览器的对象模型交互。 |
脚本库 | 可重用的或者大块的 JavaScript. 可以放入脚本库中由所有设计元素共享。 |
XML 文档数据库 | Workplace Designer 后端是一个 XML 文档数据库。在运行时,每个 Workplace Designer 组件具有其自己的文档数据库。文档包含一些具有层次关系的元素,而这些元素是由模式定义的。每个文档通常与一个模式相关联。 Designer 文档数据库是一个逻辑实体;它与关系数据库并不是一一对应的。一个关系数据库可以包含 0 到 n 个 Workplace Designer 文档数据库。组件的 Workplace Designer 文档数据库所使用的关系数据库是在组件部署时选择的。 |
模式 | 模式定义文档的数据结构。具体来说,它们为与模式相关联的文档定义元素、元素关系和元素约束。在 Workplace Designer 中,模式可以在新 UI 控件添加到表单时动态地进行构建,或者提前设计好。 |
API | Workplace Designer 为对文档、数据库、元素、目录等的编程访问提供了一组完整的 API。这些 API 可通过服务器端 JavaScript. 被访问到,并在 Workplace Designer Help 中做了文档记录。 |
图像 | 组件中使用的图像可以与组件一起存储为图像设计元素。 |
安全性和角色 | Workplace Designer 支持一种基于角色的访问控制模型。用户在以下角色之一下访问 Workplace Designer 组件:Administrator、Editor、Author、Reader 或 No Access。 用户的角色由 Workplace Designer 组件所属于的复合 Workplace 应用程序来确定。Workplace 应用程序具有应用程序级别的角色(这通常是在业务上下文中),这些角色映射到应用程序中每个组件的角色。在 Workplace 应用程序中,用户被分配应用程序级别的角色,这些角色然后转换成组件级别的角色。例如,应用程序角色 Moderator 通常映射到 Workplace Designer 组件中组件级别的角色 Administrator。有关复合应用程序的附加信息请参见下面。 |
Workplace Collaboration Services/Workplace Services Express 集成 | 使用 Workplace Designer 2.5/2.6 构建的组件 (portlet) 被设计用于运行在 Workplace Collaboration Services 和 Workplace Services Express 上。此外,Designer 组件参与复合应用程序基础设施,并访问这两种产品中的底层服务,比如邮件和文档库。 |
为了证实在 Workplace Designer 中进行应用程序开发有多么容易,让我们来构建一个简单的 Call Center 示例应用程序。对于该示例应用程序来说,您需要 Workplace Designer,并基本了解组件创建。您可以从 developerWorks 下载一个 试用版的 Workplace Designer,并在 developerWorks Workplace Designer 产品文档页面 上找到该产品的文档。
我们的 Call Center 示例是一个故障单仓库,在该仓库中可以创建、编辑、更新和删除故障单(trouble ticket)。随着我们为示例创建组件,在 Workplace Designer 中开发组件将变得更加清楚明了。Call Center 组件具有表 3 中所示的元素。
表 3. Call Center 元素的描述
Call Center 元素 | 描述 |
---|---|
Ticket 模式 | 为故障单文档定义 XML 数据元素(字段)。Ticket 元素包括标题、状态、故障单代理、客户、问题和解决方案。 |
Ticket 表单 | 用于创建、读取和编辑故障单。ticket 表单与 ticket 模式相关联,从表单创建的文档也与 ticket 模式相关联。 |
Ticket UI 控件 | 为 ticket 模式中的每个元素包含 UI 控件(输入框、组合框等)。例如,输入框用于显示和编辑 ticket 标题。 |
Ticket 动作 | 为创建、编辑和删除故障单时用到的简单动作创建了按钮。这些动作包括 New、Edit、Save 和 Delete。 |
Ticket 视图表单 | 为了查看故障单列表,创建了第二个表单。ticket 视图表单包含一个视图控件,它列出组件数据库中的所有故障单。 |
您可以从新、从发布的示例或者从 IBM Lotus Notes 数据库构建组件。下面我们开始一个新组件,如图 6 所示。
图 6. New component 对话框
创建了一个名为 CallCenterSample 的新组件。组件和组件设计元素出现在 Workplace Designer 的 Component Navigator 中。
模式为数据库中的文档定义数据结构(或者说蓝图),并定义元素中允许的数据(约束)、元素的层次结构,以及元素之间的可能关系(0..1、1..n,等等)。
用于创建/读取/更新文档的表单,比如您接下来创建的 ticket 表单,与一个模式相关联。表单上的 UI 控件被绑定到模式上的元素,而从该表单生成的文档包含由相关模式定义的元素。
您可以在设计表单之前创建模式,或者在设计表单时动态创建模式。在本例中,我们首先创建模式,因为这对于任何比较复杂的组件来说通常是一个最佳实践。首先设计模式有助于提前考虑组件完成什么功能以及存储什么内容。
一旦创建好之后,模式就可以用故障单元素(字段)来填充了。表 4 展示了 Trouble Ticket 的数据元素。
表 4. Trouble Ticket 数据元素
Trouble Ticket 元素 | 描述 | 数据类型 |
---|---|---|
title | Trouble Ticket 标题。 | 字符串 |
status | Trouble Ticket 状态。状态可以是 Open,也可以是 Closed。Open 表明 ticket 正在工作。Closed 表明 ticket 已解决。 | 字符串,只能是 Open 或 Closed |
agent | 分配给 ticket 的 Call Center 代理的名称。通常,这被存储为 LDAP 区分名 (DN),但是对于本例来说只存储了显示名称。 | 字符串 |
customer | 提出该 ticket 的用户的名称。类似于 agent 元素,我们通常存储一个 DN,但是对于本例来说,我们只存储了一个显示名称。 | 字符串 |
problem | 问题的全部文本。 | 字符串 |
resolution | ticket 解决方案的全部文本。 | 字符串 |
通过简单地在根节点下创建新的子元素向模式添加元素。该示例的模式在根元素下具有一组元素(参见图 7)。
图 7. 完成的 Trouble Ticket 模式
ticket 模式现在为 Trouble Ticket 文档具有了所有的元素(字段)。如图 7 所示,我们所有的元素都是字符串,但是也存在其他元素类型,比如 integer、double、Boolean、date、time 和 dateTime。
元素也可以是定制数据类型的。定制数据类型基本上是一组元素。一个例子是地址数据类型,其中一个 person 模式可能支持多个地址,而每个地址数据类型又由 street、city、state 和 zip code 字符串元素组成。定制数据类型是在模式设计元素中的右侧面板中定义的。一旦定义好,定制数据类型就成了元素类型的附加选项。
与其他元素不一样,status 元素可以只具有图 8 所示 status 元素的 Enumerate Values 选项卡中输入的指定值 Open 和 Closed。在该模式中,元素可以定义它们首选的数据项控件。如果指定了,在元素被拖放到表单上时就会创建该类型的控件。status 元素与数据项的一个组合框 UI 控件相关联。
图 8. status 元素的允许值
现在您创建了 ticket 表单和 UI 控件。ticket 表单用于创建、编辑和查看 Trouble Tickets,并具有一组绑定到 ticket 模式中元素的 UI 控件。
第一步是创建表单,并将它与您在前一步创建的 ticket 模式相关联。图 9 展示了针对 ticket 表单的 New Form. 对话框。
图 9. 针对 ticket 表单的 New Form. 对话框
现在将 UI 控件添加到表单,并将它们绑定到模式。一种快速添加 新 UI 控件并自动将它与元素相关联的方法是从 Data 调色板拖放元素。Workplace Designer 然后创建一个与该元素类型匹配的新 UI 控件,并自动将它与该元素相关联。
接下来,以一种更加吸引人的方式布局元素。与大多数 WYSIWYG 环境中一样,表格可以用于布局元素,如图 10 所示最终布局的元素。Status 元素是一个组合框控件,而其他元素是输入框。
图 10. 对元素进行布局之后的 Ticket 表单
既然 ticket 表单已经好了(除了后面还要添加动作按钮之外),您就可以创建 ticket 视图表单了。
ticket 视图表单包括一个视图容器,用于展示仓库中的所有故障单。视图容器很容易创建。首先,创建一个新的表单,它不需要与模式相关联,因为它不用于创建或更新文档。该表单用于使用视图展示数据库中的所有故障单。
接下来,从 UI Controls 调色板(在 Container Controls 下面)向表单添加视图容器。然后,将该视图与 ticket 模式相关联,如图 11 所示。
图 11. 将视图与 ticket 模式相关联
一旦视图被链接到模式,您就可以定义列了。这个基本的视图只具有两列:title 和 status。视图列可以展示一个元素或公式。title 列被绑定到 title 元素。
接下来,将 status 列添加到视图,并将它与 status 元素相关联。最后,设置 title 列为超链接的。当 ticket title 被点击时,该 ticket 文档就会使用与该文档相关联的表单被打开。超链接选项位于图 12 所示的 title column 属性框中。
图 12. 使得 title column 是超链接的
此时,视图就完成了,并展示有数据库中的所有故障单。
当用户第一次访问该组件时,您想要他从该视图中开始。为此,指定该 ticket 视图表单为组件打开时的默认表单,这需要用到组件 Properties 的 Default design element 字段。
下一步是添加动作按钮,以创建、编辑和保存故障单。
现在向两个表单添加动作按钮,以支持创建、编辑、保存和删除故障单。将创建和删除动作放置在 ticket 视图表单上,而将编辑和保存动作放置在 ticket 表单上。
按钮可以执行 JavaScript. 或预定义的简单动作。您添加的第一个按钮是 ticket 视图表单上的 New Ticket 动作,允许您从该视图创建新的故障单。为此,从 UI Controls 调色板在页面顶部放置一个新的按钮,然后为该按钮的 onClick 事件分配一个简单的动作,如图 13 所示。
图 13. 向 onClick 事件添加一个简单的动作
Workplace Designer 为删除文档提供了一个容易的机制。要添加 Delete 动作,您只需要执行两个步骤:为视图中的每个文档选择一个选项和添加一个具有 Delete Selected Documents 简单动作的按钮。
在添加了 New Ticket 和 Delete Ticket(s) 动作之后,ticket 视图表单就完成了。现在向 ticket 表单添加 Edit 和 Save 动作,如图 14 所示。
图 14. 添加到 ticket 表单的动作按钮
Edit 按钮包括一个简单的动作,以将文档模式改变成编辑模式。Save 按钮包括 JavaScript. 来执行以下动作:
- 通过调用 document.save(); 保存文档。这里的文档对象不同于客户端 JavaScript. 中的文档对象,在客户端 JavaScript. 中,文档表示当前浏览器窗口中的 HTML 页面。在 Workplace Designer 服务器端 JavaScript. 中,文档表示当前 XML 文档。
- 通过调用 context.redirectToFormOnServer(“ticketView”); 返回到 tickets 视图。Context 是一个全局对象,表示当前的执行上下文。除了导航,上下文也可用于存储会话中的数据。
JavaScript. 是:
document.save();
context.redirectToFormOnServer("ticketView");
ticket 表单现在完成了,应用程序组件可以部署了。
IBM Workplace Designer 支持两种部署方法:自动和手动。当开发人员对 Workplace Collaboration Services 或 Workplace Services Express 具有管理访问权限时可以使用自动过程。管理访问权限包括门户管理员访问权限、文件系统访问权限(能够映射驱动)和对组件将要部署到的关系数据库的访问权限。自动过程提供服务器上 Workplace Designer 组件的一次单击部署和更新。
手动过程涉及到导出部署工件。其他一些对服务器具有管理访问权限的人然后可以利用这些工件并部署应用程序。手动部署工件包括表 5 中所示的工件。
表 5. 手动部署工件
工件 | 描述 |
---|---|
WAR 文件 | 可部署的 WAR 文件用于 IBM Workplace Collaboration Services 或 IBM Workplace Services Express 上。 |
数据库 DDL | 数据库定义文件部署组件必需的一些关系数据库更新。数据库类型定义在部署概要文件(profile)中。 |
在典型环境中,开发人员对部署服务器具有管理访问权限,因而可以在 Workplace Designer 中使用自动部署过程来测试组件。
部署中的第一步是创建一个部署概要文件,它定义将在其上进行部署的 Workplace Collaboration Services 或 Workplace Services Express 服务器(主机名、管理 ID、网络文件路径)。这只针对自动部署。部署概要文件的其余部分定义该组件将要使用的数据库的数据库类型和 JDBC URL。
自动部署过程需要对 Workplace Collaboration Services 文件夹树具有文件系统访问权限。在概要文件完成之后,您就可以部署组件了。最后一步是在服务器上测试组件。
在 Workplace Designer 2.5/2.6 中,组件和组件更新必须部署到服务器进行测试。(在未来的版本中,Workplace Designer 将会包含一个本地测试环境。)
在这篇介绍性的文章中,我们没有将组件部署到复合应用程序中(即将组件添加到模板),而是将组件部署为 portlet。这意味着与 Workplace Designer 组件对应的 portlet 被添加到与任何其他 portlet 所在的相同门户页面。Workplace Designer 组件了解 Workplace 复合应用程序基础设施。当一个组件被部署为一个复合应用程序的一部分时,每个组件实例具有其自己独特的文档数据库。
为了测试组件,将 portlet(它具有组件名称)部署到一个新的或现有的门户页面。为此,首先创建一个名为 My Samples 的新页面,然后使用 Edit Page 动作编辑页面以将 Call Center portlet(组件)添加到该页面。最后,您可以运行示例。图 15 展示了如何创建 Call Center 中的故障单。
图 15. CallCenterSample 组件
IBM Workplace Designer 是一个强大的工具,用于在 J2EE 环境中快速开发应用程序。它旨在填补对业务逻辑具有有限支持的零代码工具(比如表单模板)与完全的 J2EE portlet 定制开发之间的空白。Workplace Designer 故意与 Lotus Domino Designer 具有很多类似性,以便 Domino 开发人员能够很快接受它。
Workplace Designer 的未来是很乐观的。下一主要版本带有很多新特性和增强,并有望支持 “一次编写,到处运行” 模型,即组件既可以运行在浏览器可以访问的服务器上,也可以运行在具有富客户机的桌面上。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14751907/viewspace-444273/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14751907/viewspace-444273/