Skip to content

Technical Overview

amilward edited this page Oct 23, 2013 · 5 revisions

This is a work in progress

The metadata registry is built using MVC patterns in groovy on grails and java.

There are 5 main parts to the MDR application each of these will be explored in more detail later on:

  • DOMAIN - the underlying model that describes the application
  • CONTROLLERS - access the model through the secure services and render the corresponding views/json/xml.
  • VIEWS - these are gsp (groovy server page) templates that render the information passed by the controllers to a browser
  • SERVICES - secure services used to access the model
  • WEBAPP - includes resources used by the web application including css files and images, but most importantly it includes the javascript that is used in the application's UI.

In terms of configuration, the following folders are important to note:

CONF - this folders holds the grails specific configuration information i.e. data sources and application resources used by the views etc. However, in addition it includes spring folders that set up the Spring beans i.e. JSON marshallers and a secure filters.

SRC/GROOVY - this is where groovy files that aren't part of the underlying model but are part of the application are held. It stores the code needed to set up the Json marshallers as well as the Marshalers themselves.

Metadata registry model:

The domain folder holds the model for the metadata registry and forms generator. We will explore the metadata registry model first.

INSERT DIAGRAM HERE

**uk.co.mdc.model **- this package contains the classes used in the metadata registry model

Data Element:

A data element is an atomic unit that describes a unit of information i.e. a person. It can have sub elements i.e. D.O.B, hair colour, department, staff number, it can also have parent elements i.e. Team.

Value Domain

A value domain describes the way in which the value of a data element should be collected. Just as a particular dataElement can have different valueDomains i.e. be collected by different systems in different formats (mph/kph), a particular valueDomains can also belong to different data elements i.e. speed could be a value domain that is collected in mph, to two decimal points etc. which is used for average car speed but also for current bicycle speed etc.

DataType

Data type describe the type of data the will be collected. Usually this can fall into unenumerated dataTypes such as String, Boolean, Integer or enumerated dataTypes such as gender (M:Male, F:Female, U:Unidentified)

** Collection **

A Collection represents a collection of data elements.

** ConceptualDomain ** ** DataElement ** ** ValueDomain ** ** DataElementConcept ** ** Document ** ** External Reference ** ** DataElementDataElement ** link class (links many to many association between dataElement and dataElement) ** DataElementCollection ** link class (links many to many association between dataElement and Collection) ** DataElementValueDomain ** link class (links many to many association between dataElement and ValueDomain) ** DataElementDataElement ** link class (links many to many association between dataElement and dataElement)

** NEED TO ADD THE REMAINING CLASSES HERE **

There are four packages in the model.

  1. springsecurityACL- this is a plugin model and describes the classes used by spring ACL security
  2. uk.co.mdc - this describes the model related to the dashboard i.e. spring security user and authority, as well as the classes used to describe the dashboard functionality i.e. the collection basket.
  3. uk.co.mdc.forms - this describes the classes used in the forms model

The controllers hold the controllers for the application: We are trying to use a pattern where controllers interact with the models through secure services. This ensures that the user must contain the correct permissions to access the data in question.

Clone this wiki locally