Modulární systém v Edee.one
Modulární systém v Edee.one
- Obecný modulární systém
- Moduly postavené na Spring Frameworku
Zkopírovat odkaz na sekciÚ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ě setupModule by měl modul provést kompletní inicializaci,
- metoda prepareStartModule je volitelná - modul v ní může provést akce, které vyžadují, aby i ostatní moduly v CPS prošly fází setupModule,
- metoda startModule je 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 destroyModule se volá při uzavírání CPS (nebo re-inicializaci) a modul by v ní měl provést uvolnění alokovaných zdrojů
- volitelně lze využít, nebo přetížit metodu parseModuleConfiguration pro parametrizaci XML konfigurace modulu
- poslední dvojicí je dvojice metod getModuleSupport+setModuleSupport - CpsModuleSupport je 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.