FOR CURRENT MIFOS X INFORMATION, VISIT THE MIFOS X DEVELOPER ZONE Welcome to the Zone
Table of Contents | ||
---|---|---|
|
Introduction
This is for new Mifos developers. If you have experience with computer science, Java/J2EE Web applications, testing, databases, etc. but are learning Mifos for the first time, this guide is for you!
...
This is not a detailed, comprehensive guide. Instead, it is made to point out key concepts and areas of Mifos, leading you to further study. Think of it as an index into the most important parts of Mifos.
Core functionalities aligned with domain
loans, savings, clients
see Product Features for overview of loans, savings and client functionality
...
Cross-cutting functionality
Transaction Management
Mifos has legacy transaction manager org.mifos.framework.hibernate.helper.HibernateUtil, and some new code which uses spring based declarative transactions manager /mifos-appdomain/src/main/resources/org/mifos/config/resources/persistenceContext.xml.
...
http://community.jboss.org/wiki/Sessionsandtransactions
Audit Logging
http://mifos.org/functional-specifications/system-processing/change-logs-and-application-logs
...
org.mifos.framework.components.audit.business.AuditLogRecord (mapped to change_log_detail table)
Security
Legacy code in Mifos uses a custom security mechanism based on RolesAndPermissions* classes. Handling of security is being transitioned to Spring Security which has been configured to run on top of the legacy security system. Spring security configuration can be found in application/src/main/webapp/WEB-INF/applicationContextSecurity.xml.
...
Lookup Values
Legacy code in Mifos make use of LookupEntity, LookupValueEntity, LookupValueLocaleEntity, and LookupLabelEntity. Together these objects were supposed to fill multiple purposes including supporting static lists of localizable values, user definable lists of localizable values, user customizable labels.
More detail can be found on the LookupValueBackground page.
Configuration
Mifos has many configuration settings. See mifos.org for the authoritative guide.
Trapdoor settings
Some configuration settings may only be changed once! These settings must be carefully considered before entering data into a new Mifos installation.
http://mifos.org/documentation/configuration#about-the-one-time-settings
LSIM, GLIM, locales in the db
current refactorings in progress
UI conversion
Presentation layer code is being migrated from Struts 1.x/JSP to SpringMVC/Webflow/Freemarker. The goal is to remove all Struts/JSP code and replace it with SpringMVC/Webflow/Freemarker. As such any new functionality added should be implemented as SpringMVC/Webflow/Freemarker.
Service facades
Legacy Mifos code has business logic scattered through the code all the way up to the presentation layer including action classes and JSP pages. The goal is to remove business logic from the presentation layer and have it encapsulated inside Service Facades and Services.
build/developer details/limitations
Most developers use Eclipse, but it is certainly possible to use other IDEs
...
Time to run acceptance tests
Acceptance tests hit a running instance of Mifos, clicking through the app and filling out forms as users would.
...
- performance improvement of acceptance tests and performant approach for managing test data
- Running Acceptance Tests
- The Test Pyramid
- Writing Acceptance Tests
- Maven Acceptance Tests
ci server (birch) running in Seattle office
See Hudson Continuous Integration.
internal resources
the vault
Sensitive information (like passwords) is only shared using strong encryption. Ask an existing Mifos administrator for access to the vault.
Admin contacts: Adam Monsen, Van Mittal-Henkle, Sumit Shah, Udai Gupta
internal confluence wiki
- http://confluence.mifos.org
- runs on a server in the Seattle office
- admin contacts: Ed Cable, Scott Falaschi, Adam Monsen, Sumit Shah, Udai Gupta
Monitoring
- Mifos admins are notified of outages via email.
- Outage notifications are sent to the mifos administrators mailing list.
- OpenNMS runs on a server called "cloudboss". Ask an admin contact for access.
- Monitoring Servers With OpenNMS
- Admin contacts: Adam Monsen, Van Mittal-Henkle, Sumit Shah, Udai Gupta
Mifos administrators mailing list
- http://groups.google.com/forum/#!forum/mifos-adm|http://groups.google.com/forum/#!forum/mifos-adm
- Admin contacts: Adam Monsen, Van Mittal-Henkle, Sumit Shah, Udai Gupta, Emily Tucker, Ed Cable, Kay Chau
Backups
- We regularly remotely backup data on all machines.
- BackupPC runs on a server called "cloudboss". Ask an admin contact for access.
- /wiki/spaces/MIFOSADMIN/pages/8552796 (← must be logged in to view)
Testing infrastructure
Unit and Integration tests in Mifos uses Junit 4.5+ framework and only Acceptance Tests (acceptanceTests module) uses TestNG 1.5+ framework.
...
- Mockito http://mockito.org/
Unit Testing
Integration Testing
Integration Tests follows a naming convention *IntegrationTest
legacy *StrutsTest
Struts tests are legacy tests related to struts framework and supposed to be removed once the UI Conversion in G is completed.
Acceptance Tests
Selenium is used to drive the user interface for end-to-end testing. Test datasets are maintained to avoid lots of boilerplate application setup for each test.
...
Page Objects
Acceptance Tests uses Page Objects concept with Selenium.
http://code.google.com/p/selenium/wiki/PageObjects
Reporting
legacy BIRT integration
BIRT Reports in Mifos is used for providing basic reporting capabilities. We have been trying to move to Pentaho since the start of Develop Data Warehouse Strategy.
...
- Replacing http://mifos.org/functional-specifications/retrieving-information/administrative-documents
Pentaho server/reports
Accounting Integration
/mifos-accounting module serves the purpose of getting accounting information from Mifos. Current integration was build to support Tally ERP 9.
...
Batch jobs
Mifos uses Spring batch / Quartz for batch jobs which are scheduled bulk processing when system is not in use (usually midnight)
meeting schedule generation
The notion of schedules are used for loans, savings and customer-loan officer meetings in mifos.
...
NOTE: There is a bug in mifos whereby if you are running with LSIM on, the loan accounts schedules are changed when they shouldnt be.
Database Migration/Upgrades
Mifos started using Liquibase (http://www.liquibase.org) since Mifos 2.1, Database Upgrades give good overview about how changes to database are added as Liquibase scripts.
...
Read Also: Database Development, Data Migration - Historic data - no updates to be made, Database Neutrality