Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This document outlines the OpenLMIS-UI v7 architecture, which is being introduced to avoid AngularJS paradigms that make extending the OpenLMIS-UI difficult. The OpenLMIS-UI is a URL driven application with a modular architecture that allows implementers to modify workflows and logic to meet their communities needs. During the development of OpenLMIS v3.2.1, a need for a more explicit application architecture is needed to keep application components decoupled so modifications extensions by implementers can be more easily maintained. The extensions developed by OpenLMIS Malawi implementation have shown flaws in the AngularJS-based application architecture.

...

  • Too many singletons
    AngularJS creates lots of singletons, which are single objects persisted in memory while the UI is running in the web browser. Singletons in the AngularJS framework are often the cause of memory leaks and other performance bugs in large AngularJS applications. The OpenLMIS-UI v7 architecture will use plain javascript objects, written in modern Javascript, which will make the logic defined in the UI more reusable in other Javascript applications.  

Architecture

Below is a high level description of the v7 architecture, with a description of how and why the application behaves differently than the AngularJS-based OpenLMIS-UI that was deployed as part of OpenLMIS 3.2.1

Note: Many of the concepts in the v7 architecture are similar to OpenLMIS-UI at v3.2.1, the largest differences are in how the concepts interact.By further formalizing the OpenLMIS-UI's architecture, we intend to avoid issues that have been part of the OpenLMIS-UI. To better support the extendability of the OpenLMIS-UI we will focus on extending routes that define pages within the OpenLMIS-UI, since a majority of extensions focus on modifying data that is loaded into the view or adding specific bits of HTML. Additionally, by adopting a layered architecture pattern, developers will be able to more easilty reason about how the OpenLMIS-UI functions. Neither of these concepts are completely new to the OpenLMIS-UI, but by further formalizing the concepts the OpenLMIS-UI will become more consistent and maintainable – espically when using extensions from implementers – the largest change is how these concepts interact.

Gliffy
imageAttachmentIdatt233996342
baseUrlhttps://openlmis.atlassian.net/wiki
migration1
nameUI v7 Architecture Diagram
diagramAttachmentIdatt233734218
containerId122716264
timestamp1518740861421
 

Router Moderated Architecture

...