Modulární systém v Edee.one
- Obecný modulární systém
- Moduly postavené na Spring Frameworku
Úvod
Základní návrh modulárního řešení je velmi jednoduchý - definuje pouze standardní lifecycle a sadu interfaců, které musí každý modul implementovat. Jádro Edee.one - CPS se pak stará o jejich inicializaci (vytváří i jejich instanci) a definuje jejich životní cyklus, řeší jejich konfiguraci.
Základním interfacem, který musí implementovat každý modul je com.fg.webapp.cps.v1.modules.CpsModule.
Ten obsahuje:
- několik informativních metod, přes které CPS identifikuje modul a jeho stav (
getModuleName,getModuleStatus,getModuleVersion), všechny vracejí řetězcovou hodnotu a jsou pouze informativní pro zobrazení v přehledu modulů - lifecycle callback metody (
setupModule,prepareStartModule,startModule,destroyModule) - ty jsou pro modul klíčové- v metodě
setupModuleby měl modul provést kompletní inicializaci, - metoda
prepareStartModuleje volitelná - modul v ní může provést akce, které vyžadují, aby i ostatní moduly v CPS prošly fázísetupModule, - metoda
startModuleje volitelná - modul v ní může provést finální akce před přepnutím modulu do provozu (tyto akce již nesmí selhat), - metoda
destroyModulese volá při uzavírání CPS (nebo re-inicializaci) a modul by v ní měl provést uvolnění alokovaných zdrojů
- v metodě
- volitelně lze využít, nebo přetížit metodu
parseModuleConfigurationpro parametrizaci XML konfigurace modulu - poslední dvojicí je dvojice metod
getModuleSupport+setModuleSupport-CpsModuleSupportje základní objekt, pomocí kterého modul komunikuje s CPS
Modul může využít základní implementaci com.fg.webapp.cps.v1.modules.CpsModuleAbstract.
Tato úroveň implementace je využívána moduly, které nejsou postavené nad Spring frameworkem, a nijak neřeší vzájemnou
komunikaci mezi moduly ani vystavování veřejného rozhranní modulu.
Pro Springové moduly existuje speciální podpora - tento způsob je proto doporučený, lze využít možností pro konfiguraci.
Moduly by měly počítat s tím, že je vývojáři v případě potřeby mohou deklarovat v XML konfiguraci vícekrát a že může paralelně vzniknout několik nezávislých instancí stejného modulu, které budou paralelně vedle sebe provozovány.
