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 224166
Contents
Improve the Graph Response Viewer
Change History
Name: | Date: | Revised Sections: |
---|---|---|
Ali Mehregani | 05/21/2008 |
|
Workload Estimation
Process | Sizing | Names of people doing the work |
---|---|---|
Design | .5 | Ali |
Code | 2.5 | Ali |
Test | .5 | Ali |
Documentation | 0 | |
Build and infrastructure | 0 | |
Code review, etc.* | 0 | |
TOTAL | 3.5 |
Terminologies/Acronyms
The terminologies/acronyms below are commonly used throughout this document. The list below defines each term regarding how it is used in this document:
Term | Definition |
---|---|
MDR | Management Data Repository
} PurposeThis enhancement is associated with bugzilla 224166. The purpose of this enhancement is to improve the graph response view displayed when querying an MDR. The view is currently convoluted and difficult to interpret by a novice user. This design document lists a number of changes to improve usability and overall structure of the view.
The image below indicates a number of usability issues with the current view:
Implementation DetailThis section outlines an alternative layout to address the issues displayed above. The new layout will consist of two parts:
AnalysisCMDBf specifies an XML-based syntax by which queries are submitted to the query service, which reports back a query result from the available MDRs, also using XML syntax. As part of our implementation of the query service, we internally accept POJOs to represent a graph of the query, and return the query result as a set of POJOs. The job of the transformers is to convert POJOs to and from the XML syntax detailed in the CMDBf specification. As part of COSMOS Design 200222, a set of query transformations and an SML-repository-specific query service were designed and implemented. In an effort to make these components reusable, the query transformations will be refactored to share common components needed by other libraries in this design. The initial candidate classes to be moved to the common module are IXMLWritable, QueryServiceUtil (which will be renamed) and some of the fields in IQueryTransformerConstants (the ones pertaining to character constants and general SAX parsing). In addition, the previously implemented packages will be renamed to include the word "provisional", which in the API contract specifications we are reusing from the TPTP project, indicates that the APIs are experimental and will be evolved into stable public APIs. Here is a simple example that illustrates the incoming query input transformation: InputStream inputStream = new ByteArrayInputStream(example1().getBytes()); Assume that example1() returns a String containing the XML syntax for a <query> as specified in the CMDBf spec. RegistrationCMDBf specifies a registration service by which MDRs register items and relationships with the federating CMDB. The process for registration involves an XML-based transaction, similar to how the query service works. This enhancement will provide a transformer to convert a registration request from XML to a POJO graph structure, and will also provide the reverse of that transformation. In addition, it will provide another transformer that will convert a registration response output by the MDR from a POJO graph structure to the XML-based syntax expected by the CMDBf spec, and will again provide a reverse of that transformation. The reverse transformations are needed by some clients of the registration service, and also are useful in unit testing of the implementation. The following new classes will provide these transformations: org.eclipse.cosmos.dc.cmdbf.services.provisional.registration.transform.RegistrationInputTransformer org.eclipse.cosmos.dc.cmdbf.services.provisional.registration.transform.RegistrationOutputTransformer The following are the transformation APIs on the RegistrationInputTransformer class: static public RegisterRequest transform(InputStream) static public InputStream transform(RegisterRequest) The following are the transformation APIs on the RegistrationOutputTransformer class: static public RegisterResponse transform(InputStream) static public InputStream transform(RegisterResponse) RegisterRequest and RegisterResponse POJOs will consist of APIs and classes that match or closely mirror the corresponding element names in the CMDBf data model. RegisterRequest will reside in the org.eclipse.cosmos.dc.cmdbf.services.provisional.registration.transform.input.artifacts package and RegisterResponse will live in the org.eclipse.cosmos.dc.cmdbf.services.provisional.registration.transform.response.artifacts package. Here is a simple example that illustrates the incoming registration input transformation: InputStream inputStream = new ByteArrayInputStream(example1().getBytes()); Assume that example1() returns a String containing the XML syntax for a <registerRequest> as specified in the CMDBf spec. ServicesQueryThe class diagram below displays the interfaces and default implementations that will be included for the query service. All that a contributor is required to do is to register the classes that will be used as handlers for the selectors. The default implementation of the CMDBf query operation will look up the appropriate handlers and will invoke them accordingly.
The following is a snippet of code that illustrates how a contributor can register a set of selector handlers with the default implementation of Once the selectors are registered a client can make use of the CMDBf query service using the default implementation of
// Create a CMDBf query operation object and have it initialized CMDBfQueryOperation cmdbfQueryOperation = new CMDBfQueryOperation(); cmdbfQueryOperation.initialize(new SampleDataProvider()); // Execute the query Query query = retrieveQuery(); cmdbfQueryOperation.execute(query);
Assuming RegistrationThe diagram below shows the relationship between the classes of the registration service. The APIs are very symmetric to the ones provided for the query service. An adopter will need to subscribe register handlers for specific MDR IDs. The subscribed register handlers will be invoked if the MDR ID of the registration request matches that of the ID associated with the handler. The snippet of code below shows how a client can subscribe a registration handler.
RegisterHandlerSubscription.getInstance().addHandler ( new URI("http://cosmos.org/mdrId"), new CustomRegistrationHandler() );
The default implementation of
// Perform the initialization CMDBfRegistrationOperation registrationOperation = new CMDBfRegistrationOperation(); registrationOperation.initialize(new SampleDataProvider()); // Execute the operation Registration registration = retrieveRegistration(); registrationOperation.execute(registration);
Assuming Test CoverageUnit tests will need to perform the following tests:
Task BreakdownThe following section includes the tasks required to complete this enhancement .
Open Issues/QuestionsAll reviewer feedback should go in the Talk page for 204959. |