E-Irattár Oracle APEX-ben Egy fejlesztés tapasztalatai
Projekt résztvevők FirstLine Experts QNSZT
Tartalom e-zóna csomag e-irattár és Apex Az APEX előnyei Kihívások a fejlesztés során
irodai termékcsomag GLOBÁLIS MEGOLDÁS, SZINKRONBAN A TERMÉSZETTEL
Globális megoldás, összhangban a természettel Szolgáltatás, amely a kimenő és beérkező elektronikus számlázást oldja meg Alkalmazás az elektronikus dokumentum kezelés, a papír dokumentum kiváltására Az elektronikus dokumentumok archiválására szolgál
Az e-számláról A papír alapú számlával teljesen egyenértékű. Sérthetetlen, mert pdf formátumú, amelyhez egy XML csatolmány tartozik. Hiteles, mert elektronikusan aláírt és minősített időbélyeggel rendelkezik, de Minden példány eredeti példánynak minősül.
Kinyomtassam ne nyomtassam? A dokumentumok és számlák elektronikusan kerülnek tárolásra? Nincs több papír rakosgatás! Elveszett a számlám, vagy mégsem!!!??? Nem találom, hogyan keressem meg? Itt a NAV/KPMG. Hiteles ez a dokumentum? Tényleg befér egy fiókba az összes dosszié?
Kinek jó ez? A cégnek, mert nem kell hatalmas hely a dokumentumok tárolására A dolgozóknak, mert könnyű keresni a dokumentumok között Az auditoroknak, mert gyorsan megkapják a szükséges anyagokat A Földnek, mert csökken a papír, festék felhasználás Önnek, mert egy hatékonyabb és környezettudatos
Hogyan működik? Azonnal elérhető web-es felület Online dokumentum fel- és letöltés Hipergyors keresés Nincs bevezetési költség csak annyit fizet amennyit használ A legkorszerűbb biztonságos dokumentum tárolás és elérés Törvényileg meghatározott és elfogadott dokumentum hitelesítés PKI alapon NAV formátumú adatszolgáltatás
Hogyan működik, a technika Az elektronikus dokumentumok (pl: e-számlák) elektronikus formában kerülnek tárolásra megadva a dokumentum metaadatait (mikor került archiválásra, ki archiválta, mik a dokumentum alapadatai) A papír alapú dokumentumokat beszkenneljük, ellátjuk a megfelelő metaadatokkal és továbbítjuk az E-Irattárba
Hogyan működik, a technika A dokumentumok a bekerülés pillanatában hitelesítésre kerülnek és ellátjuk őket időbélyeggel Az időbélyeg a dokumentum hitelességét igazolja akár 11 évig A dokumentum bármikor újra idő-bélyegezhető és korlátlan ideig tárolható
E-Irattár Oracle APEX-ben Egy fejlesztés tapasztalatai
APEX 4.1.1 Glassfish 3.1.2.2 Oracle 11gR2 XE e-irattár technológia
e-irattár - üzleti igények e-zóna programcsomag része Integráció az e-számlacentrum és az e-iktató rendszerekkel Közös autentikációs és autorizációs megoldás Rendszer/szervezet/felhasználó szintű beállítások Job kezelés Nyomon követhető javítócsomagok
e-irattár - üzleti igények Papír alapú és teljesen vagy részben elektronikus dokumentumok tárolása archivált, digitálisan aláírt és hitelesen időbélyegzett elektronikus dokumentumként Jó teljesítmény Nagy megbízhatóság Biztonság (pl. HTTPS) Szolgáltatásként és kihelyezett szerverként is
Oracle Application Express Web alapú komplett fejlesztőeszköz (RAD tool) és keretrendszer egyben Ingyenes Mint fejlesztőeszköz: közös fejlesztés támogatása (beépített issue tracker, felhasználói visszajelzés) query builder és adatbázis adminisztrációs eszközök export / import workspace, user, security debugger, log Mint keretrendszer (ld. a továbbiakban)
APEX az e-irattárban Ezért választottuk Gyors, intuitív fejlesztőeszköz Rengeteg előre elkészített "alkatrész" pl. condition-ök, validációk, automatikus rekord lekérés és adathasználat Komplett UI eszközkészlet menük, breadcrumbok, listák, riportok, stb. Űrlap, táblázat, wizard generálás Dinamikus listák Autentikáció, autorizáció Többnyelvűség támogatása Testre szabható
APEX és e-irattár - a megvalósítás MVC-jellegű felépítés 1. Model nagyrészt PL/SQL csomagok, ritka esetben közvetlenül APEX 2. View APEX 3. Controller részben APEX részben PL/SQL csomagok
APEX és e-irattár - a megvalósítás APEX alapeszközök (form, riport) Egyszerű logika (view) Összetettebb logika (PL/SQL)
Bejelentkezés és jogosultságok APEX beépített bejelentkezés Custom authentication saját fejlesztésű PL/SQL security package context-ben tárolt jogosultsági szint, login adatok SQL-ben, PL/SQL -ben és így APEX-ben is használható Séma alapú jogosultságkezelés Autorizációs sémák - érvényes/nem érvényes oldalak, régiók, oldal elemek sémához köthetők Context cache
Bejelentkezés és jogosultságok
25 beépített téma Sablonok és témák 15 oldal sablon, összesen 70-80 oldal és régió sablon témánként Könnyen testre szabható közvetlenül szerkeszthető HTML kód fájlrendszerből elérhető CSS kód 0. oldal: közös oldal elemek minden oldalon elérhető elemek egyedi láthatóság (pl. oldalszámra, jogosultság) e-irattár alapelemei: főmenü, lebegő menü, breadcrumb, info panelek, táblázatok, űrlapok
Riportok Széleskörű beépített funkcionalitás statisztikákhoz, táblázatokhoz ideális Klasszikus riport: statikus, előre konfigurált Interaktív riport: szabadon, akár felhasználó által is konfigurálható összeállítható szűrési feltételek aggregátumok, számított oszlopok grafikonok export (CSV, HTML, e-mail) oszlop láthatóság, elemszám / oldal globális és felhasználó szintű lekérdezés mentés / visszatöltés
Riportok
Szövegtár és többnyelvűség Alkalmazás szintű szövegtár Nyelvenként megadható szövegek Könnyű fordíthatóság felületen XLIFF export Elérhető APEX-ben és PL/SQL-ből egyaránt wwv_flow_lang.system_message Token csere lehetőség
Szövegtár és többnyelvűség
e-mail kezelés és queue Beépített levélküldés apex_mail csomag utl_smtp csomagra épül -> adatbázis biztonsági beállítások szükségesek (csomag jogosultság, ACL) Saját mail queue -> minden elküldött levél a sorba kerül Ütemezett, kötegelt queue ürítés SMTP beállítások az APEX adminisztrációs felületen menedzselhetők
e-mail kezelés és queue szövegtár + e-mail kezelés = nyelvfüggő, sablon alapú e-mailek
e-mail kezelés és queue l_message_text := wwv_flow_lang.system_message( p_name => MAIL_REG_SUCCESS -- Sablon neve,p0 => l_client_name -- %0 helyére: ügyfélnév,p1 => l_username -- %1 helyére: felh. név,p2 => l_password -- %2 helyére: jelszó,p3 => TO_CHAR(SYSDATE, 'YY.MM.DD HH:mm'),p_lang => hu -- szöveg nyelve,p_application_id => 101 -- alkalmazás azonosító,p_security_group_id => wwv_flow_api.get_security_group_id ); apex_mail.send ( p_to p_from p_subj p_body p_body_html ); => l_emails, => l_admin_address, => l_subject, => l_message_text, => l_message_text_html
Oracle XE: 11 GB korlát vs. e-irattár Irattárban a legnagyobb helyigény: dokumentumok -> dokumentumok tárolása a fájlrendszeren! Véletlenszerű, hash alapú fájlnevek Az adatbázisba csak a fájlnév és a meta adatok kerülnek => a 11 GB korlát csak a meta adatokra és kiegészítő táblákra érvényesül A fájlok LOB-okként kezelhetők
Oracle XE Fájl letöltés átadása a böngészőnek owa_util.mime_header('application/octet', FALSE); htp.p('content-length: ' l_length); htp.p('content-disposition: attachment; filename="' l_orig_file_name '"'); owa_util.http_header_close; wpg_docload.download_file(l_bfile);
Összetett feladat: kötegelt archiválás Feladat: kötegelt archiválás SFTP-n feltöltött dokumentumhalmazból masszív hibaellenőrzés, informatív hibajelentések betöltési folyamatok nyomon követhetősége javítási lehetőség, újraindítás, engedélyezés
Összetett feladat: kötegelt archiválás Ütemezett feladatindítás: Job scheduler Több lépéses betöltési folyamat vezérlése: Scheduler chain Fájlok összegyűjtése, áthelyezése, takarítás: Bash scriptek scheduler job-okon keresztül indítva Vezérlőfájl betöltés, ellenőrzés: XMLDB + XSD Adatkezelés, meta-adat ellenőrzés, duplikáció ellenőrzés, jogosultságok, adatfeldolgozás, stb.: PL/SQL package-ek
Összetett feladat: kötegelt archiválás Meta-adat csatolmány generálás: XMLDB Kötegelt PDF konvertálás, aláírás: Bash script + e- Szignó szerver Információs és figyelmeztető levél küldés: APEX mail Monitoring és vezérlőfelület: APEX riport + javascript
Összetett feladat: kötegelt archiválás
Összetett feladat: kötegelt archiválás
Kihívás: összetett keresés Változó mennyiségű és típusú meta-adatok Fix dokumentum attribútumok Testre szabható kritériumok Adattípustól függő beviteli mezők szám - tartomány dátum - tartomány szöveg - megadható keresési mód értéklista - dropdown Az eredmény rendezhető Minden szűrt oszlop látszik
Kihívás: összetett keresés Fix 4 oszlopos klasszikus riport speciális lekérdezés: apex_item.* csomag űrlap elem metódusai saját form/lekérdezés generátor csomag meta-adat típus azonosító alapján konkatenálja a megfelelő apex_item.* hívásokat pl. apex_item.select_list, apex_item.text, apex_item.hidden, A bevitt adatok elérhetők a wwv_flow.g_f01 - wwv_flow.g_f50 collection-ökön keresztül Keresés gomb -> metódus hívás = query string
Klasszikus riport Kihívás: összetett keresés type: SQL Query (PL/SQL function body returning SQL query) Headings Type: PL/SQL Oszlopnevek felületen: COL01...COLn de (oszlop sorszám alapján) ugyanúgy testre szabhatók! A csomagunk tovább bővült: build_search_query(...), get_headers(...) (Keresés gomb) PL/SQL -> query építés -> "cache" PL/SQL -> fejléc lekérdezés -> "cache"
Kihívás: összetett keresés:
Oracle XE vs. Oracle SE One XE 1 GB memória használatra képes XE maximum 11 GB méretű DB-t tud kezelni XE maximum 1 CPU-t használ SE One több adatbiztonsági funkcióval rendelkezik SE One jobban skálázható SUPPORT!!!
Összegzés Az APEX használata nagymértékben rövidítette a fejlesztési időt Könnyen, gyorsan hozhatóak létre a felületek Sok egyéb támogatás: több nyelv, jogosultsági rendszer, stb... Az Oracle XE a projekt fejlesztési fázisban remekül megfelel az igényeknek Később az Oracle Standard Edition One vagy az Oracle Enterprise Edition jöhet
Hasznos linkek http://apex.oracle.com http://www.apex-at-work.com http://skillbuilders.com/apex-security/ Oracle verziók összehasonlítása: http://www.oracle.com/us/products/database/standardedition/comparisons/index.html
Köszönjük a figyelmet! http://www.qnszt.hu http://www.firstline.hu http://www.ezona.hu