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.
COSMOS Design 238450
Make query and registration processing engines pluggable
Contents
Change History
Name: | Date: | Revised Sections: |
---|---|---|
Hubert Leung | June 25, 2008 |
|
Workload Estimation
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