Jump to: navigation, search

COSMOS Design 197868

Revision as of 09:52, 4 September 2007 by Weitzelm.us.ibm.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Management Domain for COSMOS DC framework

This design document addresses COSMOS Bugzilla enhancement request 197868.


Change History:

Jimmy Mohsin 8/25/2007 Initial version

Jimmy Mohsin 8/26/2007 Added more use cases

Bill Muldoon 8/30/2007 Updated content

Mark Weitzel 9/4/07 Added "Talk" page

Overview

The "Management Domain" is a means of discovering an aggregation of "Data Brokers" and future "Service Brokers". The Management Domain is the highest "level" lookup registry to find the address of the Brokers. The Management Domain can be considered a "Broker of Brokers".

COSMOSManagementDomain.gif

The above is the class diagram for the Management Domain.

The purpose of the Management Domain (referred to as domain for short) is to provide a mechanism to faciliate the initialization of the management system. The domain has a stereotype of <<WSDM>>, indicating it will expose its public interface as a stateful Web service in conformance with the WSDM MUWS specification.

The properties of the domain are made available via WS-RF, i.e. getResourceProperties()


Implementation Stages and Corporate Use Cases

The Management Domain will evolve over time to accommodate the needs of the corporate use cases as follows:

Version 1 will satisfy the initial CA use cases.

Version ? will support the data source types requirements of the IBM use cases.

Version ? will support the CMDBf use cases from CA and IBM.

Version ? will support the CMDBf use cases from Compuware.


Terminologies/Acronyms

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

DATA BROKER: This is the component where all the web services that share data register themselves.

SERVICE BROKER: This is the component where all the web services that share functional behavior 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. A Data Manager can be an MDR.

MANAGEMENT DOMAIN: A "Broker of Brokers"


Management Domain Use Cases

Use Case 1. Register a Broker

A Broker invokes the "registration" operation of the Management Domain, providing the following information:

  • EPR for the Broker
  • Name of the Broker
  • Classification or Type of the Broker (Data or Service)

Management Domain populates its internal registry with the information about the Broker

Management Domain changes the state of the Broker to online and updates the timestamp

If the Broker is already registered with the Management Domain, the Broker invokes the "ping" operation, which updates the timestamp in the Management Domain registry


Use Case 2. Deregister or shutting down a Broker

  • A Broker invokes the deregister operation of the Management Domain, providing the Broker name as a parameter.
  • the Management Domain removes the registration entry for the Broker from its internal registry.


Use Case 3. Providing list of available Brokers to a requester, i.e. what we call a Client API today

  • A Client invokes the getBrokers operation of the Management Domain, providing the Broker classification type as a parameter.
  • the Management Domain returns a list of Brokers that satisfy the request.


Use Case 4. Query for a specific Broker

  • A Client invokes the getBrokers operation of the Management Domain, providing the Broker name as a parameter.
  • the Management Domain returns the Broker with the requested name.


Management Domain External Interfaces

Management Domain Capabilities

The Management Domain exposes this capability definition:

public interface ManagementDomainCapability {
	
	/**
	 * Get the Brokers
	 *
	 * @param String brokerName 
	 * @param String classification
	 * @return IDataQueryResult containing an XML Element object
	 */
	@ManagedOperation
	public IDataQueryResult getBrokers( String brokerName, String classification ) throws Exception;

	/**
	 * register the Broker
	 * 
	 * @param String endpointAddress
	 * @param String endpointResourceId
	 * @param String brokerName
	 * @param String classification
	 */
	@ManagedOperation
	public boolean registerBroker( String endpointAddress, String endpointResourceId, 
                            String brokerName, String classification ) throws Exception

	/**
	 * deregister the Broker
	 * 
	 * @param String brokerName
	 */
	@ManagedOperation
	public boolean deregisterBroker( String brokerName) throws Exception;

	/**
	 * ping the Management Domain
	 * 
	 * @param String brokerName
	 */
	@ManagedOperation
	public boolean pingManagementDomain( String brokerName) throws Exception;

Management Domain WSDL

The DC runtime converts the capability into a WSDM Endpoint with operations that correspond to the methods. Client applications can invoke the Management Domain operations using the WSDM Endpoint operations.


Management Domain Client API

Alternatively, client application can use the Management Domain Client API to invoke the Management Domain operations. The Management Domain Client API contains a Java class that provides a convenience mechanism to invoke the Management Domain WSDM endpoint operations.

Management Domain Client API class:


public class ManagementDomainClient extends WsResourceClient{

	/** 
	 * get the Brokers 
	 *
	 * @param String brokerName
	 * @param String classification
	 */
	
	public Element getBrokers( String brokerName, String classification ) throws Exception {
 
	
	/**
	 * register the Broker 
	 *
	 * @param String endpointAddress
	 * @param String endpointResourceId
	 * @param String brokerName
	 * @param String classification
	 */
	
	public Element registerBroker( String endpointAddress, String endpointResourceId, 
                  String brokerName, String classification ) throws Exception

	/**
	 * deregister the Broker
	 *
	 * @param String brokerName
	 */
	
	public Element deregisterBroker( String brokerName) throws Exception


	/**
	 * ping the Management Domain 
	 *
	 * @param String brokerName
	 */
	
	public Element pingManagementDomain( String brokerName) throws Exception 


sample code for the Management Domain Client API:

			//
			// get the Management Domain client from its endpointReference
			//
			ManagementDomainClient domainClient = new ManagementDomainClient( domainEPR ); 
			
			//
			// get the Brokers from the Management Domain for the "Data" classification
			//
			Element result = domainClient.getBrokers( null, "Data" );
					
			System.out.println(XmlUtils.toString(result));


Management Domain Implementation Details

The Management Domain implementation is similar to the Broker implementation.


Notes

  • How is the Management Domain started?
  • The domain would be conceptually separate from the brokers but it could be deployed with them.
  • In the July 17, 2007 meeting, the COSMOS DC team explored the relationship of the management domain to UDDI and agreed to remain independent of UDDI in the near term. Additional future requirements that were discussed included robust error recovery and a failover capability.
  • When designing the management domain, one of the well defined entries needs to be the endpoint of the repository where we get the information about the resources. In the current web.xml for the data visualization, the repository is assumed to be a simple file based access. It's encoded as follows.
       <context-param>
               <param-name>SML_REPOSITORY</param-name>
               <param-value>sml</param-value>          
       </context-param>        

Going forward, this should be an EPR that we get via the domain. The only thing in the web.xml that would then be required is an EPR for the management domain.