Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "COSMOS Design 197867"

(Notes from Aug 15 Conversation)
Line 10: Line 10:
  
 
Bill Muldoon 8/1/2007 Added content
 
Bill Muldoon 8/1/2007 Added content
 +
 +
Bill Muldoon 8/17/2007 Updated content
  
 
== Overview ==
 
== Overview ==
Line 158: Line 160:
 
4. The persistent store is implemented as a new table in the COSMOS DC runtime derby database. Refer to  org.eclipse.cosmos.dc.local.registry\persistence_setup\RegistrySchema.sql
 
4. The persistent store is implemented as a new table in the COSMOS DC runtime derby database. Refer to  org.eclipse.cosmos.dc.local.registry\persistence_setup\RegistrySchema.sql
  
  CREATE TABLE COSMOS.DATA_MANAGER (
+
 
 +
CREATE TABLE COSMOS.DATA_MANAGER (  
 +
        ENDPOINTADDRESS VARCHAR(255) NOT NULL ,
 +
        ENDPOINTRESOURCEID VARCHAR(50) NOT NULL ,
 
         NAME VARCHAR(50) NOT NULL ,
 
         NAME VARCHAR(50) NOT NULL ,
         ASSEMBLY VARCHAR(50) NOT NULL ,
+
         CLASSIFICATION VARCHAR(50) NOT NULL,
      CLASSIFICATION VARCHAR(50),
+
        DIALECT VARCHAR(50) NOT NULL,
      HOSTNAME VARCHAR(25) NOT NULL ,
+
        LASTMSGTIME TIMESTAMP NOT NULL );
      RUNTIMEPORT VARCHAR(10) NOT NULL );
+
 
        
 
        
  ALTER TABLE COSMOS.DATA_MANAGER
+
ALTER TABLE COSMOS.DATA_MANAGER
    ADD CONSTRAINT COSMOS.DATA_MANAGER_PK Primary Key (
+
  ADD CONSTRAINT COSMOS.DATA_MANAGER_PK Primary Key (
       ASSEMBLY, HOSTNAME, RUNTIMEPORT );
+
       ENDPOINTADDRESS, ENDPOINTRESOURCEID );
 +
 
 +
ALTER TABLE COSMOS.DATA_MANAGER
 +
  ADD CONSTRAINT COSMOS.DATA_MANAGER_UNQ_NM Unique (
 +
      NAME);
 +
 
 +
 
 +
Each Data Manager entry in the store contains the EPR (address and resource id), the name, the dialect, the classification keyword(s) and the timestamp of the last message received. The timestamp is updated automatically when the Data Manager is registered and also by the pingDataManager operation.
  
  
 
The Persistent Store is accessed using an ibatis sql map. Refer to org.eclipse.cosmos.dc.sample.components\src\org\eclipse\cosmos\dc\sample\components\persistence\sql\DataManager.xml  
 
The Persistent Store is accessed using an ibatis sql map. Refer to org.eclipse.cosmos.dc.sample.components\src\org\eclipse\cosmos\dc\sample\components\persistence\sql\DataManager.xml  
  
  <?xml version="1.0" encoding="UTF-8" ?>
+
<?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
+
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
 
     "http://ibatis.apache.org/dtd/sql-map-2.dtd">
 
     "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  <sqlMap namespace="StatisticalDataset">
+
<sqlMap namespace="StatisticalDataset">
    <typeAlias alias="DataManager" type="org.eclipse.cosmos.dc.sample.persistence.impl.DataManagerImpl"/>
+
  <typeAlias alias="DataManager" type="org.eclipse.cosmos.dc.sample.persistence.impl.DataManagerImpl"/>
    <statement id="getDataManagers" resultClass="DataManager" parameterClass="String">
+
  <statement id="getDataManagers" resultClass="DataManager" parameterClass="String">
      select
+
    select
        NAME as name,
+
      ENDPOINTADDRESS as endpointAddress,
        ASSEMBLY as assembly,
+
      ENDPOINTRESOURCEID as endpointResourceId,
        CLASSIFICATION as classification,
+
      NAME as name,
        HOSTNAME as hostname,
+
      CLASSIFICATION as classification,
        RUNTIMEPORT as runtimeport
+
      DIALECT as dialect,
      FROM COSMOS.DATA_MANAGER
+
      LASTMSGTIME as lastMsgTime
      WHERE CLASSIFICATION = #classification#
+
    FROM COSMOS.DATA_MANAGER
    </statement>
