本教程提供了一个预构建的 WebCenter 应用程序,您可以将它上载到 JDeveloper Studio,针对您自己的 Siebel 数据运行并进行探究。然后,您可以使用该应用程序作为基础来满足自己的 Siebel-WebCenter 集成需求。注意,本教程不介绍如何构建 WebCenter 应用程序。有关详细信息,请参阅相关信息部分。
Oracle WebCenter 是一个集成的技术套件,旨在提供集结构化和非结构化内容、业务智能、业务流程、通信及协作服务于一体的、统一的、上下文敏感的用户体验。Oracle WebCenter 是 Oracle 融合中间件产品系列的一部分,构建在开放的、基于标准的体系结构之上。WebCenter 的一个主要特性是,它消除了基于 Web 的门户与企业应用程序之间的界线,并且支持快速创建新一代以上下文为中心的组合应用程序,这将改变人们的工作方式。WebCenter Framework 已集成到 JDeveloper 中,允许您在应用程序中嵌入 portlet、内容和可自定义的组件。
Siebel Web 引擎 (SWE) 负责呈现 Siebel 用户界面。Siebel Web 模板在呈现应用程序的信息库定义中的 Siebel 对象时,会将该 HTML 布局信息(标记信息)提供给 Siebel Web 引擎。SWE 返回的标记还可以是 XML(用于在可识别 XML 的应用程序中呈现)或者 WML(无线标记语言,用于在无线设备上呈现)。在本例中,我们请求 SWE 以 XML 格式返回 Siebel 视图,分析数据元素并在 WebCenter 应用程序中显示结果。
首先
登录到 Siebel Call Center,访问各种视图并查看 SWE 生成的 XML 数据集的结构。然后,针对自己的 Siebel 安装配置一个预构建的 WebCenter 应用程序,并运行该应用程序。下面显示了这个正在运行的应用程序。
当用户单击 Execute 时,该应用程序会动态查询 Siebel 数据并分析从 Siebel Web 引擎 (SWE) 返回的 XML 输出。返回的数据集在 Order Detail 表中显示。
| 1. |
启动 JDeveloper:双击 JDeveloper 可执行文件 jdeveloper.exe,该文件位于您解压缩它的根目录(<jdev 主目录>)中。
如果 Migrate User Settings 对话框打开,请单击 NO。
关闭 Tip of the Day 窗口。
|
| 2. |
在 Applications Navigator 中,
右键单击 Applications(左上角)并选择 Add to Applications。
|
| 3. |
在 Select application(s) to add 对话框中,将 Location 更改为 c:\mywork\sweOBE。
|
| 4. |
选择 sweOBE.jws 并单击 Open。扩展名 jws 表明该文件是 JDeveloper 工作区(应用程序)文件。
|
| 5. |
在 Navigator 中展开 sweOBE 应用程序。然后展开 ViewController > Web Content。
|
| 6. |
双击 ViewPage1.jsp 在可视化编辑器中将其打开。
该页面将显示一个主从表单。用户在顶部字段中输入一条客户记录,然后单击 Execute。底部的块将由来自 Siebel 的数据填充。
要成功运行该页面,需要修改一个配置文件。
|
| 7. |
打开 Windows 资源管理器,找到 SWEgeneral.properties。
|
| 8. |
在写字板中打开 SWEgeneral.properties。
|
| 9. |
输入 Siebel 所在的 Web 服务器的主机名。如果有必要,还要修改 SiebelAccount 属性。
注:示例应用程序中的代码使用 SiebelAccount 值作为登录时的用户名和口令。 保存此文件。
|
| 10. |
在写字板中打开 orders.properties。注意,View 和 AppletName 属性已预先设置。此外,还定义了一个默认记录,因此当用户未指定记录 ID 时,将自动查询客户订单。
查看字段名称。注意,该文件该指明了哪些字段是选择列表。这对分析 XML 十分重要。
关闭该文件,无需进行任何更改。
|
| 1. |
在 JDeveloper 中,运行 ViewPage1.jspx 页面。为此,右键单击导航器中的 ViewPage1.jspx 并从上下文菜单中选择 Run。
|
| 2. |
注意,已使用在 orders.properties 中指定的默认记录自动执行了一个查询。
|
| 3. |
返回 Siebel Call Center,找到另一个客户记录编号。向下滚动,找到一条感兴趣的记录。通过从主菜单中选择 Help > About Record,找到该记录 ID(“行号”)。
|
| 4. |
将该记录 ID 复制到剪贴板。
|
| 5. |
将该 ID 粘贴到运行页面的 Record ID 字段中,然后单击 Execute。该客户的订单应在 Order Detail 块中列出。
|
| 1. |
在导航器中,展开 Application Sources,然后展开 model.swetoadf。
注: 该应用程序使用两个项目:Model 项目用于构建 Order Detail 表所基于的数据控件,ViewController 项目定义用户界面。将数据控件从用户界面中分离出来始终是个不错的做法。未使用 Portlets 项目。
|
| 2. |
双击 sweData.java 在可视化编辑器中打开它,查看代码的作用。
将调用 public static List<viewRecord> getView(String pZoneName,String pRecordID) 方法收集来自指定记录的行。pZoneName 被硬编码为“orders”以选择 orders.properties 文件(该文件定义了记录的属性)。
|
| 3. |
通过 SWEgeneral.properties 文件获得 Siebel Call Center 的访问参数:主机名和帐户名(还用作本例中的口令)。
通过 orders.properties 文件获得记录的属性。包括模块和小程序的名称、默认记录、感兴趣的字段名称以及字段类型(选择列表或标量值)。
|
| 4. |
通过这些参数构建请求 URL 对象。如果在方法调用中未指定记录,则使用默认记录。
URL 首先执行登录 (SWECmd=ExecuteLogin ...),然后请求以 XML 格式 (SWECmd=GotoView ...) 显示相应视图、小程序和记录中的数据。
|
| 5. |
接下来,创建一个文档对象模型 (DOM) 分析器;它分析新构建的 URL(即,请求构建的 URL 时从 Siebel 进行回复)。
由于代码使用 Oracle 的 DOM 分析器,因此可以将生成的文档强制转换为 oracle.xml.parser.v2.XMLDocument。
该文档类的优点是它实施非标准方法 selectNodes(<XPATH 字符串>),该方法将返回与 XPATH 表达式匹配的所有记录的列表。
|
| 6. |
已构建的 XPATH 表达式从指定的 APPLET 标记(本例为 APPLET[2])选择 RSS_DATA 元素中的所有行:APPLICATION/SCREEN/VIEW/APPLET[2]/LIST/RS_DATA/ROW。
获取匹配的节点(“ROWs”)。
然后,通过获取在 orders.properties 文件中指定的字段的值(col1 到 col5),处理所有行。
最后,将所有值打包到一个新的 viewRecord 对象并添加到生成的列表中。
|
| 7. |
valueOfField 方法从当前行获取请求的字段值。
某些字段从选择列表获取它们的值。
选择列表仅在第一行给出。
该方法将构建一个 XPATH 表达式,从当前的 ROW 节点开始。如果第一行正在进行处理并且字段是一个选择列表,则将使用已命名字段的 PICK_LIST 的 VALUE 属性:
../FIELD[@NAME='" + fieldName + "']/PICK_LIST / @VALUE)
如果字段不是选择列表,则该值只是字段的值:
./FIELD[@NAME='" + fieldName + "']
该方法将返回 XPATH 表达式选择的节点的值。
|
| 8. |
在导航器中双击 viewRecord.java 打开该文件。
这是一个简单的 Java 类,它以五个字段值的形式保存五个字符串的记录。
|
| 9. |
展开 model.siebel 并双击 orders.java 在可视化编辑器中打开它。
orders.java 调用 sweData 类的 getView 方法。
我们在构建该应用程序时使用该 Java 类创建数据控件,方法是,右键单击该文件并从上下文中选择 Create Data Control,如下所示。
生成的 XML 文件对该数据控件进行描述:
 |
DataControls.dcx 描述生成的数据控件。 |
 |
orders.xml 描述数据控件的方法和参数。 |
 |
viewrecord.xml 描述方法的返回类型。 |
|
| 10. |
现在我们已经看过了应用程序模型,单击 ViewPage1.jspx 重新访问用户界面。注意 Data Control Palette 中的 ordersDataControl。
构建 ViewPage1.jspx 时,我们两次用到了该数据控件。
 |
将 findAllOrders(String) 节点作为参数表单放到该页面上,以创建输入字段和按钮。 |
 |
将 findAllOrders(String) > viewRecord 节点作为 ADF 只读表放到该页面上。 |
完整的 ViewPage1.jspx 如下所示。
|