Refine Module Administration Project
General Information
Name of Organisation : OpenMRS
Project Title : Refine Module Administration
Assigned To : Shazin Sadakath
Contact Person : Burke Mamlin and Ben Wolfe
Contact Information : Burke -
email|bmamlin|regenstrief.org
, Ben -email|bwolfe|regenstrief.org
Project Timeline : 27th April 2010 - 30th August 2010
Abstract
OpenMRS supports a great way to integrate Modules into the core system. But these modules are not hot swappable but gives the impression of hotswappable. Each time a module is uploaded, stopped or restarted the OpenMRS system literally restarts itself to put that action into effect. All scheduled tasks and background processes currently running will be interrupted. This project proposes an effective solution for this problem.
Problem Statement
OpenMRS supports modules integration and administration using its current user interface. Users of OpenMRS depend extensively on robust execution of some modules, all scheduled tasks, background processes and they would require modules to be uploaded, started, stopped also. But this is the problem current OpenMRS module administration faces. Since each module upload, download, start, stop, unload action performed by the user will result in a full OpenMRS Spring Context refresh. This refresh will interrupt all the currently executing modules as well as other background processes thus degrading the robustness.
To ensure the robustness there should be a mechanism which allows to do the above mentioned actions to be performed by the user without an OpenMRS Spring context refresh. This refresh should take place only when the user explicitly wants it to happen. Which means refreshing of OpenMRS Spring context should be decoupled from each above mentioned actions and should be an explicit action which can be performed by clicking a "Restart" button. Thus the OpenMRS Module Administration will guarantee uninterrupted and smooth execution of running modules and background processes.
Further more OpenMRS allows to add module as well as upgrade existing modules. Currently there are individual actions for adding and upgrading modules. These should be consolidated together to be performed as one action. With the basis of "To upgrade a module it must exist" a module adding and upgrading can be distinctly identified. Thus appropriate action can be performed.
Project Primary Objectives
Writing code that allows module upgrade or deletion to be queued for a subsequent manual restart of the OpenMRS.
Modifications to module administration page.
Project Mentoring and Evaluation
Mentoring will be done by Burke Mamlin
Mid Term Evaluation deadline is on 16th July 2010
Final Evaluation deadline is on 20th August 2010
Documentation and Sharing Source
Source Code will be committed to a SVN Branch as early and as often as possible. (http://svn.openmrs.org/openmrs/branches/moduleadmin/)
Documentation in related wiki pages (http://openmrs.org/wiki/Administering_Modules)
Module Queue API Usage http://openmrs.org/wiki/Module_Queue_API_Usage
Module Repository Caching http://openmrs.org/wiki/Module_Repository_Caching
Module Configuration http://openmrs.org/wiki/Module_Configuration
JConfirm http://openmrs.org/wiki/JConfirm_Confirmation_Utility
Project Plan
Task | From | To | Activities |
---|---|---|---|
Community Bonding Period | 27 Apr | 23 May |
|
Code/Documentation I | 24 May | 14 June |
|
Code/Documentation II | 15 June | 11 July |
|
Mid Term Evaluation | 12 July | 16 July |
|
Code/Documentation III | 17 July | 15 Aug |
|
Final Evaluation | 16 Aug | 20 Aug |
|
Awaiting final evaluation results | 21 Aug | 23 Aug | |
Submitting code samples to google | 24 Aug | 30 Aug |
Recurring steps planned to adhere are;
Sending weekly review on work done to mentor on every Sunday
Merging trunk and branch every 3 days.
Committing to branch as early and as often as possible.
Blogging progress on every Monday at http://shazsterblog.blogspot.com/.
Proposed UI Changes
The Module Administration UI Change I
The Module Administration UI Change II
The Module Administration UI Change III
The Module Administration UI Change IV
The Module Configuration Page
The JQuery Confirmation Widget aka jConfirm
Additional Information
This project requires knowledge of Spring Web MVC, OpenMRS Core API, Modules, Module Administration, JQuery, JSTL, etc. At the end of this project the Module Administration would become a smooth uninterrupted process.