Versions Compared

Key

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

...

Common Use Cases the solution must address.  Assumes definition of terms, like "Reference Distribution"

 

Use Case 1:  Project deploys "vanilla" OpenLMIS Reference Distrubution

...

A country project enhances the OpenLMIS Reference Distribution with a new service and deploys it.  The module is not part of the Reference Distro, but is published and available for others to include in their own distribution.  Use case should include how other projects obtain and leverage this module.

Use Case

...

3:  Project extends a core domain model

How does As an implementer extend a core domain model?  For example, adding the "color" field to a Facility, or additional attributes to a User.  How are these extensions added to a data store, how are they accessed via web services?  How are they used in , I want to add several new fields to a Facility record, say "Color", "Max Occupancy" and "Chairs", an n-length list of chairs available at the facility (this is simply non-sense data for this use case).  OpenLMIS should define a means to persist these new fields in the database, and retrieve them with RESTful calls, and use them in standard queries (e.g. find return all Facilities facilities where color == 'blue and type=warehouse)

...

'). 

Use Case 3a:  Project updates UI for a core domain extension

A project has extended the Facility record as described in the above Use Case 3.  How is the reference Facility UI screen extended to display these new fields?  Note the potential data types that the UI might need to accommodate, e.g. "Max Occupancy"  as an integer, Color as a color choose or set of RGB values, and Chairs is a selection list widget.

Use Case 4:  Add a new service -- Informed Push -- as part of Reference Distribution

We want to uate the reference distribution with a new capability.  For this example, say it is Informed Push

  • Update reference distribution
    • Update docker image configuration to add new docker instance for Informed Push.  Will hold image of the new Spring boot application
  • Starting published Spring boot application template, create new Spring boot application.  Write informed push logic here
    • If extensibility is foreseen, instead write informed push as a Spring module  
  • UI:  create new UI component (starting from published UI template).  Update reference UI application to include

Use Case

...

5:  Adding a Strategy to Requisition

How does a project insert their own strategy to an OpenLMIS extension point?

 

Modularity

Hybrid approach:

...

  • Reference UI - how to build, compose
    • Do modules package UI into the same repo as module code, or a separate repo?
    • Still need reference UI solution that pulls together various web components, both "core" and additional modules
  • Database - how to extend core domains, or even new module domains?
  • Domain model areas that need more attention:
    • Products, especially for packaging (GTIN/GS1), "kits" and some concept of "product Types" to satisfy scenarios such as, "I need 100 doses of BCG (not "BCG 10" or "BCG 20")"
    • Hierarchies, such as supervisor nodes, Requisition Groups, etc.
    • Design for Program Data
    • Should Programs have different supply models enabled for different parts of the supply chain, e.g. requisitions for one portion, informed push for another
  • What to call these docker image boundaries...Feature?  Vertical?  Service?
  • Extending domains, e.g. adding attributes to Facilities
  • Upfront cost of creating docker images?  
    • build, deploy, logging, etc.  Also, remember this needs to run on (Windows) laptops.  Minimum hardware requirements?
    • Promotes vertical development amongst different teams

 

Thought Experiment - Add New Module

Use case:  as an implementer, I want to create a module for Informed Push in OpenLMIS 3.x.  Team started this thought experiment, but was never finished as evidenced by the sparse content below 

...