Give us contact

Do you prefer to ask us directly?

Call us +420 605 203 938 (the Czech Republic)

or use this contacts

AyMINE

Related links


FI - Finance Management
Front-End Scripting

Middleware - efektivní řízení

AyMINE využívá efektivního interního řízení zpráv pro synchronní i asynchronní komunikaci. Každý modul vystavuje poskytovatele služeb i zpracovatele. Součástí administrace systému je dohled nad událostmi, které jsou zpracovávány.

Integrace modulu

Každý modul systému je do middleware integrován prostřednictvím instalace. V rámci definice modulu jsou popsány události, které modul využívá i které publikuje. Při instalaci modulu jsou tyto informace zařazení do middlware, který je využívá.

Instalaci modulu je možné spouštět jakkoli opakovaně, takže není problém nastavení kdykoli změnit.

Publikace služeb

Služby modulů jsou přes middleware dostupné přes vystavené služby. Modul služby vystavuje tak, že poskytne zpracovatele událostí (EventHandler). Definice jednoho zpracovatele z modulu am vypadá takto

"eventHandlers":[
   {
       "event":"am.amProduct.generateAIRedData", 
       "icon":"internal", 
       "desc":"Description of the pro provided service", 
       "urlDoc": "Link to the module-related documentation",
       "a":"server.amProduct.generateAIForMsgParsing"
   },
}

Ikona a popis slouží pro administraci, standardně jsou anglicky. Podrobnější dokumentace služby musí být součástí dokumentace modulu, do middleware se neukládá.

Přihlášení odběratele události

Odběratel události je Funkce systému, která využívá poskytnutou událost. Odběratel může událost volat a díky registraci

  • Je přehled, jak jsou které služby využívány
  • Na úrovni middleware (v rámci rozhraní administrace) je možné kontrolovat, zda smí událost volat
  • Je přehled o závislostech modulů, takže je jednodušší jejich správa

Příklad registrace odběratele:

   "am.amProduct.generateAIRedData":{ 
       "desc":"Request to generate AI data for product recognition",
       "requestType":"asynchronous", 
       "answerRequested":false, 
       "type":"userActivated", 
       "scope":"internal" 
   },

Ukázka registruje asynchronně volanou službu - požadavek na zpracování. Popis dále uvádí, že volající nečeká žádnou odpověď a služba je volána asynchronně a nemá stanovenu prioritu.

Volání událostí

Událost může zavolat libovolná funkce, která byla předtím registrována. Příklad volání výše popsané funkce:

    EventManager::raise(
        'am.amProduct.generateAIRedData',  // název události
        [],                                // parametry volání
        new DateTime(),                    // datum, kdy má být událost aktivována
        null,                              // uživatelský účet
        $cid                               // klient (povinné)
       );

Časové události

Sytém automaticky a pravidelně generuje řadu časových událostí

  • Každých několik minut
  • Každou hodinu
  • Každý půlden
  • Začátek / konec pracovní dne
  • Pro noční skripty
    Moduly nemají důvod implementovat vlastní mechanismus časového volání. Stačí se "napojit" na některou ze systémových časových událostí.

Administrace middleware

Systémový správce má přehled, jaké události jsou zpracovávány.
{E19F0745-084D-45C4-B436-FA96A620AE27}.png
Konzole pro sledování událostí

{74A0F882-B07D-4ED1-93C9-304C6E30294A}.png
Přehled zpracovatelů událostí

Hodí se vědět

AyMINE není real-time systém

Middleware a zpracování událostí je efektivním řešení pro podnikové aplikace. Implementovaný mechanismus není navržen pro Real-Time systémy ani pro on-line hry, které vyžadují okamžité reakce. Naopak pro podnikové aplikace a systémy, které je důležitá nejenom spolehlivost, ale i ekonomické náklady na provoz systému, je systém řízení událostí ideální volbou.

Systémové a procesní business události nejsou to samé