Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

COSMOS Design 238450

Revision as of 15:52, 25 June 2008 by Hkyleung.ca.ibm.com (Talk | contribs) (Requirements)

Make query and registration processing engines pluggable

Change History

Name: Date: Revised Sections:
Hubert Leung June 25, 2008
  • Initial version

Workload Estimation

Rough workload estimate in person weeks
Process Sizing Names of people doing the work
Design 0 Hubert Leung
Code 0
Test 0
Documentation 0
Build and infrastructure 0 Saurabh Dravid
Code review, etc.*
TOTAL 0

'* - includes other committer work (e.g. check-in, contribution tracking)

Purpose

The framework for query and registration web services assumes users will use the cosmos query and registration processing framework provided in org.eclipse.cosmos.dc.cmdbf.services project. However, the framework is proven to be not generic enough for all types of MDRs. From the experience of writing example MDRs and prototypes, we have concluded that it is difficult to have a common query processing engine that work for all MDRs.

This enhancement is to adjust the framework code for query and registration web services so that we don't mandate the use of the query and registration processing frameworks in org.eclipse.cosmos.dc.cmdbf.services. Also, we want to let users plug-in another query/registration processing engine using well-defined APIs.

Requirements

Add a level of abstraction around the query and registration processing framework to make it optional, and make it possible to replace the processing framework with another implementation.

CMDBf query service

Introduce a component called the query processing engine. This component is responsible for taking the CMDBf query request as input, process the request, and return the CMDBf query response. A query engine provides structured and reusable logic for processing the CMDBf query. It provides extensions points for users to provide code specific to the targeted data source. Each implementation of a query engine targets a certain type of MDR with a well-defined behavior (e.g. MDRs with relational database backend).

The AbstractQueryService class will have a member variable that is a reference to the query processing engine. The query service implementation class can set an instance of the query service, which will be used to process the query. COSMOS will ship a SimpleQueryEngine that uses the framework from org.eclipse.cosmos.dc.cmdbf.services. If the query engine is not set, the web service implementation class will need to override the GraphQuery() method of AbstractQueryService and provide custom query processing logic.

Registration Service

Use case

2.1.1 Use Case: Create a Data Manager

Design

Impacts of this enhancement

Open Issues/Questions

Back to the top