将实例化 DMS,并调用 get() 方法访问特定的雇员:Big Boss、 Wayne Blanchard 和 Terence Shorter。它以用户友好的方式在控制台中打印这 些雇员的信息,然后更新 Terence Shorter 及其雇员的部门信息。最后调用 DMS 的 update() 方法,传递更新的 Terence Shorter 数据图。
注意,为了便于示范,我们没有实现数据源组件,但在 DMS 中,有一些如何 根据查询构建数据图的“硬编码”知识。图 3 显示了 DMS 正在使用的雇员层次 结构。
图 3. Big Boss 公司的雇员
图中可以看出,DMS 背后的虚拟公司有 4 个雇员,层次结构如下:
Big Boss 没有上司,Terence Shorter 是其下属。
Terence Shorter 以 Big Boss 作为自己的上司,John Datrane 和 Miles Colvis 是其下属。
John Datrane 的上司是 Terence Shorter,没有下属。
Miles Colvis 的上司是 Terence Shorter,没有下属。
运行示例应用程序
右击 SDOClient.java,然后选择 Run>Java application运行上述示例应 用程序,结果如下:
清单 2. 应用程序的控制台输出
********* EMPLOYEE INFORMATION *********
Name: John Datrane
Number: 4
Title: Mr.
Department: Procurement
Is manager?: no
DIRECT MANAGER:
Name: Terence Shorter
Number: 2
Title: Mr.
Department: Financing
Is manager?: yes
****************************************
NO INFORMATION AVAILABLE ON EMPLOYEE Wayne Blanchard
********* EMPLOYEE INFORMATION *********
Name: Terence Shorter
Number: 2
Title: Mr.
Department: Financing
Is manager?: yes
DIRECT MANAGER:
Name: The Big Boss
Number: 1
Title: Mr.
Department: Board
Is manager?: yes
DIRECT EMPLOYEES:
Name: Miles Colvis
Number: 3
Title: Mr.
Department: Accounting
Is manager?: no
Name: John Datrane
Number: 4
Title: Mr.
Department: Procurement
Is manager?: no
[Total: 2]
****************************************
DMS updating Terence Shorter
(changed department from "Financing" to "The new department")
DMS updating Miles Colvis
(changed department from "Accounting" to "The new department")
DMS updating John Datrane
(changed department from "Procurement" to "The new department")
现在我们来分析应用程序的各个组成部分是如何工作的。
服务数据对象简介(5)
时间:2010-12-05 IBM Bertrand Portier
客户机
SDO 客户机例示了 DMS,并从中获得不同雇员的数据图。得到数据图后,通 过根对象(使用 SDO 动态 API)遍历和访问数据对象,如下所示:
// Get the SDO DataGraph from the DMS.
DataGraph employeeGraph = mediator.get(employeeName);
...
// Get the root object
DataObject root = employeeGraph.getRootObject();
...
// get the employee under the manager
employee = theManager.getDataObject("employees.0");
客户机调用动态 SDO 访问器 API,从数据对象中获得信息,并将其显示到控制台上:
System.out.println("Name: " + employee.getString ("name"));
System.out.println ("Number: " + employee.getInt("number"));
...
System.out.println ("Is manager?: " +
(employee.getBoolean("manager") ? "yes" : "no") + "\n");
我们已经看到客户机是如何获取信息(读)的,但是如何写入信息呢?更准 确地说,客户机如何修改对象?SDO 客户机一般使用 DataObject 写访问器方 |