Refined Module Administration
My project Refine Module Administration focuses on a solution for the problem of Spring Context Refresh whenever a module action is performed from the Module Administration page. The idea was to decouple the Spring Context Refresh from each module action and make it an explicit action that can be performed when the user actually needs to.
This will prevent unwanted interruptions to the background processes and scheduled tasks. Developing for the last couple of weeks I managed to get this done by creating an attribute called pendingAction in Module. I am using this attribute to store the pending action per module. And a Map will store the moduleId and the pendingAction for fast retrieval. When the user eventually tries to restart, this map will be referred to execute any pending tasks first and then perform a Spring Context refresh.
I had to face a lot challenges because after a server crash or manual stop, at the next restart the pending module actions had to performed. So I had to think of ways to perform these tasks without actually performing a Spring Context Refresh.
I had to learn the OpenMRS Core API related to Module Administration and Spring 3 to do the coding.
I have started testing now hoping to test the system in all aspects.