+
    WHERE CLASSIFICATION = #classification#
    <statement id="getAllDataManagers" resultClass="DataManager">
+
  </statement>
      select
+
  <statement id="getAllDataManagers" resultClass="DataManager">
        NAME as name,
+
    select
        ASSEMBLY as assembly,
+
      ENDPOINTADDRESS as endpointAddress,
        CLASSIFICATION as classification,
+
      ENDPOINTRESOURCEID as endpointResourceId,
        HOSTNAME as hostname,
+
      NAME as name,
        RUNTIMEPORT as runtimeport
+
      CLASSIFICATION as classification,
      FROM COSMOS.DATA_MANAGER
+
      DIALECT as dialect,
    </statement>
+
      LASTMSGTIME as lastMsgTime
    <insert id="addDataManager" parameterClass="DataManager">
+
    FROM COSMOS.DATA_MANAGER
      INSERT INTO COSMOS.DATA_MANAGER (NAME, ASSEMBLY, CLASSIFICATION, HOSTNAME, RUNTIMEPORT)  
+
  </statement>
      VALUES(#name#, #assembly#, #classification#, #hostname#, #runtimeport#)
+
  <insert id="addDataManager" parameterClass="DataManager">
    </insert>
+
    INSERT INTO COSMOS.DATA_MANAGER (ENDPOINTADDRESS, ENDPOINTRESOURCEID, NAME, CLASSIFICATION, DIALECT, LASTMSGTIME)  
    <delete id="deleteDataManager" parameterClass="String">
+
    VALUES(#endpointAddress#, #endpointResourceId#, #name#, #classification#, #dialect#, #lastMsgTime#)
      DELETE from COSMOS.DATA_MANAGER  
+
  </insert>
 +
  <delete id="deleteDataManager" parameterClass="String">
 +
    DELETE from COSMOS.DATA_MANAGER  
 
         WHERE NAME = #name#
 
         WHERE NAME = #name#
    </delete>
+
  </delete>
   </sqlMap>
+
  <update id="pingDataManager" parameterClass="DataManager">
 +
    UPDATE COSMOS.DATA_MANAGER
 +
        SET LASTMSGTIME = #lastMsgTime#
 +
            WHERE NAME = #name#
 +
   </update>
 +
</sqlMap>
 +
 
 +
 
 +
 
 +
 
 +
== ''' Class Diagrams (optional)''' ==
 +
 
 +
 
 +
<This section is only required for features that are introducing APIs that will be leveraged by other components>
 +
 
 +
The Data Broker exposes this API through its capability definition:
 +
 
 +
public interface DataBrokerCapability {
 +
 +
/**
 +
* Get the Data Managers
 +
*
 +
* @param String classification
 +
* @return IDataQueryResult containing an XML Element object
 +
*/
 +
@ManagedOperation
 +
public IDataQueryResult getDataManagers( String classification ) throws Exception;
 +
 +
/**
 +
* register the Data Manager
 +
*
 +
* @param String endpointAddress
 +
* @param String endpointResourceId
 +
* @param String dataManagerName
 +
* @param String classification
 +
* @param String dialect
 +
*/
 +
@ManagedOperation
 +
public boolean registerDataManager( String endpointAddress, String endpointResourceId,
 +
                            String dataManagerName, String  classification, String dialect ) throws Exception
 +
 +
/**
 +
* deregister the Data Manager
 +
*
 +
* @param String dataManagerName
 +
*/
 +
@ManagedOperation
 +
public boolean deregisterDataManager( String dataManagerName) throws Exception;
 +
 +
/**
 +
* ping the Data Broker
 +
*
 +
* @param String dataManagerName
 +
*/
 +
@ManagedOperation
 +
public boolean pingDataBroker( String dataManagerName) throws Exception;
 +
 +
 
 +
 
  
 
== ''' Command extensions for the data broker.''' ==
 
== ''' Command extensions for the data broker.''' ==
Line 212: Line 283:
 
Refer to org.eclipse.cosmos.dc.spec\src\org\eclipse\cosmos\dc\spec\ConsoleExtension.java
 
Refer to org.eclipse.cosmos.dc.spec\src\org\eclipse\cosmos\dc\spec\ConsoleExtension.java
  
  osgi> broker
+
osgi> broker
  Usage:  
+
Usage: broker query <classification>
      broker query <classification>
+
        broker register EPAddress EPResourceID DataManagerName classification dialect
      broker register DataManagerName assembly.xml classification hostname hostPort
+
        broker deregister DataManagerName
      broker deregister DataManagerName
+
 
+
  
  
Line 224: Line 293:
  
 
   
 
   
Refer to the Client API document for details.
+
the Client API for the Broker:
  
[comment]  Please move broker APIs here from the design doc of enhancement 197870 so we can close this design independently of enhancement 197870.
 
  
== ''' Class Diagrams (optional)''' ==
+
public class DataBrokerClient extends WsResourceClient{
 +
 +
/**
 +
* get the Data Managers
 +
*
 +
* @param String classification
 +
*/
 +
 +
public Element getDataManagers( String classification ) throws Exception {
 +
 
 +
 +
/**
 +
* register the Data Manager
 +
*
 +
* @param String endpointAddress
 +
* @param String endpointResourceId
 +
* @param String dataManagerName
 +
* @param String classification
 +
* @param String dialect
 +
*/
 +
 +
public Element registerDataManager( String endpointAddress, String endpointResourceId,
 +
                  String dataManagerName, String classification, String dialect ) throws Exception
 +
 +
/**
 +
* deregister the Data Manager
 +
*
 +
* @param String name
 +
*/
 +
 +
public Element deregisterDataManager( String name) throws Exception
 +
 +
 +
/**
 +
* ping the Data Broker
 +
*
 +
* @param String name
 +
*/
 +
 +
public Element pingDataBroker( String name) throws Exception
 +
  
  
 +
sample code for the Broker Client API:
 +
 +
//
 +
// get the Data Broker client from its endpointReference
 +
//
 +
DataBrokerClient brokerClient = new DataBrokerClient( brokerEPR );
 +
 +
//
 +
// get the Data Managers from the Data Broker for the "Performance" classification
 +
//
 +
Element result = brokerClient.getDataManagers( "Performance" );
 +
 +
System.out.println(XmlUtils.toString(result));
 +
 +
Sample Output (containing the EPRs):
 +
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<DataManagers xmlns="http://cosmos.eclipse.org/dc/databroker">
 +
    <DataManager lastmsgtime="8/17/07 11:36 AM" name="NSM">
 +
        <Classification>Performance</Classification>
 +
        <Dialect>SDMX</Dialect>
 +
        <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
 +
            <Address>http://138.42.158.197:8080/cosmos/services/com.ca.mr2.cosmos.dc.nsmpdg.NSMDataManager</Address>
 +
            <ReferenceParameters>
 +
                <ResourceId>NSMIdentifierValue</ResourceId>
 +
            </ReferenceParameters>
 +
        </EndpointReference>
 +
    </DataManager>
 +
    <DataManager lastmsgtime="8/17/07 11:36 AM" name="eHealth">
 +
        <Classification>Performance</Classification>
 +
        <Dialect>SDMX</Dialect>
 +
        <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
 +
            <Address>http://138.42.158.197:8080/cosmos/services/com.ca.mr2.cosmos.dc.ehealth.eHealthDataManager</Address>
 +
            <ReferenceParameters>
 +
                <ResourceId>eHealthIdentifierValue</ResourceId>
 +
            </ReferenceParameters>
 +
        </EndpointReference>
 +
    </DataManager>
 +
</DataManagers>
  
<This section is only required for features that are introducing APIs that will be leveraged by other components>
 
  
The Data Broker exposes this API through its capability definition:
 
  
  ''        // Get the Data Managers''
 
  '' public IDataQueryResult getDataManagers( String classification ) throws Exception;''
 
  '' // register the Data Manager''
 
  '' public boolean registerDataManager( String name, String assembly, String classification, String hostname, String runtimeport ) throws Exception;''
 
  '' // deregister the Data Manager''
 
  '' public boolean deregisterDataManager( String name) throws Exception ''
 
  
  

Revision as of 12:20, 17 August 2007

Data Broker for COSMOS DC framework

Change History:

Name: Date: Revised Sections:

Jimmy Mohsin 7/25/2007 Initial version

Bill Muldoon 8/1/2007 Added content

Bill Muldoon 8/17/2007 Updated content

Overview

The Data Broker is intended to be a simple component.

Workload Estimation (required)

 Rough workload estimate in person weeks: 
 Process	Sizing	Names of people doing the work
 Design	1	MR 2 development team
 Code	.5
 Test	1
 Documentation	.2
 Build and infrastructure	.5	Bill Muldoon
 Code review & other committer work (e.g. check-in, contribution tracking) 
 if this is to be contributed by someone who is not a committer in the component	0	
 N/A - will be done by committer
 Total	3.2

Terminologies/Acronyms (required)

The terminologies/acronyms below are commonly used throughout this document. The list below defines each term:

Term Definition

 Data Broker	This is the component where all the web services that share data register themselves
 Data Store	This is a physical software artifact that stores data, e.g. Oracle, a File System, etc
 Data Manager	Largely corporate implementation component that implements the SOA API for data exchange
 Service Broker	This is the component where all the web services that share functional behavior register themselves
  • [mdw] Can we add these to the glossary?


Function:

  • [Assembly] Retrieving records from the data set
  • [Data Broker] Associating a data manager with a data set
  • Storing and maintaining a list of data sources, as references to where we get the data from
  • Introspect the keyset definition
  • Provide a cross reference to services. How does this differ from the first one?
  • Registration of new keysets & datasets
  • Client to chose which


  • Data source is typing information for a data set
  • Data set is the actual information, key set is the metadata


  • A Data Manager is: A query assembly for a specific type of data. This includes its ability to be exposed as a WSDM endpoint
  • A Data Manager can read many data sets, as long as they are all the same shape.
  • A Data Set is an observation of data
  • A Data Manager can deal with multiple instances of the same kind of data sets.
  • Most of the function of the data manager is done as of today.
  • Need to add the ability to support multiple data sets
  • We think the Data Broker and the Provider are the same


  • [Bill] For comparison purposes, the current COSMOS Provider Registry schema:

ProviderRegistry2.jpg


Stuff to do

  • Jimmy/Mark: Get a picture that we can all agree on
  • Jimmy/Mark: Clearly define the components that are in the picture
  • Jimmy/Mark: Distill & cleanup this list of stuff and move to data broker what belongs there
  • Joel/Hubert/Martin: Identify what needs to be reconciled in the code, e.g. packages, et..
  • Joel/Martin: Publish the Data Manager Capability (WSDL/RMD/Schema)
    • see org.eclipse.cosmos.dc.remote.wsdm (this is the pojo version)

Purpose (required)

This design document addresses COSMOS Bugzilla enhancement request 197867.

The Data Broker maintains a catalog of information about Data Managers according to a classification type.

The Data Managers can register and deregister themselves with the Data Broker.

The Client applications can query the Data Broker to locate the Data Managers.

Requirements (required)

The “Data Broker” does the following:

1. Processes registration and unregistration requests from Data Managers

2. Processes queries from the client to locate the Data Managers

Use Cases (required)

<Include a set of common use cases that your feature will introduce or impact>

Need to expand more details on these use cases, e.g. input/output/desired results


Need more definition on the following:

  • Use case 4: CMDBf considerations i7
  • Use case 5: Event handling i7
  • Use case 6: TTL for the Broker itself i7

Graphical Layout (optional)

Not applicable.


Class Diagram and Implementation Details

The Data Broker is implemented as a COSMOS DC query assembly with the following components:

1. Query Assembly definition. Refer to org.eclipse.cosmos.dc.sample.configurations\META-INF\cosmos\DataBroker.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <context xmlns="http://www.eclipse.org/xmlns/cosmos/1.0"
 	xmlns:cosmos="http://www.eclipse.org/xmlns/cosmos/1.0"
 	xmlns:sample="http://www.eclipse.org/xmlns/sample/1.0"
 	cosmos:name="DataBroker" cosmos:direction="out">
 	<query cosmos:factory="org.eclipse.cosmos.dc.sample.components.query.DataBroker" cosmos:optimizable="true">
 		<sample:binding/>
 	</query>    
 </context>

2. Implementation Class, which is referenced by the Query Assembly definition. The implementation class maintains the persistent store. Refer to org.eclipse.cosmos.dc.sample.components\src\org\eclipse\cosmos\dc\sample\components\query\DataBroker.java

3. Capability file, which defines the API and interface of the implementation class (see the next section). Refer to org.eclipse.cosmos.dc.spec\src\org\eclipse\cosmos\dc\spec\capabilitiy\DataBrokerCapability.java

4. The persistent store is implemented as a new table in the COSMOS DC runtime derby database. Refer to org.eclipse.cosmos.dc.local.registry\persistence_setup\RegistrySchema.sql


CREATE TABLE COSMOS.DATA_MANAGER ( 
       ENDPOINTADDRESS VARCHAR(255) NOT NULL , 
       ENDPOINTRESOURCEID VARCHAR(50) NOT NULL , 
       NAME VARCHAR(50) NOT NULL ,
       CLASSIFICATION VARCHAR(50) NOT NULL,
       DIALECT VARCHAR(50) NOT NULL,
       LASTMSGTIME TIMESTAMP NOT NULL );
     
ALTER TABLE COSMOS.DATA_MANAGER
  ADD CONSTRAINT COSMOS.DATA_MANAGER_PK Primary Key (
     ENDPOINTADDRESS, ENDPOINTRESOURCEID );
  
ALTER TABLE COSMOS.DATA_MANAGER
  ADD CONSTRAINT COSMOS.DATA_MANAGER_UNQ_NM Unique (
     NAME);


Each Data Manager entry in the store contains the EPR (address and resource id), the name, the dialect, the classification keyword(s) and the timestamp of the last message received. The timestamp is updated automatically when the Data Manager is registered and also by the pingDataManager operation.


The Persistent Store is accessed using an ibatis sql map. Refer to org.eclipse.cosmos.dc.sample.components\src\org\eclipse\cosmos\dc\sample\components\persistence\sql\DataManager.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
   "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="StatisticalDataset">
 <typeAlias alias="DataManager" type="org.eclipse.cosmos.dc.sample.persistence.impl.DataManagerImpl"/>
 <statement id="getDataManagers" resultClass="DataManager" parameterClass="String">
   select
     ENDPOINTADDRESS as endpointAddress,
     ENDPOINTRESOURCEID as endpointResourceId,
     NAME as name,
     CLASSIFICATION as classification,
     DIALECT as dialect,
     LASTMSGTIME as lastMsgTime
   FROM COSMOS.DATA_MANAGER
   WHERE CLASSIFICATION = #classification#
 </statement>
 <statement id="getAllDataManagers" resultClass="DataManager">
   select
     ENDPOINTADDRESS as endpointAddress,
     ENDPOINTRESOURCEID as endpointResourceId,
     NAME as name,
     CLASSIFICATION as classification,
     DIALECT as dialect,
     LASTMSGTIME as lastMsgTime
   FROM COSMOS.DATA_MANAGER
 </statement>
 <insert id="addDataManager" parameterClass="DataManager">
   INSERT INTO COSMOS.DATA_MANAGER (ENDPOINTADDRESS, ENDPOINTRESOURCEID, NAME, CLASSIFICATION, DIALECT, LASTMSGTIME) 
   VALUES(#endpointAddress#, #endpointResourceId#, #name#, #classification#, #dialect#, #lastMsgTime#)
 </insert>
 <delete id="deleteDataManager" parameterClass="String">
   DELETE from COSMOS.DATA_MANAGER 
       WHERE NAME = #name#
 </delete>
 <update id="pingDataManager" parameterClass="DataManager">
   UPDATE COSMOS.DATA_MANAGER
       SET LASTMSGTIME = #lastMsgTime# 
           WHERE NAME = #name#
 </update>
</sqlMap>



Class Diagrams (optional)

<This section is only required for features that are introducing APIs that will be leveraged by other components>

The Data Broker exposes this API through its capability definition:

public interface DataBrokerCapability {
	
	/**
	 * Get the Data Managers
	 * 
	 * @param String classification
	 * @return IDataQueryResult containing an XML Element object
	 */
	@ManagedOperation
	public IDataQueryResult getDataManagers( String classification ) throws Exception;

	/**
	 * register the Data Manager
	 * 
	 * @param String endpointAddress
	 * @param String endpointResourceId
	 * @param String dataManagerName
	 * @param String classification
	 * @param String dialect
	 */
	@ManagedOperation
	public boolean registerDataManager( String endpointAddress, String endpointResourceId, 
                            String dataManagerName, String  classification, String dialect ) throws Exception

	/**
	 * deregister the Data Manager
	 * 
	 * @param String dataManagerName
	 */
	@ManagedOperation
	public boolean deregisterDataManager( String dataManagerName) throws Exception;

	/**
	 * ping the Data Broker
	 * 
	 * @param String dataManagerName
	 */
	@ManagedOperation
	public boolean pingDataBroker( String dataManagerName) throws Exception;


Command extensions for the data broker.

Refer to org.eclipse.cosmos.dc.spec\src\org\eclipse\cosmos\dc\spec\ConsoleExtension.java

osgi> broker
Usage: broker query <classification>
       broker register EPAddress EPResourceID DataManagerName classification dialect
       broker deregister DataManagerName


Data Broker Client API.

the Client API for the Broker:


public class DataBrokerClient extends WsResourceClient{

	/** 
	 * get the Data Managers 
	 *
	 * @param String classification
	 */
	
	public Element getDataManagers( String classification ) throws Exception {
 
	
	/**
	 * register the Data Manager 
	 *
	 * @param String endpointAddress
	 * @param String endpointResourceId
	 * @param String dataManagerName
	 * @param String classification
	 * @param String dialect
	 */
	
	public Element registerDataManager( String endpointAddress, String endpointResourceId, 
                  String dataManagerName, String classification, String dialect ) throws Exception

	/**
	 * deregister the Data Manager 
	 *
	 * @param String name
	 */
	
	public Element deregisterDataManager( String name) throws Exception


	/**
	 * ping the Data Broker 
	 *
	 * @param String name
	 */
	
	public Element pingDataBroker( String name) throws Exception 


sample code for the Broker Client API:

			//
			// get the Data Broker client from its endpointReference
			//
			DataBrokerClient brokerClient = new DataBrokerClient( brokerEPR ); 
			
			//
			// get the Data Managers from the Data Broker for the "Performance" classification
			//
			Element result = brokerClient.getDataManagers( "Performance" );
					
			System.out.println(XmlUtils.toString(result));

Sample Output (containing the EPRs):

<?xml version="1.0" encoding="UTF-8"?>
<DataManagers xmlns="http://cosmos.eclipse.org/dc/databroker">
    <DataManager lastmsgtime="8/17/07 11:36 AM" name="NSM">
        <Classification>Performance</Classification>
        <Dialect>SDMX</Dialect>
        <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
            <Address>http://138.42.158.197:8080/cosmos/services/com.ca.mr2.cosmos.dc.nsmpdg.NSMDataManager</Address>
            <ReferenceParameters>
                <ResourceId>NSMIdentifierValue</ResourceId>
            </ReferenceParameters>
        </EndpointReference>
    </DataManager>
    <DataManager lastmsgtime="8/17/07 11:36 AM" name="eHealth">
        <Classification>Performance</Classification>
        <Dialect>SDMX</Dialect>
        <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
            <Address>http://138.42.158.197:8080/cosmos/services/com.ca.mr2.cosmos.dc.ehealth.eHealthDataManager</Address>
            <ReferenceParameters>
                <ResourceId>eHealthIdentifierValue</ResourceId>
            </ReferenceParameters>
        </EndpointReference>
    </DataManager>
</DataManagers>




Extension Points (optional)

<This section should only be included if new extension points are being introduced>


<Include any additional topics that will help in completing the implementation>

<Content related to the topic above>



Test Coverage (required)

<Include a description of the unit, functional, and system test cases that will be required to test the overall quality of the feature>

The following tests are performed by org.eclipse.cosmos.dc.tests\src\org\eclipse\cosmos\dc\tests\client\DataBrokerTests.java

1. Data Broker Client interface

2. Registration test

3. Query test

4. Deregistration test


Task Breakdown (required)

<Includes the individual tasks that need to be completed to meet the overall objective of the enhancement. A PERT chart is included to indicate the dependency of each task.>

1. Query Assembly

2. Interface class

3. Implementation class

4. Derby database and iBatis sql map

5. Command extensions

6. Test application


Open Issues/Questions

  • How does the query work? Need better example of how to query for data
  • Need example of how to map existing data to SDMX structure
  • Have we agreed that SDMX is the default model we support?
    • What about other models, e.g. SQL?
    • Does the user NEED to understand SDMX to use this?
  • How does the design support other things that SDMX
  • How do we reconcile the CMDBf query structure?
  • Using operational status / life cycle / TTL (time to live) for appropriate components - i7 item
  • How to keep the index in the data broker up to date


File:Dcframework2.zip

Notes from Aug 15 Conversation

  • We want a "generic" API on the data broker and hide the implementation details
  • We all want the seperation of the source of data from the type of data
  • The first query "dialect" for the data broker will be XPath
  • The data broker will support WS-Resource Catalog
    • Note: The combination of WS-Resource Transfer and WS-Resource Catalog should give provide the *most basic use case*
  • It is expected that the COSMOS Data Broker can be replaced with a more robust implementation
  • The data broker (in i6) will not support CMBD Query APIs.
  • We want to keep the broker as simple as possible.
  • We need the list of capabilities that the data broker supports
    • Convert the Provider API into a WSDM Capability (this is the i6 target)
      • Joel will document the wsdm capability and the API
    • WS-RT
    • CMDBf Query
  • Map the SDMX data flow et. to SML concepts. (valentina)



Back to the top