Számítástechnikai szerviz online hibabejelentő, adminisztráló, információs weblapja Diplomaterv sorszáma: 362/2015 Kálna Gusztáv Miskolc 2015
Köszönetnyilvánítás Először is szeretnék köszönetet mondani konzulensemnek, Molnár Gábornak, aki hasznos tanácsokkal segítette szakdolgozatom elkészítését. Szeretném megköszönni a GDF Miskolci Konzultációs Központ valamennyi tanárának, valamint Dr. Czap Lászlónak a kitartó munkát. Köszönöm a segítséget és a türelmet családomnak, kollégáimnak, barátaimnak, akik ösztönöztek és támogattak tanulmányaim során. Köszönöm munkahelyem, az Albacomp Cégcsoport anyagi segítségét és főnökeim támogatását. -1-
Tartalomjegyzék I. Bevezetés 4 Témaválasztás indoklása 4 II. Feladatspecifikáció 5 Szakdolgozat célja 5 III. Felhasznált technológiák 6 HTML 6 CSS 7 Apache WEB szerver 9 PHP nyelv 11 JavaScript 13 IV. Fejlesztő és futtató környezet kialakítása 15 Adatbázis szerver kialakítása 15 AppServ alkalmazáscsomag ismertetése 16 Appserv alkalmazáscsomag telepítése 17 V. Az adatbázis 19 Egy kis adatbázis történelem 19 A relációs adatbázis-kezelő nyelvek 21 A MySQL adatbázis szerver rövid bemutatása 23 Az adatbázis kezelése phpmyadmin alkalmazással 25 A relációs adatmodellről néhány szóban 25 VI. Használati esetek, szerepkörök 27-2-
VII. Az adatbázis tervezése 34 Adatbázis létrehozása 38 A hibakódoló segéd-adatbázistáblák kialakítása 44 VIII. Az oldal kivitelezése 48 A honlap elkészítése 48 A navigációs menü 49 Hibabejelentés E-mail formájában 49 IX. Hibajegy kezelő rendszer 50 Beléptetés 50 Jogosultság szintek megvalósítása 54 Hibajegy kezelő rendszer használata 57 X. Összefoglalás 61 Tesztelése 61 Cél teljesülésének vizsgálata 61 Továbbfejlesztés lehetőségei 62 Irodalomjegyzék 63 Internetes források 63 Ábrajegyzék 64-3-
I. Bevezetés Témaválasztás indoklása Szilárdan hiszek abban, hogy az információk gyűjtésének, kezelésének, és használatának módja dönti majd el, hogy ki marad fenn és ki bukik el. Idézet Bill Gates a digitális idegrendszerről szóló könyvéből A Számítástechnikai szerviz online hibabejelentő, adminisztráló, információs weblapja című szakdolgozat egy internetes adatbázisra épülő helpdesk szolgáltatást, és ennek elkészítéséhez szükséges fejlesztőeszközöket mutatja be. Az adatbázis-kezelőkkel támogatott dinamikus weblapok korunkban egyre nagyobb tért hódítanak az internet világában. Manapság szinte minden tartalom kiszolgáló az ingyenesektől a professzionális alkalmazásokig adatbázis motorra épül. Mivel egy országos hatáskörű számítástechnikai szervizben dolgozom, rálátásom van egy ilyen szervezet belső adminisztratív feladataira, és napi logisztikai problémáira. Jelenleg egy hihetetlenül drága szerviz adminisztrációs adatbázis-kezelő rendszert használ a cégünk, melynél az éves jogdíjon kívül még felhasználószám függő licensz díjat is fizetni kell. Felmerült a kérdés, hogy lehetne-e egy ingyenesen használható elemekből fölépített, sokrétű, a teendőket megfelelően ellátni képes, célzottan a feladatokra fókuszáló, fölöslegesen rendszert foglaló és lassító elemeket nélkülöző, hatékony helpdesk alkalmazást készíteni költségkímélő eszközökkel ezeknek a feladatoknak az elvégzéséhez az internet lehetőségeinek felhasználásával? Szakdolgozatomban erre a kérdésre próbálok választ adni. Ha hiszünk a mértékadó szakértői jóslatban, akkor nem arról van szó, hogy a sokféle lehetőség közül az üzleti életben az Internet egy jó megoldást nyújt, hanem hosszú távon az egyetlen jó megoldást jelenti. Azok a vállalatok, amelyek nem alakulnak át Internetes vállalkozásokká, megszűnnek Andrew S. Grove -4-
II. Feladatspecifikáció Szakdolgozat célja: A szakdolgozatom célja egy ingyenes eszközökkel létrehozott internetes adminisztrációs, információs felület megvalósítása. HTML és CSS, elemek felhasználásával létrehozott weblap keretrendszerébe beágyazott, PHP programozási nyelv és MySQL adatbázis szerver használatával megvalósított adatbázis alapú online, hibajavítási folyamatokat adminisztráló, hibajegy kezelő rendszer elkészítése. Egyrészről a szakdolgozat szöveges része az alkalmazott technológiák ismertetése, adatbázis tervezés és az oldal működésének rövid bemutatása. Másrészről a gyakorlatban megvalósításra kerül egy weblap, mely a felület keretrendszerét, kinézetét meghatározza, elkészül egy adatbázis, adatbeviteli és lekérdező űrlapokkal, valamint kiegészítő szolgáltatásokkal a szakdolgozat tervben megadott paraméterek szerint. A felhasználóknak lehetőségük lesz: a honlapon felhasználóként regisztrálni, felhasználói jogosultságokat menedzselni, informálódni cégadatokról, gyártói honlapokról, segédprogramokat, tesztprogramokat fel- és letölteni, eszköz specifikus drivereket fel- és letölteni, hiba-bejelentéseket megtenni különféle formákban, javításra leadott eszköz állapotáról informálódni, jogosultság szintektől függően adatokat rögzíteni, módosítani, lekérdezéseket végezni, hibajegyekkel műveleteket végezni, munkalapot, megrendelőt nyomtatni, ügyfelek adataihoz hozzáférni, módosítani, javítandó eszközök adatait rögzíteni és szükség szerint módosítani, üzeneteket továbbítani egy fórumon keresztül, e-mail küldeni a rendszergazdának, egyéb fejlesztés során, vagy később, a tesztelés vagy próbaüzem alatt fölmerülő felhasználói igények is megvalósításra kerülhetnek. -5-
III. A felhasznált technológiák HTML A HyperText Markup Language szavak rövidítése, ami szabadon fordítva, leírónyelv, amit a weboldalak készítéséhez fejlesztettek ki. A HTML fájlok, szöveges állományok, amiket a legegyszerűbb szövegszerkesztővel is szerkeszthetünk. Ebben a fájlban találhatók a nyers szövegek és a szimbólumok, amik leírják a programnak, hogy jelenítse meg, hogyan dolgozza fel a fájl tartalmát. Ilyen program lehet böngésző vagy felolvasó program. 1990-óta használják a weben a honlapok megjelenítéséhez. Azóta úgynevezett 5 állomás volt a HTML "életében".az első verzióban kialakult az alapvető szerkezet, a nyitó és záró címek "<html> </html>", a fejléc, és a törzs, azaz a "<body> </body>".a HTML 2 nem hozott túl sok változást, de innentől különül el a böngésző által szabályozott és a dokumentum szerkezetében létrehozott formázás. A HTML 2+ bevezette az űrlapokat, az űrlapon belüli többsoros szövegbevitelt, és a kiválasztható opciókat. Ez a verzió szabvány lett és a későbbi fejlesztések alapjául szolgált. A HTML3.2 verziótól van lehetőségünk Java appletek beágyazására, és scripteket is innentől használhatunk. valamint megjelent a "style" elem. A HTML 4.0 verziót 1997 nyarától tette hivatalos ajánlássá a W3C, megfelel az ISO 8879 előírásainak. Fejlesztésekor szem előtt tartották a csökkent képességűek érdekeit, a nemzetközi karakter készleteket, a jobbról balra olvasás támogatását. Tovább fejlesztették az űrlapok és táblázatok használhatóságát, a keretek használata hivatalossá vált. Gyarapodtak a formázóelemek, és elvetettek pár korábbi elemet. Az XHTML a jelenlegi és a jövőbeli dokumentumtípusok, és modulok családjába tartozik, amik kiegészítik, kiterjesztik a HTML 4-et. Ez kompatibilis az XML és a HTML4-es böngészőkkel is. Számos előnye van a használatának. Szakdolgozatom a HTML 4.0 követelményei szerint készítettem el, mivel a gyakorlati képzés során ezt a verziót oktatták, és a feladat kivitelezéséhez a lehetőségei megfelelőek. A legtöbb böngésző e verzióval teljes mértékben kompatibilis. -6-
CSS A CSS-t a weblapok szerkesztői és olvasói egyaránt használhatják, hogy beállítsák vele a lapok megjelenéshez kapcsolódó elemeit. A tervezése során a legfontosabb szempont az volt, hogy elkülönítsék a dokumentumok struktúráját a dokumentum megjelenésétől. A CSS használata esetén elkülöníthető a dokumentum formája a képernyőn és a nyomtatási lapon. Az elemek stílusát különböző CSS szelektorokkal lehet kiválasztani: Minden elemre a * szelektor használatával Az elem neve alapján például minden p vagy h2 HTML elemhez. Leszármazottak alapján például az olyan a elemekre, melyek egy li elem részei, a szelektor "li a" class vagy id attribútumok alapján például class és/vagy #id a class="osztály" vagy id="azonosító" elemekhez Ezeken kívül rendelkezésre áll több pszeudo-osztály, melyekkel további műveletekhez lehet stílust rendelni. Talán a legismertebb ezek közül a hover, melynek stílusa akkor lép érvénybe, mikor a hozzá tartozó elem aktiválódik, például fölé visszük az egeret. Hozzá lehet fűzni a szelektorokhoz is, például a :hover vagy #elementid:hover. További ismertebb pszeudo-osztályok a :first-line, a :visited vagy a :before. A CSS használatának legfontosabb előnyei: Több lap vagy akár egy teljes webhely stílusait egy helyen lehet tárolni, így gyorsan és könnyen frissíthető Különböző felhasználókhoz különböző stílusokat lehet rendelni: például könnyen olvasható, nyomtatható stílusok A dokumentum mérete és komplexitása csökken, mivel nem tartalmaz információkat a megjelenítéshez -7-
A CSS információkat a lapokhoz több módon lehet megadni: Szerzői stílus külső CSS fájl a dokumentumból hivatkozva beágyazva a dokumentumba azonnali, felülírva az általános stílust egy konkrét esetre Felhasználói stílus Kliens stílus egy helyi CSS fájl az összes dokumentumra, melyet a felhasználó a böngésző beállításaiban adhat meg; a felhasználó megadhatja, hogy a szerző és a saját stílusai közül melyik legyen fontosabb egy alapértelmezett stílus, melyet a kliens vagy a böngésző használ az elemekhez A CSS a szabályokat a kapcsolódások alapján súlyozza, így mikor egyszerre több szabály is érvényes lehet egy elemre, akkor a legfontosabb szabályt alkalmazza. A stíluslap maga a stílust leíró szabályok sora. Minden szabályhoz tartozik egy szelektor és egy deklarációs szakasz. Ez utóbbi kapcsos zárójelek között pontosvesszővel elválasztott deklarációkat tartalmaz. A deklarációk formája a következő: a tulajdonság neve, egy kettőspont, majd az adott tulajdonság értéke. A CSS használatával a web fejlesztők ezeket az információkat áthelyezhetik a stíluslapra, mely így egy sokkal egyszerűbb, kevésbé redundáns HTML kódot eredményez. A HTML dokumentumok kisebbek lesznek, és mivel a web böngészők gyakran tárolják a CSS stíluslapokat a gyorsító tárban, ezért a hálózati forgalom is jelentősen csökkenhet. A CSS stílusinformációkat beépíthetjük a HTML dokumentumba, vagy csatolhatjuk külső hivatkozásként. Szakdolgozatomban például az oldalmenü kialakításánál alkalmaztam a CSS formázás elemeit. Az adatbázis kezelő résznél a kevés grafikus elem miatt nem tartottam indokoltnak. A fejlesztés során számomra áttekinthetőbb a hagyományos HTML formázás. -8-
Apache WEB szerver Az Apache HTTP Server (röviden Apache) nyílt forráskódú webkiszolgáló alkalmazás, szabad szoftver, mely kulcsfontosságú szerepet játszott a World Wide Web elterjedésében. A projekt célja olyan web-szerver program létrehozása, karbantartása, és fejlesztése, amely megfelel a gyorsan változó internet követelményeinek, biztonságos, üzleti, vállalati felhasználásra is megfelelő és szabadon használható. Robusztus, erőteljes és rugalmas webszerver, amely kompatibilis a HTTP/1.1 protokollal. Az Apache projekt koordinálását az Apache Software Foundation végzi. Néhány vezető és több száz fejlesztő van e projekt mögött. Többek között a következő operációs rendszerekhez készítették el: Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X és Microsoft Windows. A névválasztás oka kettős. Egyrészt az állóképességükről híres apacs indiánoknak tiszteleg, akik az Egyesült Államok délnyugati részén élő őslakók. Másrészt pedig egy szójáték: a patchy server, ami arra utal, hogy a szervert eleinte a webmesterek által készített patchekkel frissítették. Az utóbbi azonban inkább egy szerencsés egybeesés eredménye lehet. A második verzióban nagyrészt az első verziót írták újra, de nagyobb hangsúlyt fektettek a modularizációra és a hordozhatósági réteg (az Apache Portable Runtime) kifejlesztésére. Újdonság volt a UNIX szálak bevezetése, az IPv6 támogatása és megújult az Apache API is. Az Apache 2 első alfáját 2000 márciusában adták ki, az általánosan elérhető változatát április 6-án 2002-ben. A 2.2 verzióban új, rugalmasabb hitelesítési API készült és továbbfejlődtek a cache és a proxy modulok. 1996 áprilisa óta az Apache az Interneten legszélesebb körben használt webkiszolgáló. 2005 novemberétől az Apache veszíteni kezdett a piaci részesedéséből, főleg a Microsoft IIS javára. Jelenleg a becslések szerint az Apache a világ webhelyeinek több mint 50%-át szolgálja ki. A virtual hosting segítségével egyetlen Apache installáció ki tud szolgálni több különböző webhelyet is. -9-
Az Apache hibaüzenetei konfigurálhatóak. Számos grafikus felhasználói felület (röviden GUI) támogatja a szerver könnyebb konfigurálását. Statikus és dinamikus weboldalak közzétételére egyaránt használják. Sok webes alkalmazást az Apache által nyújtott környezethez és szolgáltatásokhoz terveznek. Az Apache alkotja a web-szerver komponenst a népszerű LAMP alkalmazáscsomagban, melynek további komponensei a MySQL adatbázisszerver és a PHP/Perl/Python programozási nyelvek mellett. A Ruby on Rails keretrendszer ajánlott platformja is az Apache a Phusion Passenger révén. Az Apache webszervert különböző kereskedelmi szoftvercsomagok (például az Oracle Database és az IBM WebSphere) részeként is terjesztik. A Mac OS X is magába foglalja az Apache-ot beépített web-szerverként. A Novell NetWare 6.5 alapértelmezett web-szervere is az Apache. Az Apache nem csak weboldalak, hanem egyéb tartalom publikálására is használható, például tetszőleges fájlok megosztására is. Ha egy felhasználó telepíti az Apache-ot a személyi számítógépén, akkor tetszőleges fájlokat meg tud azon keresztül osztani, ha bemásolja őket az Apache document root könyvtárába. Az Apache Szoftver Alapítvány szoftvereinek licence (az Apache Szoftver Licenc) megengedi a szoftver és módosított változatainak a nyílt és a zárt forráskódú terjesztését egyaránt. Ezen előnyök miatt a szakdolgozatom témáját képező weblap is ezen a roppant népszerű és rugalmas webkiszolgáló alkalmazáson fut. -10-
PHP nyelv A PHP eredetileg egy olyan makro készlet volt, amely személyes honlapok karbantartására készült. Erre utal a neve is: Personal Home Page Tools. A képességei bővülésével egy nagyméretű internetes adatbázis alapú alkalmazások működtetésére is használható programozási nyelvvé nőtte ki magát. A PHP első változatát Rasmund Lerdorf készítette el 1994-ben. Ezután a kód újraírásával és egy új modul, a Form Interpreter (Űrlapfeldolgozó) hozzáadásával megszületett a PHP/FI. A következő generáció a PHP 3. A PHP ennek a változatnak köszönhetően foglalta el helyét a legjobb kiszolgáló oldali nyelvek között, és így rohamosan gyarapodott a felhasználók tábora. Az elfoglalt pozícióját megszilárdította az Apache és MySQL támogatása. Az Apache-MySQL-PHP tökéletes párosítás. A PHP 4-es verziójában a következő újdonságokat vezették be: Tömbökkel végzett műveletek megkönnyítését segítő tömbkezelő függvények és a tömbökön végrehajtandó ciklusok elkészítését segítő új foreach vezérlési szerkezet. Belekerült a boolean logikai adattípus és két új művelet (=== és!==), melyekkel egy időben értékek és típusok egyezőségét, vagy nem egyezőségét vizsgálhatjuk. Az előző változat hasznos szolgáltatása, hogy egy HTML űrlap elemeit el lehet látni tömbnevekkel, a 4-es változatban kibővült a többdimenziós tömbök támogatásával. A PHP 4-es változata beépített támogatással rendelkezik a Java és XML nyelvekhez. A PHP 4 utolsó megjelent verziója a 4.4.8 verziószámot viselte. -11-
Jelenleg a PHP 5 a nyelv egyetlen aktívan fejlesztett verziója. A hatos verzió bár már fejlesztés alatt áll, még nem jelent meg. A PHP nyelv szabad, de licence kimondja, hogy a származtatott termékek nem használhatják nevükben a PHP szót a group@php.net írásos engedélye nélkül. Emiatt a PHP licenc nem csereszabatos a GNU General Public License-szel. A PHP tulajdonképpen kiszolgáló oldali programozási nyelv, amit jellemzően HTML oldalakon használnak. A hagyományos HTML lapokkal ellentétben azonban a kiszolgáló a PHP parancsokat nem küldi el az ügyfélnek, azokat a kiszolgáló oldalán a PHP értelmező dolgozza fel. A programjainkban lévő HTML elemek érintetlenül maradnak, de a PHP kódok lefutnak. A kódok végezhetnek adatbázis lekérdezéseket, dinamikusan létrehozhatnak képeket, fájlokat olvashatnak és írhatnak, kapcsolatot létesíthetnek távoli kiszolgálókkal. A lehetőségek száma végtelen. A PHP kódok kimenete a megadott HTML elemekkel együtt kerül az ügyfélhez. Előnyei: a HTML elemek és a programkódok elkülönítésével lehetőség nyílik különválasztani a különböző szakaszokat, ezáltal hatékonyabbá és rugalmasabbá válik az alkalmazások készítése. Platformfüggetlenségének köszönhetően a PHP bármelyik operációs rendszeren futtatható, a kiszolgálóprogramok és adatbázis kezelők többségével képes együttműködni. Szakdolgozatomban a PHP 5.2.3-as verzióját használom. -12-
JavaScript 1995 áprilisában a Netscape fektette le egy olyan programozási nyelv alapjait, amellyel a weboldalak interaktívabbakká tehetők. Felmerült, hogy a Java nyelvet használnák az oldalak szkriptelésére is, de a nyelvet túl professzionálisnak és nehéznek találták, ezért inkább egy könnyebben tanulható és alkalmazható szkriptnyelv kidolgozása mellett döntöttek. Így végül az új nyelv a Java szintaxisát örökölte, de szkriptnyelv lett. A kliensoldali szkriptnyelv eredetileg a LiveScript névre hallgatott, de a nyelv bejelentésekor (1995 decemberében) valószínűleg marketinges okokból JavaScriptként hivatkoztak rá. A JavaScript megjelenése a böngészőben hatalmas siker volt a web-fejlesztők körében, ugyanis lehetővé tette, hogy túlmenjenek a HTML határain, és egy kis programkóddal dinamikussá tegyék azt, mozgassák az elemeket, reagáljanak a felhasználói cselekvésekre, új ablakot nyissanak, megerősítő kérdést tegyenek fel, stb. A Netscape cég a nyelv diverzifikálódását megelőzendő aktív szabványosítási kampányba kezdett, végül 1997-ben az Európai Számítógépgyártók Szövetsége (European Computer Manufacturers Association, ECMA) nevű cég szabványosította ECMAScript néven (ECMA- 262). A két piacvezető böngésző JavaScript támogatottsága, valamint a szabvány között nagy eltérések alakultak ki. A 90-es évek végére az Internet Explorer gyakorlatilag egyeduralkodó lett a böngészőpiacon egy olyan böngészővel, ami a szabványtól történeti okok miatt jelentősen eltért. Közben az Internet Explorer árnyékában fejlődésnek indult a böngészők új generációja, amely már a szabvány által lefektetett alapokra épített. Nem csak a szabványok támogatása volt ezekben az új böngészőkben a csábító, hanem azok az új funkciók, amelyek az egyre divatosabb és szélesebb körben elterjedő böngészést kényelmesebbé és hatékonyabbá tették. Ekkor született meg a Mozilla Firefox, az Opera, a Safari. 2005-ben marketing célból új nevet adtak annak a technológiának, amely által az oldalak tartalma részlegesen frissíthető a teljes oldal újratöltése nélkül. -13-
Az AJAX-nak elnevezett technológia nagy forradalmat indított a kliensoldali programozásban. Ennek köszönhetően ugyanis olyan felhasználói élmény nyújtható a weben, mint az asztali alkalmazásokban. A webes alkalmazások korábbi lassú, és szaggatott volta helyett folyamatos, villogásmentes és kényelmesen használható felületek jelentek meg. A folyamat eredményeképpen egyre több JavaScript kód jelent meg az alkalmazásokban, és egyre bonyolultabb dolgokat láttak el ezek a szkriptek. A webes közösség újra felfedezte a JavaScript nyelvet, és kialakította a modern JavaScript programozási mintákat. A folyamat mind a mai napig tart. Manapság a JavaScriptet a web univerzális futtató platformjának tartják. Éppen ezért a szakdolgozatomból sem akartam kihagyni, néhány apróbb funkciót JavaScript elemekkel valósítottam meg. Névnap script az oldalmenü tetején Felugró ablak méretezett megjelenítése -14-
IV. Fejlesztő és futtató környezet Adatbázis szerver kialakítása Mindenképpen saját szerveren szerettem volna futtatni a weblapot az adatbázis kezelővel együtt, hogy teljes körű rálátásom legyen minden beállításra a fejlesztés során. Mivel a munkahelyi szerverhez nem kaptam megfelelő hozzáférést, a munkahelyi router konfigurálásához meg végképp nem járultak hozzá főnökeim, ezért, mivel az otthoni WiFi routerem támogatja a DMZ (demilitarizált zóna) használatának lehetőségét, így saját webszerver beüzemelésébe fogtam. Minden szolgáltatást, ami a külső hálózat felhasználóit látja el, a DMZ-n belülre kell helyezni. A leggyakoribbak ezek közül a web-, mail-, ftp- és DNS-szerverek. Én is így állítottam be a routert. A kiszolgáló alkalmazáscsomagot a fejlesztés, tesztelés idejére egy korábban már elavultsága miatt használatból kivont, 600 MHz-es Pentium III processzorral ellátott HP deskpro mini PC-re telepítettem. A szerver 512 MB SDRAM-mal és egy 40 GB-os HDD-vel van fölszerelve. Fogyasztása mindössze 80W. Mivel az otthoni szerver fogyasztása meglehetősen érzékeny terület, tekintettel az áramszolgáltató áraira, valamint költeni sem nagyon akartam hardverre, ezért erre a relatíve kis fogyasztású mini asztali PC-re esett a választásom. Eredetileg valamelyik Linux disztribúcióval szerettem volna megvalósítani a projektet, de mivel ezen a gépen telepítve van egy jogtiszta Windows 2000 Professional operációsrendszer erre telepítettem föl a kiszolgáló programcsomagot. Eleinte csak próbának szántam ezt az összeállítást, de a programcsomag és a komponensek rugalmasságát dicséri, hogy ezen a szervernek csak igen nagy jóindulattal tekinthető hardveren is zökkenőmentesen, teljesen használható sebességgel tudja futtatni a weblapot és az adatbázisát kiszolgáló rutinokat. Ezért aztán így is maradt. A kiszolgáló hálózati csatolóját fix IP címre állítottam és beállítottam a routerben az IP címét DMZ-be. A szerverkémre telepítettem a Dyndns.hu szolgáltatás kliens programját, miután regisztráltam az oldalon, és máris dolgozik a saját WEB szerver. -15-
AppServ alkalmazáscsomag ismertetése A WEB szerver funkciókat az AppServ alkalmazáscsomaggal valósítom meg. Először 2001. októberétőltől kezdték terjeszteni az Appserv alkalmazáscsomagot, mely egy teljes funkciójú Apache, MySQL, PHP, phpmyadmin telepítő csomag. Az AppServ csomag tartalma: Apache PHP MySQL phpmyadmin Az Appserv speciális beállításokkal kerül telepítésre. Az Apache beállítása a httpd.conf, a MySQL beállítása a my.ini, a PHP beállítása a php.ini állománnyal történik. Az Appserv biztosítani tudja, hogy bármelyik csomag olyan stabilan működik, mint a hivatalos Apache, PHP, MySQL kiadás. Az Appserv célja a könnyű telepítés. Egy perc alatt telepíthető a web szerver, illetve az adatbázis-szerver. Néhány területen az Appserv komoly teljesítményű web-szerverként vagy adatbázis-szerverként működik. Mondhatjuk, hogy az alkalmazás csomag 100%-osan működő szervert biztosít. Töltsük le az Appserv programot a www.appservnetwork.com címről, válasszuk a 2.5.8 verziót. Jelenleg a 2.6.0 a legfrissebb verzió, de a szakdolgozat terv elfogadásakor ez még nem létezett. Mivel az alkalmazás fejlesztését már 2007-ben elkezdtem, nálam a 2.5.8-as verzió van telepítve. Nem indokolja semmi, hogy cseréljem az újabb verzióra, mivel hibátlanul működik az óta is. -16-
Appserv alkalmazáscsomag telepítése Duplán kattintsunk az appserv-win32-x.x.x.exe állományra az Appserv számítógépre történő telepítéséhez. License Agreement (Szabadalmi Szerződés): Az Appserv terjesztése GNU/GPL licenc alatt történik. El kell olvasnunk a szabadalmi egyezményt telepítés előtt. Ha egyetértünk a licenccel, a Next gombra kell kattintani a folytatáshoz. A Cancel gombbal megszakítható a telepités. Válasszuk ki a telepítés helyét: az Appserv alapértelmezés szerinti telepítési helye a c:\appserv. Ha meg akarjuk változtatni a telepítés cél helyét, kattintsunk a Browse gombra az Appserv célkönyvtárának megadásához, majd a Next gombra a következő lépéshez. Ha nem változtatunk, akkor a c:\appserv\www könyvtárba kell elhelyezni a megjelenítendő honlap kezdőlapját (index.htm, index.php,...) Az alkotórészek kiválasztása: Alapértelmezés szerint az Appserv minden alkotórésze ki van választva telepítésre. Ha ezt meg akarjuk változtatni, a jelölő négyzetekre kattinthatunk. Apache HTTP Server egy web szerver. MySQL Database egy adatbázis szerver. PHP Hypertext Preprocessor egy PHP program értelmező. phpmyadmin egy webes felületű MySQL adatbázis kezelő. Ha elkészültünk, kattintsunk a Next gombra a következő lépéshez! Apache beállítás: Ezen a képernyőn adhatjuk meg az Apache paramétereit. Az Appserv telepítésének befejezése: A telepítő rákérdez az Apache és a MySQL azonnali indítására. Kattintsunk a Finish gombra a telepítés befejezéséhez és az Appserv használatának megkezdéséhez. -17-
A programozási munkákhoz a Notepad++ ingyenes forráskód-szerkesztőt használom, amely számos programozási nyelvet támogat a MS Windows környezetben. Jellemzői: kódkiemelés és kódblokkok egységbe zárása, felhasználó által állítható kódkiemelés, WYSIWYG felület, több dokumentum megnyitása, szabályos kifejezés keresése/cseréje, változtatható nézetek. Számos programozási nyelvet támogat. A mostanában elterjedt grafikus web-szerkesztő szoftvereket nem szeretem, mert számomra átláthatatlan, túlságosan elbonyolított kódot eredményeznek. Igaz ez így kicsit munkásabb, de megéri. A kisebb kód gyorsabb futást eredményez. A távfelügyeletet az ingyenesen használható Team Viewer programmal oldottam meg, így bárhonnan rálátok a szervergépre remote desktop szolgáltatással, csak egy internet kapcsolattal rendelkező gép kell hozzá. Természetesen tisztában vagyok a rendszer korlátaival, nyilvánvaló, hogy egy komoly adatbázis terhelését nem bírná el a hardver, viszont kitesztelni a funkciókat teljesen elegendőnek bizonyult. A működő rendszer jelenleg is megtekinthető és a GDF előírása szerint a szakdolgozat értékelése idején is megtekinthető lesz a http://szerverke.dyndns.hu/szervizhonlap linken. A telepített üres web-szerver felülete valahogy így néz ki első alkalommal megnyitás után a böngészőben: 1. ábra -18-
V. Az adatbázis Egy kis adatbázis történelem Az élet számos területén találhatunk olyan gyűjteményeket, amelyek bizonyos szempontok szerint lettek összeválogatva. Ezeket a gyűjteményeket a szó klasszikus értelmében már adatbázisnak tekinthetjük, hiszen a való világ egy jól meghatározott részét gyűjtöttük össze és a gyűjtemény valamilyen rendszer szerint rendezve van. Ilyen gyűjtemény egy könyvtár, ahol nagymennyiségű könyvet találhatunk a művek fajtája, valamint a szerzők neve szerint rendezve. Ezek a papír alapú adatbázisok kezelés és feldolgozása nagy mennyiségű adat esetén már elég nehézkes és sok időt igénybevevő feladat volt, nem véletlenül a számítógépek széleskörű elterjedésekor e két funkció vált a legelterjedtebb műveletté. A számítógépek és az azokhoz kapcsolódó mágneses tárolók megjelenését követően hamarosan egy szűk kör számára elérhetőek lettek az egyetemek és a kutatóintézetek által kifejlesztett különböző adatfeldolgozó rendszerek. Ezek a rendszerek a 60-as évek második feléig jobbára csak egyedi állományokat voltak képesek kezelni, amely azt eredményezte, hogy: egy adott programmal csak adott adatállományt lehetet kezelni, egy adatállományt csak egy adott kezelőprogrammal lehetett elérni, emiatt meg kell tanulni az adott kezelő nyelvet, gyakorlatilag nem volt adatvédelem, az adatokhoz egy időben történő hozzáférés nem megoldott. Ezen a problémák megoldására tett javaslatot 1971-ben a DTBG (Data Base Task Group) csoport által készített jelentés, amelytől ténylegesen számítjuk az adatbázis-kezelés fogalmát. -19-
A jelentés javaslata szerint a jövő adatbáziskezelő-rendszereinek a következő tulajdonságokkal kell rendelkeznie: egy adatbázis-kezelő szoftvernek több összetett logikai adatrendszereket kell tudni kezelnie egyszerre, a redundancia feldolgozás gyorsítása érdekében megengedett akkor, ha kézben lehet tartani. konkurens hozzáférést kell biztosítania az adatbázis-kezelő rendszernek. többféle elérési módot kell támogatnia egy időben, támogasson többféle programozási nyelvet. Lehessen programozni. támogassa az emberi logikát szemben a gépivel, a jogosultság szempontjából lényeges, hogy egy adatmodell szemléletet valósítson meg - nézeteket lehessen kezelni. Egy felhasználó csoport csak bizonyos adatokhoz féljen hozzá. visszaállítható legyen, ha sérül az adat, ha inkonzisztens állapotba kerül a rendszer, akkor azt lehessen felismerni, és helyreállítani. adat-program függetlenség logikai és fizikai szinten. logikai szinten: Ha az adatok szerkezete megváltozik, ne kelljen a program szerkezetét megváltoztatni. fizikai szinten: Egy adott program tudja feldolgozni az adathalmazt függetlenül attól, hogy hol van fizikailag. -20-
A relációs adatbázis-kezelő nyelvek A relációs adatmodellre 1970-től kezdve számos adatbázis-kezelő nyelvet dolgoztak ki. A korai próbálkozások közül egyetlen rendszer sem terjedt el igazán. Voltak olyan vélemények, még a hetvenes évek végén is, hogy a relációs adatmodellre nem is lehet "gazdaságos" kezelőrendszert írni. Nagy méretek esetén még az akkor "igen nagy" számítógépek is kicsinek bizonyultak. Az egyik ilyen rendszer az ISBL (Information System Base Language) volt, a hetvenes éves közepén készült el az IBM-nél Angliában. Az ISBL-lel egyidőben írták meg a SQUARE-nyelv fordítóprogramját, majd erre alapozva dolgozták ki SEQUEL nyelvet 1974-ben szintén az IBM-nél illetve az SQL-t 1976-ban. Később létrehozták a QUEL lekérdező nyelvet (Kalifornia Egyetem, Berkeley), ami már UNIX operációs rendszer alatt működött. Megemlítendők még a QBE, AWK, SIDA nyelvek a 70-es évek második feléből. Ezek az adatbázis-kezelő rendszerek azonban nem terjedlek el; sokan azt "jósolták" ebben az időben, hogy a relációs adatmodellnek "bealkonyult". Senki sem számított arra, hogy éppen a PC-k megjelenése hozza igazán divatba a relációs adatmodellt. 1982-ben az Ashton-Tate cég létrehozta a dbase II., majd 1984-ben a dbase III. relációs adatbázis-kezelő nyelvet. Majd jött a dbase III+, később a FoxBase, CLIPPER, PARADOX és sok más PC- re írt relációs nyelv. 1982-ben megszületett nagygépekre az IBM-nél az SQL/DB rendszer, amelyet az első relációs, kereskedelmi forgalomba kerülő nagygépes adatbázis-kezelő rendszernek tekintenek. 1983-ban az IBM piacra dobta az SQL-re alapozott DB2 nevű adatbázis-kezelő rendszert, amelynek alapján az ANSI (az Amerikai Szabványügyi Hivatal) 1986-ban szabványosította az SQL (Structured Query Language = strukturált lekérdező nyelv) nyelvet. A szabványosítás jelentős fordulatot hozott a relációs adatbázis-kezelő -21-
nyelvek területén. Ugyan a dbase-t is relációs nyelvnek tekintjük, de nem teljességgel valósították meg benne a Codd által kimondott elveket, ill. a relációs algebra műveleteit. Sokan azt mondják, hogy kár volt ilyen korán szabványosítani az SQL-t, mert nagyon megmerevítette a relációs adatbáziskezelő rendszereket. Több cég a szabványosítás után néhány évvel már feszegette a szabvány kereteit, ami az SQL-92 szabványhoz vezetett. Az SQL-re alapozva számos adatbázis-kezelő rendszert létrehoztak. Ezek a rendszerek az SQL-ből úgy keletkeztek, hogy "valóságos" programnyelvi elemekkel bővítették az SQL-t. Napjainkban több mint 50 SQL bázisú adatbázis-kezelő nyelv létezik a PC-ktől kezdve az egészen nagyszámítógépes rendszerekig. A nagygépes nyelvek között a 90-es évek elején jelentősen felfutott a már említett DB2. A PC-kre az Ashton-Tate cég új dbase-t, a dbase IV-et fejlesztette ki 1988-ban, amely teljesen SQL- alapú. Ugyancsak SQL-alapúak az INFORMIX, INGRES, ORACLE, FOCUS adatbázis-kezelő rendszerek, amelyek ma sok más nyelvvel együtt a 4GL-ek, negyedik generációs nyelvek nagy családját alkotják. Bizonyára igaz, hogy a sok adatbázis-kezelő rendszer közötti verseny a felhasználók javát is szolgálja, de az is igaz, hogy eligazodni közöttük szinte lehetetlen feladat. A magukat 4GL-lé kinőtt adatbázis-kezelő nyelvek óriási méretűek. A szakdolgozatom tárgyát képező alkalmazás és adatbázis kiszolgálására a MySQL rendszert választottam. A MySQL jelenleg az ORACLE cég projektje, a világon legkedveltebb ingyenes adatbázis kezelő rendszer. A következő oldalakon ismertetem bővebben. -22-
A MySQL adatbázis szerver rövid bemutatása A MySQL egy igazi több felhasználós SQL adatbázis-szerver. Napjaink legelterjedtebb és szabványos adatbázis nyelve az SQL ( Structured Query Language Strukturált lekérdező nyelv) világszerte. A MySQL rendszer szerver/kliens felépítésű. Legfőbb előnye a gyorsaság, robosztusság és a viszonylag könnyű használat. 1996-ban kezdték fejleszteni a T.c.X cégnél. Eredetileg web alkalmazások létrehozására tervezték, ahol az adatbázisoktól elvárt legfontosabb tulajdonságok a gyorsaság, méretezhetőség és az egyszerű felügyelhetőség. E célok elérése érdekében néhány alapvető relációs adatbázis- tulajdonság háttérbe szorult, de a tranzakció kezelés, az idegen kulcsok, a belső lekérdezések mind részei a MySQL fejlesztési terveinek. Jelenleg a világon a legelterjedtebben használt nyílt forrású adatbázis kezelő, több millió felhasználóval, az egyéni fejlesztőktől az olyan nagy vállalatokig, amelyek nagy forgalmú oldalak adatbázismotorjaként alkalmazzák. Az alkalmazásfejlesztők azért használják előszeretettel, mert nagyon gyors és messze nem olyan összetett, mint az Oracle-hez hasonló nagy rendszerek, ráadásul súlyos dollár ezreket takaríthatunk meg az Oracle-hez képest. Nem teljesen szabad szoftver. Licensz politikájuk viszont megengedi ingyenes használatát sok platformon és szituációban, így az esetek nagy részében szabadon felhasználható. A MySQL hibaüzeneteinek nagy része már le van fordítva magyar nyelvre is. -23-
Licenszet akkor kell vásárolnunk, ha: A MySQL szervert egy másik termékbe, alkalmazásba vagy szolgáltatásba beágyazott kiszolgálóként értékesítjük. Olyan kereskedelmi szoftvert fejlesztünk, amelynek működéséhez szükséges a MySQL és a programunk részeként, hozzácsomagolva szállítjuk. A nélkül terjesztjük a MySQL-t, hogy a GNU Public License-ben meghatározott módon biztosítanánk a forráskódot is. Főbb jellemzők, amik vonzóvá teszik a MySQL-t a fejlesztők számára: Gyorsaság Hordozhatóság Bármely más nyelven írt felület illeszthetősége Kedvező ár. A MySQL adatbázis-kezelővel a kapcsolattartás történhet ügyfélfelületen vagy egy programozói felületen keresztül. Számos népszerű programozási nyelv rendelkezik beépített függvényekkel kifejezetten a MySQL-lel történő kapcsolattartás céljára, de az ipari szabvánnyá vált SQL nyelven kiadott parancsokkal is folytathatunk párbeszédet a kiszolgálóval. Az SQL a relációs adatbázisokkal való kapcsolatteremtés elterjedt nyelve. Minden parancs, amit a MySQL-nek kiadunk, e nyelv szabályait kell kövesse. A 70-es évek elején az IBM kutatóközpontjában megalkották ezt a nyelvet. 1986-ban, majd az Amerikai Szabványügyi Hivatal felvette az ipari szabványok közé. Az SQL szabványos volta nagymértékben hozzájárul a fejlesztett alkalmazásunk rendszerek közötti hordozhatóságához. Az adatbázis esetünkben a MySQL Database Version 5.0.45 kiszolgálón fut. -24-
Az adatbázis kezelése phpmyadmin alkalmazással A phpmyadmin egy nyílt forrású eszköz, amit PHP-ban írtak a MySQL menedzselésére az interneten keresztül. Jelenleg a 4.2.8-as verziónál tart a fejlesztés. Képes készíteni és eldobni adatbázisokat, készíteni, eldobni, módosítani táblákat, törölni, módosítani, hozzáadni mezőket, SQL parancsokat futtatni és a mezőkön kulcsokat kezelni. Képes az egész MySQL szerver kezelésére. A phpmyadmin az egyik legnépszerűbb PHP- alkalmazás és MYSQL - kezelő eszköz, nagy felhasználói és közreműködői közösséggel. Sok Linux-disztribúció is tartalmazza. A növekvő számú javítások koordinálása céljából három fejlesztőből, Olivier Müller, Marc Delisle és Loic Chapeaux, álló csoport bejegyezte a The phpmyadmin Project projektet a SourceForge.net-en, és 2001-ben átvette a fejlesztést. Mivel az általam telepített Appserv 2.5.8 alkalmazáscsomag részét képezi a phpmyadmin alkalmazás, ezért fontosnak tartottam egy oldal erejéig röviden ismertetni, mint a MySQL adatbázis-kezelő beállítása üzemeltetése során használt legfontosabb segédeszközt. Az alkalmazáscsomaggal a 2.10.2-es verziót kapjuk, de a célnak ez is teljes mértékben megfelelő. Frissebb verzióval nem kísérleteztem, mivel a fórumokon azt írják többen, hogy az eredeti komponensekkel telepített Appserv csomag a legüzembiztosabb. Az alkalmazás honlapja: http://www.phpmyadmin.net/home_page/index.php A relációs adatmodellről néhány szóban A különféle adatbázis-kezelő rendszerek közül a XX. század végére a relációs adatbázis-rendszerek szinte egyeduralkodóvá váltak a világban, szinte teljesen kiszorítva a piacról a különböző hálós- és hierarchikus adatmodelleken alapuló adatbázisrendszereket. -25-
A legelterjedtebb relációs adatbázis-kezelő rendszerek az Oracle, a MySQL, a SYSBAS, INGRES, MS SQL, INFORMIX. A relációs adatbázis-kezelés alapjait még 1971-ben a Codd által megalkotott relációs adatmodell elmélet alapozta meg, amelynek hatására létrejöttek a relációs adatbázis kezelő rendszerek. A modell pontos leírása bonyolult matematikai módszereket történt meg. Az adatbázis kezelésben a '70-es évek végétől élesen szétvált a logikai és a fizikai modell, melynek következtében számítógép rendszer független módon lehet adatbázis sémákat készíteni. A szétválás következtében természetesen a relációs adatbázis kezelésben is elkülönült ez a két modellezési szint. Logikai szinten a relációk táblákban jelennek meg. Egy adatbázison belül a tábláknak egyedi nevük van. A táblák oszlopait attribútumoknak (oszlopoknak) nevezzük. Az attribútumok sorrendje kötött. Az attribútumok értékeit egy úgynevezett attribútum-halmazból veheti fel és értékeinek eleminek kell lenni. A tábla soraiban helyezkednek el a rekordok. A modell nem engedi meg, hogy két rekord megegyezzen! Egy rekord adott attribútumának értékét a mező értékének nevezzük. A tábla sorait tetszőlegesen megcserélhetjük, a sorok száma elméletileg nem kötött, de a számítógépes háttértároló nagysága, valamint az adatbázis kezelő rendszer fajtája azért határt szabhat. Az adatbázis táblákból, valamint a táblák közötti kapcsolatból épül fel. A kapcsolat ez egyik tábla elődleges kulcsa és a másik tábla külső kulcsa között jön lére, mégpedig azzal a megszorítással, hogy a külső kulcs (idegen kulcs) valamennyi értékének szerepelnie kell az elsődleges kulcsok között, vagy NULL értékű kell lennie. A rekordok (sorok) egyediségét az elsődleges kulcs biztosítja, mely akár állhat egy attribútumból (pl.: sorszám) is, vagy állhat több attribútumból (pl.: név, anyja neve, születési idő) is, a lényeg az, hogy legyen. Az elsődleges kulcs nem vehet fel NULL értéket sem. Fizikai szinten az adatbázis valamilyen állományszerkezetben van tárolva, melynek kezelése az operációs rendszer feladata. -26-
VI. Használati esetek, szerepkörök Használati esetek A tervezett weblapon és adatbázis kezelő alkalmazásban a következő használati esetek előfordulásával számolok. GYIK Gyártók Hasznos Információk Hiba e-mail Regisztráció Bejelentkezés Vendégkönyv Letöltés Admin mail Hibabejelentés Lekérdezés Kijelentkezés Profilváltás Új felhasználó Jelszó mod. Ügyfél rögz. Eszköz rögz. Ügyfél mod. Eszköz mod. Új hibajegy Munkavégzés Megrendelő Munkalap WEB bejelent Eszközátvétel Keresés Feltöltés Munkatársak Kirendeltségek Adatbázis acc. 2. ábra GYIK: a látogató a gyakran ismételt kérdésekre, problémákra kaphat választ ezen az oldalon. Gyártók: a látogató böngészheti a szervizzel kapcsolatban álló gyártók honlapjait tájékozódás céljából. Hasznos: a látogató böngészheti a szerviz által ajánlott hasznos oldalakat. Információk: a látogató megtekintheti a szerviz tevékenységével összefüggő elérhetőségeket, információkat. -27-
Hiba e-mail: a látogató regisztráció nélkül is küldhet hibabejelentést e-mail formájában. Regisztráció: jelszó alapú hitelesítés, a rendszer tárolja a felhasználó adatait, alapesetben ügyfél szerepkört biztosít. Bejelentkezés: a bejelentkezés a regisztrációt követően a rendszerben tárolt felhasználónévvel és jelszóval történhet sikeres hitelesítés után. Vendégkönyv: a látogató véleményezheti a honlapot, beírhatja esetleges pozitív, vagy negatív élményeit a szerviztevékenységgel kapcsolatban. Letöltés: a felhasználó letölthet a honlapról a felhasználók számára tematikusan elhelyezett segédanyagokat, tesztprogramokat, leírásokat. Admin e-mail: a felhasználó e-mail formájában üzenetet küldhet a rendszergazdának, különböző témamegjelöléssel, úgymint segítségnyújtás kérése, hitelesítési és jelszó problémák, stb. Hibabejelentés: a hitelesített felhasználó a WEB felületen jogosult hibabejelentést megtenni a szerviz felé. A hibajegy nem aktiválódik automatikusan, csak ellenőrzés után a személyzet aktiválja. Lekérdezés: a felhasználó a hibajavítás folyamatáról információt nyerhet ki az adatbázisból a hibajegy, illetve a logisztikai azonosító ismerete esetén. Kijelentkezés: a munka végeztével, vagy ideiglenes félbeszakítása esetén a felületről ki lehet jelentkezni. Profilváltás: a felhasználó, amennyiben több féle jogosultsággal rendelkezik, átjelentkezhet a másik profiljára. Új felhasználó: a felhasználó létrehozhat új felhasználót, ha erre igény merül föl. Például egy cégnél van egy kapcsolattartó, de szabadság esetén más is rá tudjon nézni a hibajegyek státuszára. -28-
Jelszómódosítás: a felhasználó módosíthatja a jelszavát az eredeti jelszó ismeretében. Ügyfél rögzítése: a felhasználó az ügyfél adatokat ezen a felületen tudja rögzíteni. Eszköz rögzítése: a felhasználó az eszköz adatokat ezen a felületen tudja rögzíteni. Ügyfél módosítása: a felhasználó az ügyfél adatokat ezen a felületen tudja módosítani. Eszköz módosítása: a felhasználó az eszköz adatokat ezen a felületen tudja módosítani. Új hibajegy: a felhasználó a hibajegyeket ezen a felületen tudja rögzíteni. Munkavégzés: a felhasználó a hibajegyeket ezen a felületen tudja módosítani. elvégzett munkafázisokat bevinni az adatbázisba. Munkalap: a felhasználó az elvégzett munkákról munkalapot tud nyomtatni. Megrendelő: a felhasználó az a javításra átvett eszközökről megrendelőt (átvételi elismervényt) tud nyomtatni. WEB bejelentés: a felhasználó a WEB felületen megtett hibabejelentéseket itt tudja aktiválni és az illetékes szervizkirendeltségek felé kiosztani. Eszközátvétel: a felhasználó az eszközátvétel során ezen az űrlapon keresztül egy folyamatban tudja rögzíteni a szükséges adatokat, kezdve a hibajelenséggel, folytatva az ügyfél és eszköz adatokkal és végül a megrendelő nyomtatásával. Keresés: a felhasználó különböző előre beállított feltételekkel tud az adatbázisban keresni a szükséges adatokra. Feltöltés: a felhasználó a honlap letöltő oldalára jogosult dokumentumokat, segédanyagokat, használati utasításokat, tesztprogramokat elhelyezni. -29-
Munkatársak: a felhasználó új munkatársakat rögzíthet az adatbázisba, lehetősége van a regisztrált felhasználó előléptetésére szervizes, helpdesk vagy vezető jogosultságú felhasználóvá, valamint ezek adatait módosítani tudja. Kirendeltségek: a felhasználó új szerviz-kirendeltségeket rögzíthet az adatbázisba, valamint ezek adatait módosítani tudja. Adatbázis acc.: a felhasználó az adatbázis karbantartását a phpmysql felületen keresztül el tudja végezni. (adatbázis szintű jogosultság is szükséges) Az aktorok használati esetei vendég felhasználó használati esetei: Regisztráció Hiba e-mail Vendégkönyv Gyártók GYIK Hasznos Információk vendég 3. ábra A vendég internetes felhasználó, aki a portál oldalait böngészi, kereshet az információk között, használhatja a honlap regisztrációt nem igénylő funkcióit. Mivel ezekhez a használati esetekhez nem szükséges regisztrálni, értelemszerűen az összes további regisztrációhoz kötött aktor is örökli ezeket. ügyfél felhasználó használati esetei Az ügyfél felhasználó örökli a vendég felhasználó összes használati esetét. Ezen kívül a következő használati esetekkel kell tervezni az alkalmazást: -30-
vendég Bejelentkezés Hibabejelentés Lekérdezés Letöltés Admin mail Új felhasználó Jelszó mod. ügyfél Felh. váltás 4. ábra Az ügyfél aktor létrehozásának a célja az ügyfél felhasználók egyértelmű elkülönítése a vendég felhasználótól. Regisztrációt és hitelesített bejelentkezést igényel. szervizes felhasználó használati esetei A szervizes felhasználó örökli az ügyfél felhasználó összes használati esetét. Ezen kívül a következő használati esetekkel kell tervezni az alkalmazást: ügyfél Ügyfél rögz. Eszköz rögz. Új hibajegy Munka Munkalap 5. ábra szervizes -31-
A szervizes aktor létrehozásának célja, hogy a munkafelületen egyedi felhasználói fiókokkal tudjanak a munkatársak a felmerülő feladatoknak megfelelő adatmódosításokat elvégezni a hibajegy adatbázis kezelő alkalmazásban. Az, hogy mindenki saját profiljával dolgozik, teszi lehetővé, hogy a folyamatok részfeladatait személyekhez rendelve tudom naplózni, és probléma esetén visszakereshető a részfeladat végző személye. helpdesk felhasználó használati esetei A helpdesk felhasználó örökli a szervizes aktor összes használati esetét. Ezen kívül a következő használati esetekkel kell tervezni az alkalmazást: szervizes Ügyfél mod.. Eszköz mod. WEB bejelent. Eszköz átvétel Megrendelő Ügyfél mod. Eszköz mod. Feltöltés helpdesk 6. ábra A helpdesk aktor létrehozásának célja, hogy a munkafelületen azokat a használati eseteket, ami a szervizeshez képest bővebb ügyfélszolgálati feladatok végzéséhez szükségesek, egy magasabb jogosultságú eltérő aktorhoz rendeljük. A helpdeszk munkatárs feladatköre elsősorban adminisztratív munkát jelent, csomagküldést, ügyfél kapcsolatokat, de az eszközátvétel miatt szükséges hozzáférést biztosítani a rendszerhez. -32-
A vezető kizárólagos dedikált funkciókkal rendelkező aktor, de az alatta lévő szintek funkcióival is rendelkezik az ellenőrzés lehetősége miatt. Ez leg egyszerűbben úgy oldható meg, hogy örökli a helpdesk szerepkör használati eseteit. Munkatársak. Kirendeltségek 7. ábra vezető helpdesk A DBadmin a rendszer lehetőségeinek teljes palettájával rendelkező szerepkör. A vezető aktor használati eseteit örökli. Az adatbázis kezelő phpmyadmin alkalmazáson keresztül az adatbázis karbantartását végezheti. Adatbázis acc. 8. ábra DBadmin vezető -33-
VII. Az adatbázis tervezése Adatbázis logikai tervezése, normalizálás, normálformák A számítógépen tárolni kívánt adatbázisunk elkészítésének ez az első és talán a legfontosabb része. Fontosságát az adja, hogy az elkövetkezendőkben megtervezett adatbázisunkhoz kell majd megírni a különböző programokat, ebből az adatbázisból kell majd kinyernünk értékes információkat és nem utolsó sorban ezt az adatbázist kell karbantartanunk. A logikai tervezés fő feladata a redundancia, azaz egy adat több helyen történő tárolásának lehetősségekhez mérten minimális szintre csökkentése, oly módon, hogy ez a sebesség és egyéb elvárt követelmények rovására ne menjen. A redundancia megszüntetése elsősorban a karbantartási műveletek során nyújt segítséget és feltétele annak, hogy az adatbázisunk ne kerüljön inkonzisztens állapotba, melynek eredményeként egy lekérdezés során hamis eredményeket kaphatunk. A redundancia megszüntetésének módja a normalizálás. A normalizálás során célszerű azt a harmadik normálforma eléréséig folytatni. A szakdolgozatom témája egy számítógépeket javító szerviz hibajegy kezelő adatbázisának létrehozása, így ezeken az adatokon próbálom bemutatni a folyamatot. -34-
A felmerülő adatok ömlesztve a következők: felhasználó neve rendelt alkatrész felhasználó nick neve felhasznált alkatrész felhasználó email javítás menete felhasználó címe fizetendő összeg jelszó megjegyzések belépés ideje egyéb hibajegy információk jogosultság szint műveletek szerviz-kirendeltség felelős egyéb felhasználó információk művelet időpontja ügyfél neve módosító kapcsolattartó személy eszköz gyártója ügyfél címe eszköz megnevezése irányító szám (kódolva) telefonszámok gyári szám e-mail címek product number rögzítés ideje garancia státusza egyéb ügyfél információk tartozékok hiba bejelentés státusza egyéb eszköz információk hiba állapot státusza javító szerviz kirendeltség hibajegy azonosító neve logisztikai azonosító vezető bejelentés ideje szerviz címe elkészülés ideje szerviz telefonszáma hiba állapota szerviz e-mail címe hiba státusza egyéb szerviz információ hibajelenség (kódolva) hibajeggyel történő műveletek fejlesztés során felmerülő igények hiba behatárolása A szükséges adatokat úgy célszerű összeállítani, hogy szerepeljen benne az összes olyan adat, amely a kimenetnél fontos lehet, viszont ne szerepeljenek benne olyanok, amelyek más attribútumokból származtathatók Látszólag ez egy nagyon egyszerű feladatnak tűnik, hiszen egy tábla létrehozásával megoldható lenne a probléma, csakhogy a relációs adatbázis elméletével ellentétes, hogy egy attribútum érték ne elemi legyen. -35-
Érdemes az adatokat entitások szerint csoportosítva külön táblákba rendezni, ahol a tábla nevei az entitások nevei lesznek. Az aláhúzás a tábla elsődleges kulcsát jelöli, mely egyedi kell, hogy legyen, a szaggatott aláhúzás a külső (idegen) kulcs, a szürke háttérben a nagybetűs szöveg a tábla nevét jelzi. Ha egy táblában az attribútumok értékei valamennyi esetben elemiek, akkor azt mondjuk, hogy az adatbázis séma 1NF (első normálformájú). A megvalósítás során az eredeti adatokból több táblázatot készítek úgy, hogy az ismétlődő attribútumokat külön táblába teszem. Abban az esetben, ha az elsődleges kulcs egyszerű, akkor az adatbázis séma 2NF-ben van, ha nem, nekünk kell megszüntetni a részleges függőségeket. Részleges függőség akkor áll fenn, ha az összetett kulcs egyik tagjától függ valamelyik leíró attribútum. A részleges függőséget, úgy tudjuk megszüntetni, hogy megszüntetjük a táblák egymásba ágyazását és ezzel új táblákat hozunk létre. Természetesen az adatbázis sémánknak ebben az esetben is 1NF-ben is kell lennie. Nem alkalmazok összetett kulcsokat, így ezzel nincs dolgom. A következő lépés, hogy a 2NF-ben lévő sémánkat 3NF-ra bontjuk, azaz megszüntetjük benne a tranzitív függőséget. A tranzitív függőség akkor áll fenn, ha az egyik leíró attribútumtól függ egy másik leíró attribútum. Ha egy séma 2NF-ben van és nincs benne tranzitív függőség, akkor 3NF-ben is van. Ez szintén új táblák létrehozásával oldható meg, mégpedig, úgy hogy az egymástól függő attribútumokat kiemeljük a táblából és tetszőleges, de egyedi attribútumát kijelöljük elsődleges kulcsnak. Nagyon fontos, hogy a relációs adatmodell nem kezeli az úgynevezett N:M kapcsolatot, amelyet az adatbázis séma 3NF-ba hozásával a normalizálás automatikusan megszüntet. -36-
Az N:M típusú kapcsolat a normalizálás során átalakul 2 darab 1:N típusú kapcsolattá. A relációs adatbázis-kezelők megkövetelik 1NF sémát, nem normalizált táblázatokat nem tudnak kezelni. A következő táblázatban látható, hogy a megvalósítás során az eredetileg fölvázolt adathalmazból hat tábla keletkezett, mégpedig úgy, hogy az ismétlődő attribútum értékekből külön táblát készítettem. Az újonnan készített táblákban az elsődleges kulcsok és a hibajegy valamint a muveletek és felhasznalo táblában elhelyezett külső kulcsok együttesen biztosítják, hogy az eredeti táblában lévő nem elemi attribútumok és kapcsolati viszonyok visszaállíthatóak legyenek adatvesztés nélkül. Ugyfel Felhasznalo Hibajegy Eszkoz Muveletek Kirendeltseg ugyfel_id Felh-nev hibajegy_id eszkoz_id muvelet_id kirendeltseg_nev ugyfel_nev teljes_nev log_azonosito gyarto hibajegy_id vezeto kapcsolattarto email bejelent_ido gyariszam muvelet cím ugyfel_cim cím kesz_datum product_num datum_ido telefon iranyito_szam jelszo hiba_allapot megnev_kod felelos email telefon_1 belepes_ideje hiba_status garancia modosito megjegyzes telefon_2 jog_szint ugyfel_id tartozek egyeb_info email telefon eszkoz_id megjegyzes rogzites_ido kirendeltseg_nev kirendeltseg_nev egyeb_info megjegyzes spec_info Felh_nev egyeb_info egyeb_info hibajel_kod hiba_behatarolas rendelt_alkatresz felh_alkatresz javitas_menete fizetendo megjegyzes egyeb_info -37-
Innentől kezdődhet az adatbázis fizikai tervezése az adatbázis-kezelő rendszerünk dokumentációja szerint. Kialakítom az adatbázis tábláit és megadom az attribútumok tulajdonságait. Az attribútum típusának meghatározása során elsősorban a tapasztalatunkra hagyatkozhatunk. Azonban van néhány íratlan szabály, amit érdemes betartanunk: az elsődleges kulcsokat célszerű numerikus típusúra tervezni, mivel a legtöbb adatbázis-kezelő rendszer ismeri az automatikus értékadást; ha egy értékkel számítási műveleteket akarunk végezni, akkor annak típusa mindig legyen numerikus; a külső kulcsoknak, olyan típusúnak és méretűnek kell lenniük, mint a hozzájuk tartozó elsődleges kulcsoknak; mindig akkora értéket válasszunk az attribútum nagyságának, hogy később már ne kelljen megnövelni, az sem baj, ha egy kicsit túlméretezzük az értékeinket (ha van elég tárolókapacitásunk); ha dátum értéket akarunk tárolni, a későbbi művelet végrehajtások miatt célszerű dátum típust megadni; olyan attribútumoknál, ahol az érték viszonylag állandó célszerű azt alapértelmezettként megadni. Adatbázis létrehozása A szerviz adminisztrációs hibakezelő rendszer számára létre kell hoznom egy adatbázist a MySQL adatbázis kezelőn. Az adatbázis neve legyen hibakezelo. -38-
A működéshez szükséges létrehozandó táblák a következők lesznek: felhasznalo tábla létrehozása CREATE TABLE felhasznalo ( Felh_nev varchar(12) NOT NULL default '', teljes_nev varchar(30) NOT NULL default '', email varchar(30) NOT NULL default '', cim varchar(30) NOT NULL default '', jelszo varchar(250) NOT NULL default '', belepes_ideje date default NULL, jog_szint int(1) unsigned zerofill NOT NULL default '0', telefon varchar (15) NOT NULL default '', kirendeltseg_nev varchar (30) NOT NULL default '', spec_info varchar (30) NOT NULL default '', egyeb_info varchar (30) NOT NULL default '', PRIMARY KEY (Felh_nev) ) TYPE=InnoDB; A felhasznalo táblában tárolom az alkalmazást használni jogosult felhasználók valamint a regisztrált ügyfelek adatait. A tábla elsődleges kulcsa a Felh_nev rekord. Mivel az ügyfelek és a dolgozók felhasználói adatai csak néhány mezőben térnek el, az egyszerűség kedvéért nem választom szét az ügyfél és a munka jellegű felhasználókat, hanem a táblában egy jogosultság szint mezővel különböztetem meg a különböző jogosultsággal bíró felhasználókat. 1. szint = ügyfél/felhasználó 2. szint = szervizes 3. szint = helpdesk 4. szint = vezető 5. szint = database admin -39-
Egyben ezt a táblát használom föl a felhasználók beléptetésére. A belépés az alkalmazás szempontjából az egyik legkritikusabb pont. A jelszó tárolása egy titkosító algoritmus segítségével történik, így a táblában tényleges jelszó helyett csak egy hosszú karaktersorozatot láthatunk. A felhasználók adatait tároló tábla valamennyi elemének kitöltése kötelező. Az alkalmazás biztonságos üzemeltetése szempontjából fontos, hogy azonosítható legyen a felhasználó, illetve az, hogy érvényes legyen a bejelentkezés. A beléptetés során a felhasználót el kell látnunk valamilyen azonosítóval (session), mely segítségével később ellenőrizhetjük. A rendszer által biztosított hozzáférés engedélyezési és ellenőrzési folyamatot munkamenet kezelésnek nevezzük. A felhasznalo tábla nem tartalmazza az adatbázis eléréséhez szükséges azonosítókat. Erre a célra a db.inc állományt használom, mely az azonosító adatokon túl tartalmaz néhány eljárást, amelyeket minden oldalon használni fogok. A db.inc állomány kódja a mellékletek között megtalálható. ugyfel tábla létrehozása CREATE TABLE ugyfel ( ugyfel_id int(10) unsigned NOT NULL auto_increment, ugyfel_nev varchar(50) default NULL, kapcsolattarto varchar(25) default NULL, ugyfel_cim varchar(35) default NULL, iranyito_szam int(4) default NULL, telefon_1 varchar(15) default NULL, telefon_2 varchar(15) default NULL, email varchar(30) default NULL, rogzites_ido datetime(20) default NULL, megjegyzes_1 varchar(50) default NULL, megjegyzes_2 varchar(50) default NULL, egyeb_info varchar(25) default NULL, PRIMARY KEY (ugyfel_id) ) TYPE=MyISAM; -40-
A hibabejelentésekben szereplő ügyfél adatok tárolására az ugyfel táblát használom. Esetenként előfordulhat, hogy egy regisztrált felhasználónévvel több cég hibáit is kezeli valaki, ezért az ügyfél adatokat nem a felhasználó névvel egy táblázatban, hanem külön tárolom. Elsődleges kulcs az ugyfel_id rekord. eszkoz tábla létrehozása CREATE TABLE eszkoz ( eszkoz_id int(10) unsigned NOT NULL auto_increment, gyarto varchar(15) default NULL, gyariszam varchar(15) default NULL, product_num varchar(15) default NULL, megnev_kod varchar(1) default NULL, garancia varchar(15) default NULL, tartozek varchar(25) default NULL, megjegyzes varchar(50) default NULL, egyeb_info varchar(50) default NULL, PRIMARY KEY (eszkoz_id) ) TYPE=MyISAM; A hibabejelentésekben szereplő eszközök adatainak a tárolására az eszkoz táblát használom. Mivel egy felhasználó több eszközt is bejelenthet és egy ügyfélhez több eszköz is tartozhat, ezért az eszköz adatokat külön táblában tárolom. Elsődleges kulcs az eszkoz_id rekord. -41-
kirendeltseg tábla létrehozása CREATE TABLE kirendeltseg ( kirendeltseg_nev varchar(30) default NULL, vezeto varchar(25) default NULL, cim varchar(35) default NULL, telefon varchar(15) default NULL, email varchar(30) default NULL, megjegyzes varchar(30) default NULL, egyeb_info varchar(30) default NULL, PRIMARY KEY (kirendeltseg_nev) ) TYPE=MyISAM; A szervizmunka a cégnél több telephelyen zajlik. Az eszközök esetenként vándorolnak a telephelyek között. A hibabejelentéskor el kell dönteni, hogy az adott feladatot melyik szervizkirendeltség tudja leghatékonyabban kezelni. Mindezek miatt szükség van a kirendeltségek adatait külön táblában tárolni. Elsődleges kulcs a kirendeltseg_nev rekord. muvelet tábla létrehozása CREATE TABLE muveletek ( muvelet_id int(10) unsigned NOT NULL auto_increment, hibajegy_id int(10) default NULL, muvelet varchar(100) default NULL, datum_ido datetime(20) default NULL, felelos varchar(12) default NULL, modosito varchar(12) default NULL, PRIMARY KEY (muvelet_id) ) TYPE=MyISAM; -42-
A hibajegyekkel különféle műveletek végezhetők, melyeket a visszakereshetőség érdekében el kell tárolni. Lényeges, hogy az adott munkafázist ki végezte el és az mikor történt meg. Így biztosítható, hogy az egyes munkafázisok dokumentálása megfelelően megtörténjen, és ellenőrizhető legyen. Lehetőséget ad, arra is, hogy az ügyfél érdeklődésére az ügyfélszolgálati munkatárs információt tudjon kinyerni a rendszerből a készülék javításával kapcsolatban, anélkül, hogy a szervizes munkatárssal beszélnie kelljen. Elsődleges kulcs a muvelet_id rekord. hibajegy tábla létrehozása CREATE TABLE hibajegy ( hibajegy_id int(10) unsigned NOT NULL auto_increment, log_azonosito varchar(7), bejelent_ido datetime(20) default NULL, kesz_datum datetime(20) default NULL, hiba_allapot varchar(20) default NULL, hiba_status varchar(10) default NULL, ugyfel_id int(10) unsigned NOT NULL default '0', eszkoz_id int(10) unsigned NOT NULL default '0', kirendeltseg_nev varchar(30) default NULL, Felh_nev varchar(12) default NULL, hibajel_kod varchar(3) default NULL, hiba_behatarolas varchar(50) default NULL, rendelt_alkatresz varchar(20) default NULL, felh_alkatresz varchar(20) default NULL, javitas_menete varchar(200) default NULL, fizetendo varchar(15) default NULL, megjegyzes varchar(50) default NULL, egyeb_info varchar(200) default NULL, PRIMARY KEY (hibajegy_id) ) TYPE=MyISAM; -43-
A hibajegy tábla a legfontosabb tábla az adatbázisomban. Elsődleges kulcs a hibajegy_id rekord. Szinte minden tábla között N:M kapcsolat lenne az ideális választás, viszont relációs adatbázisban csak 1:N kapcsolatokat tudunk fölépíteni, ezért a hibajegy tábla úgynevezett kapcsolótábla funkciót lát el. Ezt a feladatot a táblában elhelyezett idegen kulcsokkal szándékozom megoldani. ugyfel_id = ugyfel tábla elsődleges kulcsa eszkoz_id = eszkoz tábla elsődleges kulcsa kirendeltseg_nev = kirendeltseg tábla elsődleges kulcsa Felh_nev = felhasznalo tábla elsődleges kulcsa A hibakódoló segéd-adatbázistáblák kialakítása A hibabejelentések során gyakran ismétlődnek bizonyos adatok. Ezeket érdemes a sok karaktert igénylő szöveges tárolás helyett kódolni. Hogy az adatbázis adatstruktúrája kisebb helyet foglaljon, valamint elkerüljük a káoszt, szükséges, hogy a hibabejelentések alkalmával egységes adatokat kérjünk be az ügyféltől, vagy a kezelő személyzettől. Ezért bizonyos adatokat, amikre később szűrni kívánok, csak listából kiválasztva engedélyezem az adatbázisba bevinni. Erre a feladatra egy hibabejelentő segédalkalmazást használok. Az alkalmazás szintén az adatbázisból dolgozik és elvégzi a hibabejelentéskor a szükséges kódolást 3 állandó adattartalmú segédtábla használatával. A későbbiek folyamán ezekre a hibakódokra keresve kigyűjthetők az információk. -44-
A hibakódoló segédtáblák a következők: keszulek tábla szerkezete és adatai Mező; Típus KeszulekID int(1) Keszulekmegnevezes varchar(20) 1 PC 2 Notebook 3 Szerver 4 Nyomtató 5 Monitor 6 Hálózati eszköz 9 Egyéb hiba tábla szerkezete és adatai Mező; Típus HibaID int(2) Hibamegnevezes varchar(30) KeszulekID int(1) (nem teljes fölsorolás!) 11 PC-t nem lehet bekapcsolni 1 12 Nem ad képet a monitoron 1 13 Operációs rendszer nem indul 1 14 Működés közben lefagy 1 15 PC kikapcsol 1 16 Zúg, hangos 1 17 Nem megfelelő teljesítmény 1 18 Nagyon lassú működés 1 19 Egyéb PC hiba 1 21 Nem lehet bekapcsolni 2.... És így, ennek a struktúrának megfelelően további adatokkal feltöltve -45-
reszegyseg tábla szerkezete és adatai: (nem teljes fölsorolás!) Mező; ReszegysegID Reszegysegmegnevezes HibaID Típus int(3) varchar(30) int(2) 111 Tápkábel 11 112 Tápegység 11 142 Merevlemez (HDD) 14 143 Memória modul 14 144 Alaplap 14 239 Nem tudom beazonosítani 23 241 Alaplap 24 242 Processzor 24 243 Memória modul 24 244 Hűtő ventilátor 24 249 Nem tudom beazonosítani 24 251 Tápegység 25 252 Akkumulátor 25 254 Processzor 25 313 Bekapcsoló gomb 31 314 Alaplap 31 319 Nem tudom beazonosítani 31 321 Monitor 32 322 Monitor kábel 32 323 Grafikus vezérlő 32 561 Inverter modul 56 562 Képcső vagy LCD 56 563 OSD chip 56 569 Nem tudom beazonosítani 56 612 Router 61 613 Adatkábel 61 619 Nem tudom beazonosítani 61 621 Tápegység 62 633 Adatkábel 63 911 Egyéb részegység 91... És így tovább, ennek a struktúrának megfelelően további adatokkal feltöltve további értékekkel. Az összes elemet nem sorolom föl. Csak a példa kedvéért szerepel itt néhány rekord. -46-
Mint látható a táblák mezői a leggyakrabban előforduló fix értékeket tartalmazzák, a mezőket programozás során előre feltöltöm tartalommal. Igaz, hogy az adattáblák tartalommal való feltöltése kicsit időigényes és tartalmaz némi redundanciát, de a továbbiakban rengeteg hely spórolható meg vele. Természetesen a megadott értékeken kívül bármilyen szükségesnek tartott értékkel utólag is kiegészíthető. Az ily módom képződő HibaID KeszulekID és ReszegysegID kódok kerülnek a hibajegybe. A fenti táblázatban szereplő, viszonylag hosszú karakteres kifejezések helyett csak egy három számból álló kódot kell eltárolni. Az űrlap a kiválasztott eszközre vonatkozó hibajelenségekre szűr, és utána a megfelelő részegységekre. Tehát az első választás szerint jelennek meg a következő lehetőségek, és így tovább. Érthetőség kedvéért a kezelő felületről egy ábrát itt prezentálok, bár ez tematikai szempontból a dolgozatom későbbi részéhez tartozna, de logikailag talán így érthetőbb a funkció működése. A készülék és hibajelenség, valamint a részegység kiválasztása után megjelenő tovább gomb megnyomásával az ügyfél interfész felület hibabejelentő oldalára továbbítja a felhasználót. A funkció működéséért a hibakodolo_seged_php, és a bejelentes_add.php fájlok felelnek. Az alkalmazás felülete a következő 9. ábrán látszik. 9. ábra -47-
VIII. Az oldal kivitelezése A honlap elkészítése Az oldal elkészítésének első lépése megtervezni, hogy milyen lapokból épüljön fel, ezek hogyan kapcsolódjanak egymáshoz és az adatbázishoz, illetve az egyes lapok milyen funkciókkal rendelkezzenek. Mivel az oldal túlnyomórészt adatbázis kezelő funkciókat tartalmaz kevés grafikával, ezért célszerű egy indító oldalt létrehozni, ahol az oldalra belépni szándékozó felhasználó gyorsan tájékozódni tud az elérhető funkciókról. A felhasználót egy üdvözlő szöveg köszönti a legfontosabb információkkal. 10. ábra Ahhoz, hogy az oldalak könnyen elérhetők és bármelyik másik a lapon tartózkodva is meghívhatók legyenek, érdemes a linkek minden lapon történő elhelyezése helyett inkább egy keretes szerkezetet megvalósítani, felosztva egy navigációs felületre, ami a lapokra irányító linkeket tartalmazza, és egy munka-felületre ahová a menüből kiválasztott oldal fog betöltődni. (10. ábra) Ezt a menü-munkafelület felosztást a mostanában elterjedt széles (16*9 felbontású) kijelzőkre tekintettel egy a képernyő bal szélén elhelyezett függőleges navigációs menüvel oldom meg. Ott általában nem foglal zavaróan sok helyet. A navigációs menü és a munka-felület markánsan eltérő színvilága megkönnyíti a tájékozódást. -48-
A navigációs menü A navigációs menü valójában a főoldal része, ami állandóan előtérben van és ahonnan elérhetőek a további lapok. A főbb funkciók, a tájékoztatás, hibabejelentés, gyakran ismételt kérdések, vendégkönyv, gyártói oldalak elérhetőségei, hasznos oldalak. Itt helyezem el az adatbázis kezelő beléptető oldal linkjét is. A kezdőoldalt az index.php meghívásával lehet elérni, mely a keretekért felel, és behívja az oldalmenu.php és a folap.php fájlokat. A különböző funkciók egymástól elkülönítve saját mappáikban lettek megvalósítva egységes minimál grafikai elemekkel. A vendégkönyvet és a gyakran ismételt kérdések rovatot, amik rendelkezésre állnak ingyenesen letölthető és szabadon felhasználható modulok formájában, azokat a szükséges mértékig átdolgozva, a honlap képéhez igazítva implementálom a források megjelölésével. Hibabejelentés E-mail formájában A navigációs menü felületén lett elhelyezve a hibabejelentés gomb, ami meghívja a munkafelületre az email_urlap.php fájlt. Ennek használatával jelenthet be az ügyfél meghibásodást a szerviz felé. A funkció bármilyen más kommunikáció kezdeményezésére is alkalmas az ügyfélszolgálat felé. 11. ábra -49-
IX. Hibajegy kezelő rendszer Az általam kialakított hibajegy kezelő adminisztrációs rendszer, ami az oldal lényegi adatbázis-kezelő funkcióit valósítja meg és a saját gyakorlati munka fajsúlyos részét tartalmazza. Továbbiakban ennek kialakítását és használati esetek megvalósítását vázolnám néhány funkciót kiemelve. A honlapon a lehetőségek nagy része mindenki számára hozzáférhető, de vannak lapok, amihez csak az oldal regisztrált felhasználói férhetnek hozzá. Kimondottan ilyen funkció az online hibabejelentés lehetőségét nyújtó felület, ami valójában a hibajegy kezelő rendszer ügyfél oldali interfésze. Beléptetés Mivel a hibakezelő rendszer használata regisztrációhoz kötött, ezért először is szükség van egy olyan felületre, ahol a felhasználók elvégezhetik a regisztrációs folyamatot és elvégezhetik a hitelesítést. Ezt a funkciót az oldalmenün a bejelentkezés gombra kattintva lehet elérni, (index.php) mely egyből átvisz a hibakezelő alkalmazásra. A felület a 12. ábrán látható. 12. ábra Amennyiben a felhasználó még nem regisztrált az oldalon, megteheti a leírás szerint, a linkre kattintva. (regisztracio.php) Ha már van felhasználói neve és fiókja, akkor természetesen bejelentkezhet és megkezdheti a munkát a felületen. -50-
A bejelentkezés után a felhasználó jogosultságainak megfelelő felület töltődik be az elérhető funkciókkal. Kijelentkezéskor, vagy új felhasználó belépésekor a mindenkori munkamenet $_session[ user ] változó értékét törlöm, így a böngésző vissza gombjával nem lehet megnézni a korábbi munkamenet felületét. <?php session_start(); unset($_session['user']); header("location: index.php");?> A regisztráció a következő űrlapon végezhető el. (13.ábra) 13. ábra Regisztráció után az ügyfélnek lehetősége van bejelentkezni. Sikeres bejelentkezés esetén a program megjeleníti a felhasználó nick nevét és a jogosultság szintjét. Innentől lehet hibát bejelenteni, készültség állapotát lekérdezni, jelszót módosítani, valamint segédanyagokat letölteni a weblapról. Egyszerű regisztrált user felhasználó jogosultsággal csak az egyszerű regisztrált felhasználóhoz tartozó felület jelenik meg. Az elérhető funkciókat a 14. ábra mutatja. -51-
14. ábra Az első lehetőség az Admin gomb. Ezen keresztül közvetlenül küldhető e- mail az oldal üzemeltetőjének. A második gomb a hibabejelentés felvitele. Itt már a bejelentés közvetlenül az adatbázisba kerül. A hibajegy bevitelére az alábbi űrlap szolgál, miután az előző fejezet szerint a hibakódoló segéddel kiválasztottuk a kódot: 15. ábra Első körben meg kell adni az ügyfél adatait, elérhetőségeit. Utána az eszköz adatait. A *-al jelölt mezők nem hagyhatók üresen, erre az űrlap figyelmeztet és az adatbevitel előtt ellenőrzést is végez. A több soros szövegbeviteli mezőnél még megadható egyéb információ igény szerint. A 15-ös és 16-os ábra valóságban egyetlen űrlapon jelenik meg. A küldés gomb végrehajtja az adatbevitelt. Hiba esetén pirossal kiíródnak a problémák. -52-
16. ábra Továbbiakban az ügyfélnek a harmadik gombbal lehetősége van a korábban leadott, szervizben javítás alatt álló eszközének állapotát lekérdezni, amennyiben megadja az eszköz logisztikai azonosító számát. Ezt a számot az eszköz átvételekor kapja az ügyfélszolgálattól, ez szerepel a megrendelő lapon, és végigkíséri az eszközt egy ráragasztott címke formájában, a szervizben a telephelyek közötti szállítások folyamán. (ez egy meglévő papír alapú regisztrációs rendszer, ezért kellett ehhez igazodni.) 17. ábra -53-
Jogosultság szintek megvalósítása Az eddigiekből már kitűnik, hogy a rendszer használatához jogosultsági szintek tartoznak. (main.php) Az oldal jogosultságok szempontjából hat csoportra osztható: vendég nem szükséges regisztrálni (kvázi 0-s szint) ügyfél regisztráció után, alapértelmezett jogosultság (1-es szint) szervizes regisztrált felhasználóból előléptethető (2-es szint) helpdesk regisztrált felhasználóból előléptethető (3-as szint) vezető regisztrált felhasználóból előléptethető (4-as szint) DBadmin adatbázis-kezelő szintű hitelesítés szükséges (5-ös szint) Vendégként az oldalnak csak a szabad tartalmai jelennek meg. Regisztrációt nem igényel. Ezen felhasználó információkhoz juthat a szerviz tevékenységéről, elérhetőségeiről. Vendégkönyv, a Gyakori kérdések rovat és a Gyártói oldalak rész nem igényel regisztrációt. Az ügyfél regisztráció nélkül is bejelentheti hibás eszközét e-mail formájában a hibabejelentés mezőre megjelenő űrlapon keresztül. Az ügyfél néven szereplő szint már regisztrációhoz kötött. Regisztrált felhasználóként bejelentkezés után az Ügyfél bejelenthet eszköz meghibásodást a hibakezelő online felületén. Lekérdezheti a már korábban bejelentett, vagy leadott eszköz javításának állapotát. Új, másik felhasználót regisztrálhat, vagy a meglévő jelszavát megváltoztathatja, esetleg átléphet másik felhasználóra. Letölthet a szerviz által feltöltött dokumentumok közül, számára hasznos tartalmakat. Itt jegyezném meg, hogy a letöltő oldalon felhasznált könyvtár listázó szkript nem saját munka. Az interneten találtam, mint ingyenesen használható szkriptet, és a forrás megjelölésével beintegráltam a felületbe. Az eredmény a 18. ábrán látható. -54-
18. ábra A szervizes felhasználó az ügyfél jogosultságokon kívül további funkciókat érhet el. Ügyfél adatok felvitele és módosítása. Eszköz adatok felvitele és módosítása. Új hibajegy felvitele az adatbázisba. Munka a már rögzített hibajegyekkel. Munkalap nyomtatása. 19. ábra -55-
A helpdesk jogú felhasználó az ügyfél és szervizes jogosultságokon felül a következő további funkciókat érheti el. WEB-es hibabejelentések kezelése. Hibajegy rögzítése eszközátvételkor. Megrendelő lap nyomtatása. Ügyfél/ felhasználók adatainak karbantartása. Keresés különféle szempontok szerint. Letölthető dokumentumok feltöltése a weblapra. 20. ábra A vezeto jogosultsággal felruházott felhasználó az ügyfél, a szervizes és a helpdesk jogosultságokon felül a következő további funkciókat érheti el. Munkatársak adatainak karbantartása Kirendeltségek felvitele és karbantartása Egyéb, később igényként felmerülő funkciókkal is bővíthető -56-
21. ábra A DBadmin jogosultsággal felruházott felhasználó az összes funkciót használhatja, amit a többi feladatkör használhat, de van egy kiemelt funkció, aminek elérését csak neki teszem lehetővé. Ez az adatbázis kezelő phpmyadmin felület használata. Természetesen a jogosultsági szintek bármikor bővíthetők, szintenként igény szerint új funkciókat lehet beiktatni, vagy egyes funkciók eltávolíthatók rugalmasan, ahogy a szükség kívánja. A hibajegy kezelő rendszer használata Azt már korábban láttuk, hogyan tud egy ügyfél hibajegyet létrehozni. A dolgozók számára is hasonló megoldással, adatbeviteli űrlapokon keresztül teszem lehetővé az adatok bevitelét, módosítását, törlését. Minden esetben, amikor egy hibajeggyel munkát akar valamelyik felhasználó végezni, először ki kell választani a megfelelő hibajegyet. Itt csak az aktív státuszban lévő hibajegyek jelennek meg, ami még nincs aktiválva, vagy már lezárt státuszú, az nem jelenik meg, hogy ne legyen olyan áttekinthetetlen a lista. Ezt a hibajegy_update.php fájl végzi el, és a kiválasztás gombbal továbblépve a hibajegy_feldolgozo.php fájlban lévő űrlap és adatbázis kezelő PHP utasítások teszik lehetővé az adatok kezelését. (22. ábra) -57-
22. ábra A kiválasztás gomb után meghívott űrlapon elvégezhetők a szükséges módosítások. A lényeges módosítások elvégzése esetén bekerülnek egy listába, ahol a muveletek adatbázis táblában tárolódnak és tartalmazza a műveletet, időpontját, felelőst, a módosítót és a telephely változását. Ez teszi lehetővé, hogy követhető legyen, hogy egy-egy hibajegy munkafázisait ki végezte. A 23. ábrán zöld színnel láthatók a munkafázis lista bejegyzései. Lehetőség van ezeken kívül: Új ügyfelet és új eszközt fölvenni az adatbázisba. Ügyfelek, eszközök adatait módosítani. Megrendelőt (átvételi igazolást) és munkalapot lehet nyomtatni. Ezeket a formanyomtatványokat szerepeltetem a mellékletek között. A tudásbázis lehetőséget biztosít a különféle szempontok szerinti keresésre a tárolt hibajegyek között. A dokumentumok feltöltése gombbal meghívott felületen lehet a weblapra feltölteni segédanyagokat. -58-
23. ábra -59-