Technical Overview - IntegratedBreedingPlatform/Documentation GitHub Wiki

Introduction

Breeding Management System (BMS) is a suite of web applications that help breeders manage the breeding process. It consists of tools that help in key areas of the breeding process:

  • Breeding Program Planning
  • Creating Studies
  • Design Field maps
  • Experimental Design
  • Label Printing
  • Running Trials
  • Inventory Management
  • Managing Germplasm and Lists
  • Statistical Analysis of Trial Data
  • Cross Study Queries
  • Genotyping Dataset Management

Tech Stack

The Technical Stack, and the corresponding features that are expressed in these different technologies are shown below.

Core Platform

The BMS makes heavy use Java and related open source technologies. This section focuses on key technolongies used in the BMS.

  • Spring Framework : The Spring Framework is a comprehensive framework that supplies enterprise server features around a backbone of dependency injection. The extra features Spring offers are numerous - we use a subset and will likely adopt more
    • Dependency Injection
    • Security
    • Mail
    • REST
    • Testing
    • Distributed Transaction Management - Atomikos
  • Hibernate : Hibernate is a long standing Object-Relational Mapping technology modelled on the Container Managed Beans on EJB 2.0, but lighter, more flexible and more powerful. Hibernate readily couples with the Spring Framework to provide data access management at an enterprise level.

UI

  • Javascript/JQuery
  • JQuery is a long established framework for making it easy for Javascript code to access and manipulate the DOM - the Object Oriented expression of the underlying structure of the HTML page.
  • Thymeleaf
  • Thymeleaf is a Spring Framework technology for HTML templating. HTML templating is a server side rendering of HTML, that nests data from the DB into the HTML page before sending HTML to the browser. (In contrast, client side rendering occurs when JS and JSON is sent to the browser, and the browser assembles the page by running the Javascript in the browser to create the HTML
  • AngularJS / Angular
  • Angular is a popular MVC framework for Javascript

Database

BMS uses MySQL as its data store. BMS uses InnoDB as its MySQL storage engine. InnoDB is used to provides the standard ACID-compliant transaction features, along with declarative referential integrity.

Other Technologies Used

Current Architecture Overview

The BMS uses a multi layered architecture. Layered architecture is a common architecture pattern that is widely used in Java EE applications. Layered architecture organises components into horizontal layer each performing a specific role. Typically a layered architecture has five layers:

  • Presentation Layer - This layer is responsible for all user interface and browser communication logic.
  • Business layer - This layer is responsible for executing business rules associated with the request. The business layer is
  • Service Layers - This layer consists of common services used by the business layer. This layer is optional and is often combined into the business layer depending on the applications complixity.
  • Persistence layer - This layer is responsible for storing application state. Application state is usually stored in a database.
  • Database layer - The data store chosen for the application.

The current BMS architecture is depicted below.

BMS must support multiple crops including custom crops. Currently, there is a database for each crop. This requires the application to dynamically switch databases depending on the crop being used.

Component Architecture

The module level architecture of the BMS is displayed below. The depiction of Middleware in this diagram is a single module. The truth is that middleware is packaged inside each war file deployed as a duplicated library jar. In the near future, we would like to extract middleware behind an API and deploy into the Web Server only once.

  • Workbench - The main purpose of the workbench component is to enable single sign on to other BMS application. The Workbench also enables rudimentary user management. It also enables managements of germplasm and lists

  • Fieldbook- The filedbook is the heart of the BMS and enables management of various workflows during the breeding cycle. This includes:

    • Creating Studies
    • Design Field maps
    • Experimental Design
    • Label Printing
    • Running Trials
    • Importing datasets
  • BMSAPI - This is the API layer of the application used both for internal and external client connection purposes. The goal is to have every UI component access the BMS via the BMSAPI layer as we continue to move towards an API driven architecture (see reference state)

  • GDMS - Module to help capture low density genotypic data.

  • Inventory Manager - A module to manage inventory.

All of the web applications utilize following two libraries for database access and common utility functions:

In addition to these core web applications, BMS utilizes some third-party desktop tools for some parts of the overall breeding management workflow. These tools are :

  • Breeding View
  • Experimental Design
  • Single Site Analysis (SSA)
  • Multi Site Analysis (MSA)

The following are libraries, standards and technologies which are used by the BMS:

Some external BrApps, which are tools built using BrAPI specifications, are being implemented into the BMS:

Transaction Management in the BMS

BMS Transaction Management Overview BMS Transaction Management Overview Original Size.

High Level Overview of Tx in the BMS

Database Schema

See Database-Schema-Documentation page.