然后我们构造一组实验数据,以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 应用程序的一个重要组件。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。