mifos x - extensible platform and software development kit
DESCRIPTION
Slide deck showed during the kick-off for an intitiative to ease the extension and creating a SDK for the Miofs X Platfrom.TRANSCRIPT
Extensible Platform &Software Development Kit
Mifos
Agenda
❏ Phase 1 - Modularization❏ Phase 1.1 - API vs Internal❏ Phase 2 - Spring and Plugins❏ Phase 3 - Interceptors & Event Sourcing❏ Phase 4 - Preparing Archetypes❏ Phase 5 - SDK and JS-Library❏ Q & A | Open Discussion
Who am I
❏ Volunteer for Mifos since early 2014.❏ Sr. Software Engineer | Architect @ iTAC a MES vendor making the
Internet of Things a reality for the Industry.❏ Lives in Nickenich, Germany❏ [email protected]❏ me @ LinkedIn
YAGNI likes a DRY KISS
Phase 1Modularization
To Do’s
❏ Identify Modules❏ Infrastructure | Core❏ Accounting❏ Portfolio
❏ Loan❏ Savings
❏ Office❏ Departments❏ Staff
❏ CRM❏ Create Projects
❏ Parent | Child❏ Adjust Dependencies
Phase 1.1API vs Internal
To Do’s
❏ Separate API❏ REST Resource❏ Command Model❏ Query Model❏ Service Interfaces
❏ Separate Internal❏ Service Implementation❏ Command Handler❏ Repositories❏ Module Configuration
Phase 2Spring & Plugins
To Do’s
❏ Main Spring Context provided via Infrastructure Module❏ Spring Java Config for Modules
❏ Naming Convention❏ e.g. org.mifos.module.*.config
❏ Spring’s build in Class Path Scanning❏ Use annotations to drive DI
❏ Component scan configured in module configuration❏ Add only module APIs as a compile time dependency
❏ Internals will be on the runtime class path
Phase 3Interception & Event Sourcing
To Do’s
❏ Provide Command Interceptions❏ Synchronous extensions❏ Consumer acts on workflow
❏ Provide Command Handler Events❏ Asynchronous extensions❏ Consumer reacts on workflow
❏ Provide registration mechanism❏ Interceptors❏ Event Listeners
Phase 4Preparing Archetypes
To Do’s
❏ Maven like archetype for Gradle❏ currently in specification
❏ Include❏ Infrastructure dependency❏ Testing framework❏ Project layout❏ Class skeletons for configuration❏ Ability to run | test drive in process
❏ Embedded Container (e.g. Jetty)❏ Embedded Database (e.g. H2)
Phase 5
SDK & JS-Library
To Do’s
❏ SDK❏ Bundle APIs and Archetypes❏ Provide proper documentation
❏ at least JavaDoc for all API components❏ a few How To’s
❏ Create a JS-Library❏ Provide proper documentation❏ a few How To’s
❏ jsfiddle?
Q & AOpen Discussion