快速业务通道

服务数据对象简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
除以前的变化,开始监听新的修改。

// Call beginLogging() so that the Change Summary is // populated when changes are applied to the Data Graph. // The DMS should call beginLogging() and endLogging(), // not the client. employeeGraph.getChangeSummary().beginLogging();

DMS 的另一项任务(按照 EmployeeDataMediator 接口的定义)是根据 SDO 客户机提供的数据图更新后端数据源。

服务数据对象简介(7)

时间:2010-12-05 IBM Bertrand Portier

DMS:更新数据源

DMS 应该使用 SDO 的强大特性更新后端数据源,具体地说,就是要使用其变 更摘要。使用数据图的变更摘要有许多不同的方法。该例中,我们将考察变更摘 要树中引用的所有数据对象,并从中获得新的数据对象。

清单 4. DMS 根据数据图更新后端数据源

/**
 * Update the DMS''s backend data to reflect changes
 * in the data graph.
 * Since this DMS has no actual backend data and therefore
 * has nothing to update, we will just navigate
 * the change summary and report (print) what''s changed.
 */
public void update(DataGraph dataGraph)
{
  ChangeSummary changeSummary = dataGraph.getChangeSummary();
 
  // Call endLogging to summarize changes.
  // The DMS should call beginLogging() and endLogging(),
  // not the client.
  changeSummary.endLogging();
  // Use SDO ChangeSummary''s getChangedDataObjects() method.
  List changes = changeSummary.getChangedDataObjects();
  for (Iterator iter = changes.iterator(); iter.hasNext();)
  {
    DataObject changedObject = (DataObject)iter.next();
    System.out.print("DMS updating " +
      changedObject.getString("name"));
    for (Iterator settingIter = changeSummary.getOldValues(
      changedObject).iterator(); settingIter.hasNext();)
    {
      ChangeSummary.Setting changeSetting =
        (ChangeSummary.Setting)settingIter.next();
      Property changedProperty = changeSetting.getProperty();
      Object oldValue = changeSetting.getValue();
      Object newValue = changedObject.get(changedProperty);
      System.out.print(" (changed: " + changedProperty.getName() +
        " from \"" + oldValue + "\" to \"" + newValue + "\")");
      // If not a simple example, we could update the backend here.
    }
    System.out.println();
  }
}

该例中根本没有后端更新。但在实际应用时,后端更新应该在这个方法中完 成。

DMS 首先要对数据图的更新摘要调用 endLogging() ,从客户机取回数据图 ,以便进行后端更新。这样将关闭变更记录,从而提供自 beginLogging() 调用 以来(通常在创建之后调用)对数据图所做修改的摘要。这种格式支持 DMS 高 效、递增地更新后端数据源。变更摘要中的修改分为三种类型:

对象变更包含数据图中属性已经被修改的那些数据对象的引用、被修改的属 性和修改之前的属性值。DMS 可以使用原来的属性值确保后端数据在此期间没有 被别的人修改。

对象创建包含添加到数据图中的数据对象。将这些对象表示了需要添加到后 端数据结构中的新数据。

对象删除包含从数据图中删除的数据对象。这些对象表示了需要从后端数据 结构中删除的数据。

注意,我们使用标准的 SDO API 检查数据图的变化,虽然也可以使用 EMF ChangeDescription API(而不是 SDO 的 ChangeSummary)。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号