Delphi - IBEvents komponens

Interbase 12. rész

forráskód letöltése
Ezen a héten megvizsgáljuk, hogyan tudunk az IBEvents komponens segítségével elfogni az adatbázisunk által generált eseményeket. A komponens lehetővé teszi, hogy IBX alapú alkalmazásunkban regisztráljuk a számunkra fontos szerver által küldött eseményeket. Az InterBase eseménykezelő mechanizmusa lehetőséget biztosít alkalmazásunknak, hogy válaszoljon eseményekre, az adatbázisban bekövetkezett változásokra, amelyeket akár egy másik futó, konkurens alkalmazás hozott létre. Mindezt plusz kapcsolatok nélkül elvégzi az adatbázis-kezelő, valamint a konkurens alkalmazással sem kell kapcsolatban állnunk. Természetesen ez a folyamatos figyelés CPU időt követel, de ennek mértéke nem számottevő.

A komponens segítségével tehát azt mondhatja az alkalmazásunk, hogy értesítsenek, ha X, Y vagy Z esemény bekövetkezik. Ha bármilyen regisztrált esemény végbemegy, a szerver értesítést küld programunknak és kiváltja az OnEventAlert eseményt.

A komponenst az eseménykezelő segítségével használhatjuk. Az eseménykezelő karbantartja a triggerek vagy tárolt eljárások által küldhető események listáját és nyilvántartja, hogy mely események után érdeklődnek a programok. Amikor egy új esemény postázódik, a kezelő értesíti erről a megfelelő alkalmazásokat.

A komponens használata
  • Létre kell hozni egy olyan triggert vagy tárolt eljárást, amely egy eseményt képes postázni.
  • Egy IBDatabase és egy IBEvents komponenst helyezzünk a Form-ra, és állítsuk be a tulajdonságaikat.
  • Az IBEvent komponens listájához kell adnunk az eseményt és regisztrálni kell az eseménykezelőben.
  • Az OnEventAlert esemény kódját meg kell írnunk.
Az eseményeket triggerek és tárolt eljárások válthatják ki, de csak egy tranzakció alatt, amely felügyeli a postázást is. Az InterBase általában megszűri az eseményeket mielőtt postázza azokat. Ez azt jelenti, hogy ha 20-szor következik be egy megadott esemény a tranzakció alatt, miután ez a tranzakció véglegesítődik, programunk csak egy értesítés fog kapni a figyelt eseményről.

Esemény figyelésének beállítása

Az Events tulajdonság melletti gombra kell kattintani ahhoz, hogy az eseménylistához hozzá tudjunk adni egy további eseményt. Minden komponens csak 15 eseményt tud kezelni, de ez a határ könnyen átléphető több komponens alkalmazásával. Futási időben a következő kód segít:
IBEvents1.Events.Add(’ESEMENYNEV’);
Ha túl sok eseményt próbálunk a listához adni, a rendszer kivételt vált ki.

Eseménykezelő írása

Az OnEventAlert esemény hívódik meg, ha egy InterBase eseményt fogad a komponens. Az EventName változó az esemény nevét tartalmazza. Az EventCount változóból megtudhatjuk, hogy pontosan hányszor is következett be az esemény az OnEventAlert utolsó hívása óta.

Ha nem szeretnénk egy eseményről a későbbiekben értesítést kapni, állítsuk igazra a CancelAlert jelzőt. Az eseménykezelőben nem hívhatjuk meg a komponens metódusait.

Ez az esemény a programunkon belül egy külön szálon fut.

A komponens tulajdonságai, eseményei, metódusai

Tulajdonságok
  • Database: Melyik adatbázist használja a komponens.
  • Events: Azon események listája, amelyekről értesítést várunk.
  • Queued: A tulajdonság jelzi, ha vannak sorbanálló események.
  • Registered: Van-e regisztrált eseményünk.
Események
  • OnEventAlert: Ez az esemény aktiválódik, ha értesítést kap a program egy figyelt esemény bekövetkezéséről.
Metódusok
  • CancelEvents: Segítségével tájékoztatjuk a rendszert, hogy nem kívánunk több értesítést kapni az adatbázis eseményeiről.
  • QueueEvents: Elindítja az esemény jelzését az alkalmazásunk irányába.
  • RegisterEvents: Az Events tulajdonság összes elemét regisztrálja és meghívja a QueueEvents metódust, hogy elkezdődjön a folyamat.
  • UnRegisterEvents: Megszüntetjük a lista elemeire vonatkozó regisztrációt. Meghívja a CancelEvents metódust.

Interbase cikksorozat