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 "MoDisco/Components/QueryManager/Architecture"

(Add the section "Functional specification")
(Improve the section "implementation")
Line 1: Line 1:
 
{{MoDiscoTabs|QueryManager|0|1}}
 
{{MoDiscoTabs|QueryManager|0|1}}
 +
 +
This is a draft.
  
 
==Use cases==
 
==Use cases==
Line 31: Line 33:
 
** removeQuerySet()
 
** removeQuerySet()
 
** getAllModelQuerySet()
 
** getAllModelQuerySet()
 +
** findQueryByName()
 
* Sharing
 
* Sharing
 
** commit()
 
** commit()
Line 43: Line 46:
  
 
== Implementation ==
 
== Implementation ==
=== UC1 - Create a query set ===
 
* using a wizard (New QuerySet model)
 
** from the main menu, package explorer, navigator, etc. If a project was selected, it is automatically chosen in the wizard.
 
** from the query panel of the "Query Execution" view
 
  
=== UC2 - Add a query in a query set ===
 
* using the query model editor
 
** the name, parameters, implementation class, etc. are chosen through the Eclipse Properties view
 
* using a wizard from the popup menu of an existing query set:
 
** the name, parameters, implementation class, etc. are fields in this wizard
 
** each query type (Java, OCL, etc.) can contribute a page to this wizard, for its own specific attributes (eg: Java class, OCL query)
 
  
=== UC3 - Use a model query ===
+
=== org.eclipe.gmt.modisco.infra.query.core ===
* using the "Query Execution" view
+
 
* using the browser's "Display Queries On Selected Element(s)"
+
=== org.eclipe.gmt.modisco.infra.query.editor  ===
 +
 
 +
====Wizard "New QuerySet model"====
 +
 
 +
'''Scope:''' This wizard can be call using a popup menu on ''the main menu, package explorer, navigator, etc''. If a project was selected, it is automatically chosen in the wizard. This wizard can be call from from the query panel of the "Query Execution" view
 +
 
 +
'''Implementation classes:'''
 +
 
 +
====Properties view====
 +
 
 +
=== org.eclipe.gmt.modisco.infra.query.ui ===
 +
 
 +
==== Create Query Wizard ====
 +
 
 +
'''Scope:'''
 +
# This wizard can be call from the popup menu of an existing query set.
 +
# EClass or EObject (whose EClass will be used)
 +
 
 +
'''Behaviour:'''
 +
# The name, parameters, implementation class, etc. are fields in this wizard. Each query type (Java, OCL, etc.) can contribute a page to this wizard, for its own specific attributes (eg: Java class, OCL query).
 +
# The query scope is already chosen based on the selection.
 +
 
 +
'''Extension point:'''
 +
 
 +
'''Implementation classes:'''
 +
 
 +
==== Query execution view ====
 +
 
 +
'''Uses''': ''query catalog ui''
  
=== UC4 - Add a query to a meta-class ===
+
=== Summary ===
* a wizard on an EClass or EObject (whose EClass will be used)
+
** same wizard as for UC2
+
** query scope is already chosen based on the selection
+
  
=== UC5 - Find a query in the catalog ===
 
  
=== UC6 - Publish a model query ===
+
{{CTable|tableWidth=64%}}
 +
| Functional operation || Realization
 +
|-
 +
| ModelQuerySetEditor::createModelQuerySet() || Wizard "New QuerySet model"
 +
|-
 +
| ModelQuerySet::addQuery() || Wizard "Create Query Wizard"
 +
|-
 +
| ModelQuery::editQuery() || Query property view
 +
|-
 +
| ModelQuery::evaluate || "Query Execution" view
 +
|-
 +
| MetaClass::addQuery ||
 +
|-
 +
|}

Revision as of 03:13, 19 February 2010

MoDisco
Website
Download
Community
Mailing ListForums
Bugzilla
Open
Help Wanted
Bug Day
Contribute
Browse SourceProject Set File

This is a draft.

Use cases

This document assumes that:

  • A user is the actor which uses the query manager
  • A developer is a kind of user which creates queries.

UC1 - Create query set: The developer creates a query set by declaring its identifier and the used meta-models. Each query set contains one or more queries. The developer has to add queries in the new query set (UC2)

UC2 - Add a query in a query set: The developer selects an existing query set and adds a new query in this query set. Each query has a name and this name is the query identifier. To add a model query the developer has to provide: the name, the parameters, the description and the implementation. All the model query sets are automatically detected and added into a catalog.

UC3 - Use a model query: To use a model query the user has to find it in the model query set catalog (UC5). To execute a query the user has to provide an execution context (a set of models and of model elements) and the parameter values.

UC4 - Add a query to a meta-class: The developer wants to create a query dedicated to a certain meta-class by selecting the meta-class or one of its instances. He has to choose a query set in the catalog, or create a new query set (UC1) and then create a new query.

UC5 - Find a query in the catalog: by scope, by name, by query set name, by return type.

UC6 - Publish a model query: The developer publishes a query set to allow other users to install the query set in their working environment. A published and/or installed query cannot be modified by the query set user (to make sure that the published model query set will never be modified). An installed model query set is available through the model query set catalog. A published query set has a version number.

Functional specification

Actors: query developer, query user

Functional components:

  • ModelQuerySetEditor
    • createModelQuerySet()
    • editModelQuerySet()
    • save()
  • ModelQuerySetCatalog
    • addQuerySet()
    • removeQuerySet()
    • getAllModelQuerySet()
    • findQueryByName()
  • Sharing
    • commit()
    • checkout()
  • ModelQuery
    • evaluate
  • Publisher
    • publish()
    • get()
  • Installer
    • install()

Implementation

org.eclipe.gmt.modisco.infra.query.core

org.eclipe.gmt.modisco.infra.query.editor

Wizard "New QuerySet model"

Scope: This wizard can be call using a popup menu on the main menu, package explorer, navigator, etc. If a project was selected, it is automatically chosen in the wizard. This wizard can be call from from the query panel of the "Query Execution" view

Implementation classes:

Properties view

org.eclipe.gmt.modisco.infra.query.ui

Create Query Wizard

Scope:

  1. This wizard can be call from the popup menu of an existing query set.
  2. EClass or EObject (whose EClass will be used)

Behaviour:

  1. The name, parameters, implementation class, etc. are fields in this wizard. Each query type (Java, OCL, etc.) can contribute a page to this wizard, for its own specific attributes (eg: Java class, OCL query).
  2. The query scope is already chosen based on the selection.

Extension point:

Implementation classes:

Query execution view

Uses: query catalog ui

Summary

Functional operation Realization
ModelQuerySetEditor::createModelQuerySet() Wizard "New QuerySet model"
ModelQuerySet::addQuery() Wizard "Create Query Wizard"
ModelQuery::editQuery() Query property view
ModelQuery::evaluate "Query Execution" view
MetaClass::addQuery

Back to the top