Magic

A Magic alkalmazásmotor - Hogyan működik

A Magic paraméterezett végrehajtási ciklusa

A Magic alapvetően a procedurális kódolást helyettesíti egy rendszerrel, ahol a programozó a logikai tervezési szabályokat különböző "Műveleti táblákba" viszi be, amelyek mindegyike az alkalmazásmotor végrehajtási ciklusának más fázisára hivatkozik. Ez a motor minden Magic rendszernek az integrált része; az alkalmazásokat a programozó által bevitt tervezési szabályok követésével hajtja végre. Ezek a szabályok csupán tizenhárom művelet használatával megadhatóak, amelyek teljesen kiváltják a hagyományos 3GL és 4GL fejlesztőeszközök számtalan parancsát és utasítását anélkül, hogy bármit is feláldozna a rugalmasságból, funkcionalitásból, vagy a logika összetettségéből.

A Magic egyedi alkalmazásmotorjának megértéséhez segítséget ad, ha egy alkalmazás alapvető feldolgozási egységére úgy gondolunk, mint egy objektumra, amit a motor működtet. Ez az objektum a Taszk. A Magic Repository relációs adatbázisanalógiájának megfelelően, mindegyik taszkról szóló információ egymással összefüggő táblában van eltárolva. Ezeket a táblákat a Magic végrehajtási ciklusa működteti. Az ezekben a táblákban tárolt információ a Magic deklaratív megközelítését ábrázolja, ahogy azt az előző fejezetben láttuk.

A Magicet kifejezetten úgy tervezték, hogy megoldást nyújtson a nagy adatbázisaktivitású alkalmazásoknak. Ezek az alkalmazások általában online módúak és interaktívak, de a Magic megfelel a háttérfeldolgozáshoz és a riportgeneráláshoz is. A Magic alkalmazásmotor, és különösen az alkalmazás összes taszkját végrehajtó implicit ciklusok tervezése miatt, a fejlesztő csak azokat a feldolgozási követelményeket határozza meg, ami alkalmazásonként egyedi. Alább az implicit Magic végrehajtási ciklus látható.

A Magic alkalmazásmotor ciklusai

22. ábra: A Magic alkalmazásmotor ciklusai

Hogy működik a Magic programozható ciklusa

Minden Magic taszknak van egy rögzített blokkstruktúrája, ami a 22. ábrán bemutatott Magic alkalmazásmotor ismétlõdõ ciklusának lefolyását tükrözi. Minden taszknak vannak kapcsolódó működési táblái. A taszk végrehajtási struktúrájának minden blokkjához van egy tábla. Ezek a táblák a látható reprezentációi a műveleteknek, amik meghatározzák a taszk végrehajtása közben az adatnézeten elvégzendõ logikát és műveleteket.

A taszk szintű műveletek egyszer kerülnek végrehajtásra taszkonként, a taszkinicializálás (Task Prefix - Taszk Elõfeldolgozó) alatt, vagy a taszk befejezése (Task Suffix - Taszk utófeldolgozó) alatt. Ez a szint jellemzõen olyan műveleteket takar, mint a riport fejléc (Taszk Elõfeldolgozó) és a végösszeg (Taszk utófeldolgozó).

A rekord szintű műveletek rekordonként egyszer kerülnek végrehajtásra, rekordinicializáláskor (Rekord Elõfeldolgozó), a végfelhasználó rekordokkal történõ munkája közben (Rekord Fõfeldolgozó), és rekord lezárásakor (Rekord Utófeldolgozó). A Rekord Fõfeldolgozó szintjén a mezõk ciklikus végrehajtása online taszkoknál történik meg.

Fontos megjegyezni, hogy ezeket a műveleteket a programozó explicit módon határozza meg, nem úgy, mint sok implicit műveletet, amit az alkalmazásmotor automatikusan végrehajt. Tipikus példák az implicit műveletekre a rekord- és fájlinicializálást, ill. manipulációt szolgáló adatbázisműveletek.

A Magic ugyanolyan szintű funkcionalitást és logikai komplexitást tud elérni, mint a 3GL és 4GL eszközök, csupán tizenhárom elõre meghatározott, paraméterezett művelettel, mert rengeteg művelet már beágyazásra került a Magic alkalmazásmotorba. A 4GL-ek elemzése megmutatja, hogy a nyelvek utasításainak fele-harmada adatbázisműveletekkel és képernyõkezeléssel foglalkozik. A 3GL-ekben az adatbázis és képernyõkezelés nem tipikus része magának a nyelvnek, hanem általában speciális könyvtári rutinok hívásával kezelik le, vagy hibrid megközelítéssel, mint a beágyazott SQL. A legtöbb esetben, a 3GL-eknek több kódra van szükségük, mint a 4GL-eknek.

