OGSA-DAI的内部架构及工作原理

OGSA-DAI工作流程图
一旦OGSA-DAI启动,工厂就随之启动,然后用注册器对数据源进行注册,并能通过预先配置文件中的静态信息和配置文件提供的MetaDataExtractor类能访问到服务数据。客户机在服务列表中确定在注册器中列出的众多服务源应该使用哪一个。一旦选定合适Data Service Resources,客户机就请求工厂创建一个GDS实例,以访问特定的数据资源。GDS准备好后,即可接收执行文档,运行数据库查询,传输查询结果和传送数据。
如果已经有了一个执行文档,并将其发送到引擎中,引擎构造了一串活动,并用管道将这些活动连接起来。那么,这些活动该如何与 DBMS 交互来访问数据库中的数据呢?
不论您使用的查询语言是 XPath、XUpdate、还是 SQL,所使用的类集合以及这些类之间的关系都比较相似。所以在这里只考虑通过 JDBC 连接 DBMS 执行 SQL 的情况。
OGSA-DAI访问数据源的类如下:
·包 uk.org.ogsadai.porttype.gds.activity.sql
SQLActivity
RelationalResourceManagementActivity
SQLBulkLoadRowSetActivity
SQLQueryStatementActivity
SQLStoredProcedureActivity
SQLUpdateStatementActivity
·包 uk.org.ogsadai.porttype.gds.dataresource
DatabaseMetaDataExtractor
DataResourceImplementation
JDBCDataResource
MetaDataExtractor
SimpleJDBCDataResourceImplementation
SimpleJDBCMetaDataExtractor
GDS是专门为访问特定的数据资源设计的,这种数据资源从物理上讲存在相互独立的任意GDS。因此这就意味着代表数据资源的对象应该与工厂紧密相关。在与特定数据交互的过程中,会存在一个对象,用来在每个工厂的基础上管理或缓存连接。GDS并不是孤立地管理它与数据库的交互。与此相反,每一个 GDS都使用工厂类提供的 DataResourceImplementation来管理连接。同一个工厂生成的多个访问同一数据资源的 GDS都用同一个 DataResourceImplementation 对象来处理连接。