Changes between Initial Version and Version 1 of MolgenisApps


Ignore:
Timestamp:
2011-07-21T21:36:24+02:00 (13 years ago)
Author:
Morris Swertz
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MolgenisApps

    v1 v1  
     1= MOLGENIS 'Apps'project =
     2[[TOC()]]
     3
     4Welcome to the MOLGENIS apps project. MOLGENIS apps is a suite of integrated biomedical research tools born from the MOLGENIS community.
     5
     6== For researchers ==
     7
     8Find more information at the app homepages:
     9
     10* [animaldb AnimaldbStart] -- for tracking research animals
     11* [xgap XgapStart] -- for genotype and phenotype experiments
     12* [ngs NgsStart] -- LIMS and pipelines for illumina sequencing
     13* [mutation MutationStart] -- for rare diseases and mutations
     14* [compute ComputeStart] -- for bioinformatics computational workflows
     15
     16== For developers ==
     17
     18Developers can download all code as open source at:
     19http://www.molgenis.org/svn/molgenis_apps/trunk
     20
     21The MOLGENIS apps project is structured as follows:
     22* /apps -- apps in the suite
     23* /modules -- pieces of reusable software shared between apps
     24* /generated -- autogenerated code by MOLGENIS (svn:ignore)
     25* /dist -- result of the build process (svn:ignore)
     26* /WebContent -- images, style sheets and scripts for on the web
     27* /build_xyz.xml -- script to automatically build a complete app from above
     28
     29Each app is automatically build every night.
     30
     31Detailed descriptions below:
     32
     33=== build_xyz automatic build scripts ===
     34Each app can be build automatically by running {{{ant build_xyz.xml}}} or in eclipse, right-click and choose 'run as'->'Ant build'.
     35For example: build_xgap.xml builds a runnable version of xgap.
     36
     37The build script defines all settings for the app. For example:
     38
     39{{{
     40!#xml
     41<project>
     42        <!-- this name is used to name the war file -->
     43        <property name="app_name" value="col7a1" />
     44
     45        <!-- this holds all the settings for the generator -->
     46        <property name="app_properties" value="apps/${app_name}/org/molgenis/${app_name}/${app_name}.properties"/>
     47       
     48        <!-- this determines what additional modules should be loaded -->
     49        <path id="app.class.path">
     50                <pathelement location="apps/${app_name}" />
     51                <pathelement location="modules/datamodel" />
     52                <pathelement location="modules/auth" />
     53                <pathelement location="modules/pheno" />
     54                <pathelement location="modules/search" />       
     55        </path>
     56
     57        <!-- import all tasks from build_common: clean, generate, compile, test, war, standalone-jar -->
     58        <import file="build_common.xml" />
     59
     60</project>
     61}}}
     62
     63The build scripts provide the following standard methods:
     64* clean -- cleans the generated folders
     65* generate -- generates all code using MOLGENIS
     66* compile -- compile generated code and imported modules
     67* test -- run the test cases defined in this app + dependent modules
     68* update-eclipse -- update Eclipse to only show selected app + modules
     69* (todo) create-jar -- create a standalone executable jar of this app
     70* (todo) create-war -- create a mysql + tomcat deployable war of this app
     71
     72At every change in SVN, hudson will run clean-generate-compile-test and sent emails if errors are found.
     73
     74=== /apps ===
     75Apps are applications designed to be used by an end-user. For example: /apps/xgap.
     76
     77Each app is structured as follows:
     78* root package org.molgenis.<appname> contains specific sources and resourses
     79* <appname>.properties file has settings for this app [move to build.xml?]
     80* <appname>.testng.xml files lists all tests for this app (see hudson)
     81* <appname>_ui.xml lists the user interface design for this app
     82
     83Developers of apps have complete freedom to do what they want within their app as other apps will ignore any code in these folders.
     84
     85=== /modules ===
     86Modules are bundles of code that are shared between two or more apps. For example: /modules/auth.
     87
     88Each module is structured as follows:
     89* root package org.molgenis.<modulename> contains specific sources and resourses
     90* <modulename>.properties file has settings to setup a test molgenis for this module only (see hudson)
     91* <modulemame>.testng.xml files lists all tests for this module (see hudson)
     92* <modulename>_ui.xml lists a user interface design for this module; apps may choose to [ref] import this ui design into their application.
     93
     94Developers of modules are required to:
     95* ensure stability of the modules by providing sufficient tests and stable programming interfaces.
     96* mark yet unstable modules with a suffix as '-dev'. For example /modules/matrix-dev.
     97* when changing an existing module copy it into a -dev version and develop on that until the code is stable before promoting it to stable
     98* monitor the tests of all dependent apps on hudson and fix or undo any problems they you may have caused.
     99
     100=== /generated (svn:ignore) ===
     101This folder contains all program resources autogenerated by the build script.
     102Typically, there are:
     103* /java -- generated java
     104* /python -- generated python
     105* /
     106
     107[[BIG POINT: I want new generators not immediately in MOLGENIS core but instead as separate modules; we need a 'registerGenerator' method to make this easy ]]
     108
     109
     110=== /WebContent ===
     111All resources for the web, such as images, css and javascript, can be stored in /WebContent.
     112Each app or module will create subfolders. For example:
     113
     114* /res -- contains resource files that are created by hand
     115  * /css -- contains css files
     116    * /xgap -- contains xgap specific css files
     117  * /img -- contains images
     118    * /xgap -- contains xgap specific css files
     119  * /scritps -- contains scripts.
     120    * /xgap -- contains xgap specific css files
     121* /generated-res -- contains generator produced resource files (svn:ignore).
     122
     123=== /dist (svn:ignore) ===
     124
     125