基于Tuscany的SDO实践(2)

来源:百度文库 编辑:神马文学网 时间:2024/05/01 06:49:03

基于Tuscany的SDO实践

2007-11-21 09:33作者:佚名出处:论坛整理责任编辑:方舟

  Tuscany简介与示例

 

  在有了以上这些SDO基本知识之后,我们迫切的希望尝试SDO。这里要为大家介绍一种SDO框架Tuscany并结合它演示一个简单的SDO例子。

  Tuscany 简介

  2005年12月,Apache在BEA 和IBM 的推动下,启动了Tuscany项目。Tuscany的实现遵循了SCA 和SDO规范,以及包括一个支持SDO的Data Access Service (DAS)。

  可以从Tuscany的网站下载最新的tuscany 版本,也可以通过SVN获取最新的tuscany代码,并通过maven产生你需要的Eclipse或IDEA项目。

  http://incubator.apache.org/tuscany/sdo_downloads.html



  Tuscany SDO 实例

  创建一个新的java项目,命名为tuscanyTest,由于目前公司使用的开发工具是IDEA, 因此这里以IDEA的配置为例,Eclipse中的配置大致相同。在项目中添加以下jar包。

  创建一个新的测试类并命名为SDOTest,接着我们就可以开始体验SDO了。

  我们先定义数据对象的类型,用XSD文件表示:

  然后我们构造一组实验数据,以XML数据文件的形式存储。

  首先我们利用XSDHelper导入之前定义的类型(XSD)文件来声明数据对象的类型。然后通过XMLHelper从XML数据文件中载入数据,并通过getRootObject() 方法返回数据对象(Data Object)。

  XSDHelper.INSTANCE.define(ClassLoader.getSystemResourceAsStream(PO_XSD_RESOURCE), null);
  purchaseOrder = XMLHelper.INSTANCE.load(ClassLoader.getSystemResourceAsStream(PO_XML_RESOURCE)).getRootObject();

接着创建数据图(Data Graph),并将purchaseOrder数据对象设置到数据图对象中。SDOUtil 是Tuscany中最重要的SDO工具类之一。它负责创建数据对象,数据图等重要的操作。

  DataGraph dataGraph = SDOUtil.createDataGraph();
  SDOUtil.setRootObject(dataGraph,purchaseOrder);

  从数据图中获取变更摘要,并开始对数据图的变更进行记录,这里我们改变了数据对象purchaseOrder中orderDate属性的值。

  ChangeSummary changeSummary = dataGraph.getChangeSummary();
  changeSummary.beginLogging();
  purchaseOrder.setString(purchaseOrder.getProperty("orderDate"),"2007-03-18");
  changeSummary.endLogging();

  变更摘要的isModifed方法返回数据图是否更改的布尔值, getOldValue方法可以获取数据图更改前的值, undoChanges方法可以回滚数据图的变更。我们一次试验这几个常用方法。

  boolean isModified = changeSummary.isModified(purchaseOrder);
  System.out.print("\nIs data changed in DataObject: "+isModified);
  ChangeSummary.Setting oldOrderDate = changeSummary.getOldValue(purchaseOrder,purchaseOrder.getProperty("orderDate"));
  System.out.print("\nThe old ordere date is: "+oldOrderDate.getValue());
  printPurchaseOrderSummary(purchaseOrder);
  changeSummary.undoChanges();
  printPurchaseOrderSummary(purchaseOrder);

  printPurchaseOrderSummary方法在控制台中打印数据对象,我们清楚地发现会滚之前和之后数据对象的变化。

  这个例子非常简单,但读者可以从中了解到SDO的一些重要组件和用法。读者也可以在此基础上增加新的测试来深入学习SDO。

  结束语

  SDO 规范 1.0 版于 2003 年末提交给 Java Community Process,并获得了批准,它仍在不断的发展中。SDO能够帮助我们解决通用企业应用程序的一个重要问题: 异构数据访问。SDO 为业务数据提供了一种中立的表示方法,建立了一种与数据源无关的模型,降低了耦合度。随着SOA的广泛应用,相信SDO会成为 SOA 应用程序的一个重要组件。