wiki:MolgenisApps

Version 4 (modified by Morris Swertz, 13 years ago) (diff)

--

MOLGENIS Apps

Welcome to the MOLGENIS apps project. MOLGENIS apps is a suite of integrated biomedical research tools born from the MOLGENIS community.

For researchers

Find more information at the app homepages:

  • animaldb -- for tracking research animals
  • xgap -- for genotype and phenotype experiments
  • ngs -- LIMS and pipelines for illumina sequencing
  • mutation? -- for rare diseases and mutations
  • compute -- for bioinformatics computational workflows

For developers

Developers can download all code as open source at: http://www.molgenis.org/svn/molgenis_apps/trunk

The MOLGENIS apps project is structured as follows:

  • /apps -- apps in the suite
  • /modules -- pieces of reusable software shared between apps
  • /generated -- autogenerated code by MOLGENIS (svn:ignore)
  • /dist -- result of the build process (svn:ignore)
  • /WebContent -- images, style sheets and scripts for on the web
  • /build_xyz.xml -- script to automatically build a complete app from above

Each app is automatically build every night.

Detailed descriptions below:

build_xyz automatic build scripts

Each app can be build automatically by running ant build_xyz.xml or in eclipse, right-click and choose 'run as'->'Ant build'. For example: build_xgap.xml builds a runnable version of xgap.

The build script defines all settings for the app. For example:

!#xml
<project>
	<!-- this name is used to name the war file -->
	<property name="app_name" value="col7a1" />

	<!-- this holds all the settings for the generator -->
	<property name="app_properties" value="apps/${app_name}/org/molgenis/${app_name}/${app_name}.properties"/>
	
	<!-- this determines what additional modules should be loaded -->
	<path id="app.class.path">
		<pathelement location="apps/${app_name}" />
		<pathelement location="modules/datamodel" />
		<pathelement location="modules/auth" />
		<pathelement location="modules/pheno" />
		<pathelement location="modules/search" />	
	</path>

	<!-- import all tasks from build_common: clean, generate, compile, test, war, standalone-jar -->
	<import file="build_common.xml" />

</project>

The build scripts provide the following standard methods:

  • clean -- cleans the generated folders
  • generate -- generates all code using MOLGENIS
  • compile -- compile generated code and imported modules
  • test -- run the test cases defined in this app + dependent modules
  • update-eclipse -- update Eclipse to only show selected app + modules
  • (todo) create-jar -- create a standalone executable jar of this app
  • (todo) create-war -- create a mysql + tomcat deployable war of this app

At every change in SVN, hudson will run clean-generate-compile-test and sent emails if errors are found.

/apps

Apps are applications designed to be used by an end-user. For example: /apps/xgap.

Each app is structured as follows:

  • root package org.molgenis.<appname> contains specific sources and resourses
  • <appname>.properties file has settings for this app [move to build.xml?]
  • <appname>.testng.xml files lists all tests for this app (see hudson)
  • <appname>_ui.xml lists the user interface design for this app

Developers of apps have complete freedom to do what they want within their app as other apps will ignore any code in these folders.

/modules

Modules are bundles of code that are shared between two or more apps. For example: /modules/auth.

Each module is structured as follows:

  • root package org.molgenis.<modulename> contains specific sources and resourses
  • <modulename>.properties file has settings to setup a test molgenis for this module only (see hudson)
  • <modulemame>.testng.xml files lists all tests for this module (see hudson)
  • <modulename>_ui.xml lists a user interface design for this module; apps may choose to [ref] import this ui design into their application.

Developers of modules are required to:

  • ensure stability of the modules by providing sufficient tests and stable programming interfaces.
  • mark yet unstable modules with a suffix as '-dev'. For example /modules/matrix-dev.
  • 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
  • monitor the tests of all dependent apps on hudson and fix or undo any problems they you may have caused.

/generated (svn:ignore)

This folder contains all program resources autogenerated by the build script. Typically, there are:

  • /java -- generated java
  • /python -- generated python
  • /

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 ?

/WebContent

All resources for the web, such as images, css and javascript, can be stored in /WebContent. Each app or module will create subfolders. For example:

  • /res -- contains resource files that are created by hand
    • /css -- contains css files
      • /xgap -- contains xgap specific css files
    • /img -- contains images
      • /xgap -- contains xgap specific css files
    • /scritps -- contains scripts.
      • /xgap -- contains xgap specific css files
  • /generated-res -- contains generator produced resource files (svn:ignore).

/dist (svn:ignore)