Futásidőben, a Magic sok "háztartási" munkát végrehajt az inicializálási szakasz közben, amikor az alkalmazás elindul, és a befejezési szakaszban, amikor az alkalmazás befejeződik. Ezen tevékenységek példái többek között:

A fejlesztõnek nincs szüksége explicit kódolásra, hogy végrehajtsa ezeket a folyamatokat - mivel ezek be vannak ágyazva a Magic alkalmazásmotorba.

A Magicben, mivel a normális esetben kódigényes műveletek automatikusan lekérdezésre kerülnek, csak akkor szükséges explicit módon meghatározni egy alkalmazás aspektusait, ha az a valódi logikával, az alkalmazás számításaival, az alkalmazás külsõ komponensekhez csatolásával - mint a nem adatbázisfájlok, fizikai eszközök, és nem-Magic programok - foglalkozik.

Taszk végrehajtás tábla

A Taszk végrehajtás táblák olyan műveleti táblák, amik az alkalmazáslogikát írják le (23. ábra). Mindegyik tábla a végrehajtási ciklus egy-egy szakaszára utal. Mindegyik táblabejegyzés tartalmaz egy műveletazonosítót egy készlet más táblára utaló mutatóval együtt. Tulajdonképpen egy Magic program végrehajtó táblái teljesen helyettesítik a 3GL és 4GL eszközök hagyományos forráskódját és scriptjeit.

Míg a fejlesztõ kitölti a taszk végrehajtó táblát, egy kényelmes legördülõ menü mutatja a Magic 13 műveletét. A szükséges művelet kiválasztásával, a fejlesztõ a Magicet a végrehajtó táblában a megfelelõ műveleti kód bejegyzésre kerül.

Habár a parancs teljes neve látható, akárhol is használják, csak egy darab karakter kerül a Magic Gyűjtõjében eltárolásra. Hasonlóképpen, habár az összes kiválasztott mezõ teljes neve látható, valójában csak a hivatkozásaik kerülnek eltárolásra a Magic Gyűjtõjében.

A Taszk végrehajtás tábla

23. ábra: A Taszk végrehajtás tábla

A Magic műveletei tömörek, mégis nagyon erõteljesek és gazdag funkcionalitásúak, elvégezve minden klasszikus adatfeldolgozó tevékenységet.

Legördülõ lista a Magic 13 műveletével

24. ábra: Legördülõ lista a Magic 13 műveletével

Egy lista a Magic "nyelvének" minden műveletével:

Távoli programhívás

A Magic alkalmazásmotor a "Call" művelettel támogatja az elosztott végrehajtást. A "Remote Call" lehetővé teszi a fejlesztők számára az alkalmazáspartícionáláshoz szükséges információk megadását. A fejlesztő megadhatja a szerverek listájából a kívánt szolgáltatást, a végrehajtandó program nevét, és bejegyezhetik, hogy a program aszinkron, vagy szinkron módban fusson.

Ez a kifejezetten erőteljes funkcionalitás a már ismerős Magic elvrendszer keretében kerül megvalósításra. A Magic táblavezérelt módszertana mögött meghúzódó koncepció, ami nem igényel kódolást, és egységes felületet használ, hozzájárul a Magic fejlesztők által nyert termelékenységhez. Nincs szükség különleges hálózati szaktudásra. Az alkalmazás partícionálása egyszerűbb, mint képzelnénk.

A Remote Call párbeszédablak

25. ábra: A Remote Call párbeszédablak

Meglepő lehet, hogy a Magic alkalmazásmotor alapvető koncepciója és architektúrája ennyire magától értetődő. Ez az egyszerűség az, ami lehetővé teszi a legösszetettebb feladatkritikus alkalmazások gyorsabban történő megépítését, mint bármely más eszközzel a piacon. A jól ismert vállalatok növekvő száma, akik a különböző üzletkritikus alkalmazásaikhoz a Magicet használják stratégiai választásként, a bizonyítéka az ebben a füzetben leírt elmélet gyakorlati hatékonyságának.