Modulární systém v Edee.one

Modulární systém v Edee.one

  1. Obecný modulární systém
    1. Životní cyklus
    2. Konfigurace modulu
  2. Moduly postavené na Spring Frameworku
    1. Životní cyklus
    2. Standardní beany v kontextu
    3. Veřejné rozhraní modulu
    4. Komunikace mezi moduly
    5. Lokalizace
    6. Zásah do interní konfigurace
    7. Asynchronní úlohy

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.