What is a Gazelle Web application

From IHE Wiki
Jump to: navigation, search

A Gazelle Web application is physically an EAR (Enterprise ARchive). This EAR will be deployed in an application server (JBoss AS, more informations here).


During the deployment, the application server will either create a database corresponding to a database or will just map the application with an existing database (this is just a configuration). One application access to only one database.


One Gazelle application (EAR) is composed of several modules.

  • Some EJB modules (one module is represented as a JAR archive inside the EAR archive), containing our EJB3, Business layer
  • A persistence layer (represented as one JAR archive inside the EAR archive, this is a requirement), this is the mapping with database for all modules.
  • One or several User Interface (UI) modules (one module is represented as a WAR archive inside the EAR archive), containing JSF webpages used by the application.


Actually, it exists several Gazelle friendly applications :

  • Gazelle (TestManagement)
  • ProductRegistry (Provide and register all products informations)
  • InriaHL7EVS
  • InriaHL7MessageProfileRepository
  • DemographicDataServer

Some modules are used by several applications. For instance, modules Users-ejb, TF-ejb, and Systems-ejb are used by Gazelle and ProductRegistry.



Example of architectures

The Gazelle application

This application uses the following modules :

Modules Shared with other applications? Description Forge location Notes
Common-ejb Definitely yes Includes common libraries (eg. Audit, Authentication), provided to others modules, and applications. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
Gazelle-ejb No This module contains all codes used only by the ProductRegistry application (IntegrationStatement, etc...). Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Gazelle This module contains all EJB3 specific to Gazelle (and not used by other applications, as Product Registry for instance).
Gazelle-ear No This module will build our application using others modules (listed in this tab). This application will be represent as a EAR file, generated by this module.  :/svn/gazelle/Gazelle None
Gazelle-ui No Web part of our application. It generates a WAR file ready to be loaded in our application.  :/svn/gazelle/Gazelle None
Gazelle-persistence No This module corresponds to our persistence layer. It's used by all modules. This helps our projects to represent them as one application, using one database. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Gazelle None
Systems-ejb Yes This module contains all codes managing Gazelle systems. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
TF-ejb Yes This module contains all codes from the Technical Framework. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
Users-ejb Yes This module contains all codes managing Gazelle users. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None


Here is below a slide showing the Gazelle application architecture :


In this slide, green modules are used by other applications, the other modules are specific to the Gazelle application.

File:Gazelle-ear.jpg

A Gazelle friendly Web application : Product Registry

This application uses the following modules :

Modules Shared with other applications? Description Forge location Notes
Common-ejb Definitely yes Includes common libraries (eg. Audit, Authentication), provided to others modules, and applications. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
ProductRegistry-ejb No This module contains all codes used only by the ProductRegistry application (IntegrationStatement, etc...). Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/ProductRegistry This module contains all EJB3 specific to Product Registry (and not used by other applications, as Gazelle). For instance, Product Registry uses Integrations Statements. An Integration Statement is a kind of system with some associated actors, integration profiles. So, some classes of this modules extend the Systems-ejb modules' classes. The goal of this ProductRegistry-ejb module is to don't modify the Systems-ejb module just for the Product Registry. The Systems-ejb module doesn't fit to the ProductRegistry, but the ProductRegistry fits to the System-ejb module, because the Systems-ejb module is used by Gazelle.
ProductRegistry-ear No This module will build our application using others modules (listed in this tab). This application will be represent as a EAR file, generated by this module.  :/svn/gazelle/ProductRegistry None
ProductRegistry-ui No Web part of our application. It generates a WAR file ready to be loaded in our application.  :/svn/gazelle/ProductRegistry None
ProductRegistry-persistence No This module corresponds to our persistence layer. It's used by all modules. This helps our projects to represent them as one application, using one database. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/ProductRegistry None
Systems-ejb Yes This module contains all codes managing Gazelle systems. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
TF-ejb Yes This module contains all codes from the Technical Framework. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
Users-ejb Yes This module contains all codes managing Gazelle users. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None


Here is below a slide showing the Product Registry application architecture :


In this slide, green modules are used by other applications, the other modules are specific to the Product Registry application.

File:PR-ear.jpg


A Gazelle friendly Web application : DemographicDataServer

This application uses the following modules :

Modules Shared with other applications? Description Forge location Notes
Common-ejb Definitely yes Includes common libraries (eg. Audit, Authentication), provided to others modules, and applications. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
Common-ui Definitely yes Includes common pages (JSF, XHTML), provided to others modules, and applications. Those pages will be included in a WAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
DemographicDataServer-ejb No This module contains all codes used only by the DemographicDataServer application. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/DemographicDataServer This module contains all EJB3 specific to DemographicDataServer (and not used by other applications, as Gazelle/PR). For instance, DemographicDataServer uses Patients and Adresses, not used by others applications.
DemographicDataServer-ear No This module will build our application using others modules (listed in this tab). This application will be represent as a EAR file, generated by this module.  :/svn/gazelle/DemographicDataServer None
DemographicDataServer-ui No Web part of our application. It generates a WAR file ready to be loaded in our application.  :/svn/gazelle/DemographicDataServer None
DemographicDataServer-persistence No This module corresponds to our persistence layer. It's used by all modules. This helps our projects to represent them as one application, using one database. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/DemographicDataServer None
Users-ejb Yes This module contains all codes managing Gazelle users. Generate a JAR file ready to be loaded in our application.  :/svn/gazelle/Modules None
Users-ui Yes Includes common pages for Users (JSF, XHTML), provided to others modules, and applications. Those pages will be included in a WAR file ready to be loaded in our application.  :/svn/gazelle/Modules None


Here is below a slide showing the DemographicDataServer application architecture :


In this slide, green modules are used by other applications, the other modules are specific to the DemographicDataServer application.

File:DDS-ear.jpg

A small example of Gazelle application : SampleGazelle

This application uses some small examples modules, they are not used by other applications, but they exist as a reference for our development, to learn how to develop.

The architecture of this example is the same as Gazelle architecture, but light.


Here is below a slide showing this architecture :

File:SampleGazelle-ear.jpg



Back to the Gazelle Developers Guide homepage.