dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #05408
[Branch ~dhis2-documenters/dhis2/dhis2-docbook-docs] Rev 182: Minor fix
------------------------------------------------------------
revno: 182
committer: Lars <larshelg@larshelg-laptop>
branch nick: dhis2-docbook-docs
timestamp: Mon 2010-04-12 19:18:35 +0200
message:
Minor fix
modified:
src/docbkx/en/dhis2_technical_architechture_guide.xml
src/docbkx/en/dhis2_user_manual_en.xml
--
lp:~dhis2-documenters/dhis2/dhis2-docbook-docs
https://code.launchpad.net/~dhis2-documenters/dhis2/dhis2-docbook-docs
Your team DHIS 2 developers is subscribed to branch lp:~dhis2-documenters/dhis2/dhis2-docbook-docs.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-documenters/dhis2/dhis2-docbook-docs/+edit-subscription
=== modified file 'src/docbkx/en/dhis2_technical_architechture_guide.xml'
--- src/docbkx/en/dhis2_technical_architechture_guide.xml 2010-04-12 16:51:30 +0000
+++ src/docbkx/en/dhis2_technical_architechture_guide.xml 2010-04-12 17:18:35 +0000
@@ -11,7 +11,7 @@
<keyword>Document</keyword>
</keywordset>
</articleinfo>
- <section>
+ <section id="technicalOverview">
<title>Overview</title>
<para>This document outlines the technical architecture for the District Health Information Software 2 (DHIS 2). The DHIS 2 is a routine data based health information system which allows for data capture, aggregation, analysis, and reporting of data. </para>
<para>DHIS 2 is written in Java and has a three-layer architecture. The presentation layer is web-based, and the system can be used on-line as well as stand-alone.</para>
@@ -20,7 +20,7 @@
</screenshot>
<para>Fig. Overall architecture</para>
</section>
- <section>
+ <section id="technicalRequirements">
<title>Technical Requirements</title>
<para>The DHIS 2 is intended to be installed and run on a variety of platforms. Hence the system is designed for industry standards regarding database management systems and application servers. The system should be extensible and modular in order to allow for third-party and peripheral development efforts. Hence a pluggable architecture is needed. The technical requirements are:</para>
<itemizedlist>
@@ -41,7 +41,7 @@
</listitem>
</itemizedlist>
</section>
- <section>
+ <section id="technicalStructure">
<title>Project Structure</title>
<para>DHIS 2 is made up of 42 Maven projects, out of which 18 are web modules. The root POM is located in <filename>/dhis-2</filename> and contains project aggregation for all projects excluding the <filename>/dhis-2/dhis-web</filename> folder. The <filename>/dhis-2/dhis-web</filename> folder has a web root POM which contains project aggregation for all projects within that folder. The contents of the modules are described later on.</para>
<screenshot>
@@ -49,7 +49,7 @@
</screenshot>
<para>Fig. Project structure</para>
</section>
- <section>
+ <section id="technicalDataModel">
<title>The Data Model</title>
<para>The data model is flexible in all dimensions in order to allow for capture of any item of data. The model is based on the notion of a DataValue. A DataValue can be captured for any DataElement (which represents the captured item, occurrence or phenomena), Period (which represents the time dimension), and Source (which represents the space dimension, i.e. an organisational unit in a hierarchy).</para>
<figure>
@@ -62,7 +62,7 @@
<graphic fileref="resources/images/dhis2_technical_architecture/core_diagram.jpg" align="center"/>
<para>Fig. Core diagram</para>
</section>
- <section>
+ <section id="technicalPersistenceLayer">
<title> The Persistence Layer </title>
<para>The persistence layer is based on Hibernate in order to achieve the ability to run on any major DBMS. Hibernate abstracts the underlying DBMS away and let you define the database connection properties in a file called hibernate.properties. </para>
<para>DHIS 2 uses Spring-Hibernate integration, and retrieves a SessionFactory through Springâs LocalSessionFactoryBean. This LocalSessionFactoryBean is injected with a custom HibernateConfigurationProvider instance which fetches Hibernate mapping files from all modules currently on the classpath. All store implementations get injected with a SessionFactory and use this to perform persistence operations.</para>
@@ -72,7 +72,7 @@
</screenshot>
<para>Fig. Persistence layer</para>
</section>
- <section>
+ <section id="technicalBusinessLayer">
<title> The Business Layer </title>
<para>All major classes, like those responsible for persistence, business logic, and presentation, are mapped as Spring managed beans. âBeanâ is Spring terminology and simply refers to a class that is instantiated, assembled, and otherwise managed by the Spring IoC container. Dependencies between beans are injected by the IoC container, which allows for loose coupling, re-configuration and testability. For documentation on Spring, please refer to springframework.org.</para>
<para>The services found in the dhis-service-core project basically provide methods that delegate to a corresponding method in the persistence layer, or contain simple and self-explanatory logic. Some services, like the ones found in the dhis-service-datamart, dhis-service-import-export, dhis-service-jdbc, and dhis-service-reporting projects are more complex and will be elaborated in the following sections.</para>
@@ -290,13 +290,13 @@
</section>
</section>
</section>
- <section>
+ <section id="technicalPresentationLayer">
<title> The Presentation Layer </title>
- <para>The presentation layer of DHIS 2 is based on web modules which are assembled into a portal. This implies a modularized design where each module has its own domain, e.g. the dhis-web-reporting module deals with reports, charts, pivot tables, documents, while the dhis-web-maintenance-dataset module is responsible for data set management. The web modules are based on WebWork and follow the MVC pattern [5]. The modules also follow the Maven standard for directory layout, which implies that Java classes are located in src/main/java, configuration files and other resources in src/main/resources, and templates and other web resources in src/main/webapp. All modules can be run as a standalone application.</para>
+ <para>The presentation layer of DHIS 2 is based on web modules which are assembled into a portal. This implies a modularized design where each module has its own domain, e.g. the dhis-web-reporting module deals with reports, charts, pivot tables, documents, while the dhis-web-maintenance-dataset module is responsible for data set management. The web modules are based on Struts and follow the MVC pattern [5]. The modules also follow the Maven standard for directory layout, which implies that Java classes are located in src/main/java, configuration files and other resources in src/main/resources, and templates and other web resources in src/main/webapp. All modules can be run as a standalone application.</para>
<para>Common Java classes, configuration files, and property files are located in the dhis-web-commons project, which is packaged as a JAR file. Common templates, style sheets and other web resources are located in the dhis-web-commons-resources project, which is packaged as a WAR file. These are closely related but are separated into two projects. The reason for this is that other modules must be able to have compile dependencies on the common Java code, which requires it to be packaged as a JAR file. For other modules to be able to access the common web resources, these must be packaged as a WAR file [6].</para>
<section>
<title>The Portal</title>
- <para>DHIS 2 uses a light-weight portal construct to assemble all web modules into one application. The portal functionality is located in the dhis-web-portal project. The portal solution is integrated with WebWork, and the following section requires some prior knowledge about this framework, please refer to opensymphony.com/webwork for more information.</para>
+ <para>DHIS 2 uses a light-weight portal construct to assemble all web modules into one application. The portal functionality is located in the dhis-web-portal project. The portal solution is integrated with Struts, and the following section requires some prior knowledge about this framework, please refer to struts.apache.org for more information.</para>
<section>
<title>Module Assembly</title>
<para>All web modules are packaged as WAR files. The portal uses the Maven WAR plug-in to assemble the common web modules and all web modules into a single WAR file. Which modules are included in the portal can be controlled simply through the dependency section in the POM file [7] in the dhis-web-portal project. The web module WAR files will be extracted and its content merged together.</para>
@@ -318,7 +318,7 @@
<para>All modules must define a default action called <emphasis role="italic">index</emphasis>.</para>
</listitem>
<listitem>
- <para>The web.xml of the module must define a redirect filter, open-session-in-view filter, security filter, and the WebWork FilterDispatcher [8].</para>
+ <para>The web.xml of the module must define a redirect filter, open-session-in-view filter, security filter, and the Struts FilterDispatcher [8].</para>
</listitem>
<listitem>
<para>All modules must have dependencies to the dhis-web-commons and dhis-web-commons-resources projects.</para>
@@ -327,15 +327,15 @@
</section>
<section>
<title>Common Look-And-Feel</title>
- <para>Common look and feel is achieved using a back-bone Velocity template which includes a page template and a menu template defined by individual actions in the web modules. This is done by using static parameters in the WebWork xwork.xml configuration file. The action response is mapped to the back-bone template called <emphasis role="italic">main.vm</emphasis>, while static parameters called page and menu refers to the templates that should be included. This allows the web modules to display its desired content and left side menu while maintaining a common look-and-feel.</para>
+ <para>Common look and feel is achieved using a back-bone Velocity template which includes a page template and a menu template defined by individual actions in the web modules. This is done by using static parameters in the Struts/Xwork xwork.xml configuration file. The action response is mapped to the back-bone template called <emphasis role="italic">main.vm</emphasis>, while static parameters called page and menu refers to the templates that should be included. This allows the web modules to display its desired content and left side menu while maintaining a common look-and-feel.</para>
</section>
<section>
<title>Main Menu</title>
- <para>The main menu contains links to each module. Each menu link will redirect to the index action of each module. The menu is updated dynamically according to which web modules are on the classpath. The menu is visibly generated using the <emphasis role="italic">ModuleManager</emphasis> component, which provides information about which modules are currently included. A module is represented by the <emphasis role="italic">Module</emphasis> object, which holds properties about the name, package name, and default action name. The <emphasis role="italic">ModuleManager</emphasis> detects web modules by reading the WebWork Configuration and PackageConfig objects, and derives the various module names from the name of each package definition. The <emphasis role="italic">Module</emphasis> objects are loaded onto the WebWork value stack by WebWork interceptors using the <emphasis role="italic">ModuleManager</emphasis>. These values are finally used in the back-bone Velocity template to produce the menu mark-up.</para>
+ <para>The main menu contains links to each module. Each menu link will redirect to the index action of each module. The menu is updated dynamically according to which web modules are on the classpath. The menu is visibly generated using the <emphasis role="italic">ModuleManager</emphasis> component, which provides information about which modules are currently included. A module is represented by the <emphasis role="italic">Module</emphasis> object, which holds properties about the name, package name, and default action name. The <emphasis role="italic">ModuleManager</emphasis> detects web modules by reading the Struts Configuration and PackageConfig objects, and derives the various module names from the name of each package definition. The <emphasis role="italic">Module</emphasis> objects are loaded onto the Struts value stack by Struts interceptors using the <emphasis role="italic">ModuleManager</emphasis>. These values are finally used in the back-bone Velocity template to produce the menu mark-up.</para>
</section>
</section>
</section>
- <section>
+ <section id="technicalFrameworkStack">
<title> Framework Stack </title>
<para>The following frameworks are used in the DHIS 2 application.</para>
<section>
@@ -388,7 +388,7 @@
<para>[5] Model-View-Controller, design pattern for web applications which separates mark-up code from application logic code.</para>
<para>[6] The WAR-file dependency is a Maven construct and allows projects to access the WAR file contents during runtime.</para>
<para>[7] Project Object Model, the key configuration file in a Maven 2 project.</para>
- <para>[8] Represents the front controller in the MVC design pattern in WebWork.</para>
+ <para>[8] Represents the front controller in the MVC design pattern in Struts.</para>
<para>[9] Hibernate second-level cache does not provide satisfactory performance.</para>
</section>
</article>
=== modified file 'src/docbkx/en/dhis2_user_manual_en.xml'
--- src/docbkx/en/dhis2_user_manual_en.xml 2010-03-05 04:46:31 +0000
+++ src/docbkx/en/dhis2_user_manual_en.xml 2010-04-12 17:18:35 +0000
@@ -43,14 +43,14 @@
</appendix>
<appendix>
<title> DHIS Technical Architecture Guide</title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_1"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_2"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_3"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_4"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_5"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_6"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_7"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="arch_8"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalOverview"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalRequirements"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalStructure"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalDataModel"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalPersistenceLayer"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalBusinessLayer"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalPresentationLayer"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dhis2_technical_architechture_guide.xml" encoding="UTF-8" xpointer="technicalFrameworkStack"/>
</appendix>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="resources/glossary/glossary_en.xml" encoding="UTF-8"/>
</book>