Sistemele de Licitatii Online
Sistemele de licitatii online
1. INTRODUCERE
2. DEZVOLTAREA UNEI APLICATII PENTRU MANAGEMENTUL LICITATIILOR ONLINE
2.1. DECLARATIA PROBLEMEI
2.2. SPECIFICAREA CERINTELOR
3.1.1. Din perspectiva sistemului
3.1.2. Din perspectiva utilizatorilor
3.3. MODELAREA SISTEMULUI
3.3.1. Arhitectura sistemului
3.3.1.1. Privire de ansamblu
3.3.1.2. Arhitectura generala a sistemului
3.3.1.2.1. Modulul de management al utilizatorilor
3.3.1.2.2. Modulul de management al profilului utilizatorului
3.3.1.2.3. Modulul de management al licitatiilor
3.3.1.2.4. Modulul de management al licitarilor
3.3.1.2.5. Modulul de management al categoriilor
3.3.1.2.6. Modulul de administrare
3.3.1.3. Componentele arhitecturii
3.3.1.4. Arhitectura cluster
3.3.1.5. Infrastructura
3.3.2. Arhitectura software
3.3.2.1. Arhitectura Three-tier (multi nivel)
3.3.2.2. Prezentarea solutiilor tehnologice folosite pentru dezvoltarea aplicatiei
3.3.2.2.1. Java
3.3.2.2.2. Jboss SEAM
3.3.2.2.3. JSF
3.3.2.2.4. Richfaces
3.3.2.2.5. Hibernate
3.3.2.2.6. Postgres
3.3.2.2.7. IntellijIDEA
3.3.2.2.8. Jboss 5.1 AS
3.3.3. Analiza sistemului
3.3.3.1. Detalierea formularelor
3.3.3.2. Drepturile utilizatorilor
3.3.3.3. Diagrama cazurilor de utilizare
3.3.3.4. Diagrama de activitati
3.3.3.4.1. Crearea unui cont nou
3.3.3.4.2. Crearea unei licitatii noi
3.3.3.5. Diagrama pachetelor
3.3.3.6. Diagrama claselor
3.3.3.6.1. Diagrama de clase pentru pachetul entity
3.3.3.6.2. Diagrama de clase pentru pachetul session
3.3.3.7. Diagrama modulelor
3.3.3.8. Schema bazei de date
4. PREZENTAREA APLICATIEI
4.1. SCOP
4.2. CERINTELE GENERALE PENTRU ACCESAREA SISTEMULUI
4.3. MANUALUL DE UTILIZARE AL APLICATIEI
5. CONCLUZII
BIBLIOGRAFIE
ANEXE
ANEXA 1. SCRIPTURI CREARE BAZA DE DATE
ANEXA 2. CODUL SURSA
Introducere
Pe plan mondial se observa o crestere sporita a persoanelor care efectueaza tranzactii prin sistemel de licitatii online. Aceste sisteme faciliteaza posibilitatea de achizitionare / vanzare produse intr-un mod cat mai elegant si simplu, din fotoliul propriei case. Urmand numai cativa pasi simpli, puteti intra in posesia produsului dorit fara a va deplasa din confortul casei. De asemnea, prin intermediul sistemelor de licitatii online se pot obtine preturi mai bune ale produsului dorit. Totodata vanzatorii au ocazia sa scoata profit datorita modului concurential in care se desfasoara activitatile de licitatii. De asemnea, internetul in Romania creste in fiecare an. In acelasi ritm observam si o crestere a numarului de tranzactii care sunt effectuate online, prin intermediul cardurilor bancare. Tot mai multi romani prefer sa cumpere online si datorita faptului ca pot obtine oferte mai bune.
Piata principal pentru sistemele de licitatii online este reprezentata de piata de electronice. Acestea sunt tranzactionate online in numarul cel mai mare.
Necesitatea oamenilor de a cumpara/vinde online nu este de ajuns pentru atingerea obiectuvului. Sistemele online, bazate pe actiuni ale utilizatorilor necesita un grad mediu de intelegere a fenomenului IT, cat si abilitati tehnice necesare pentru ducerea la bun sfarsit a operatiilor necesare listarii unei licitatii din cadrul unui system online. Inainte de toate utilizatorii trebuie invatati sa foloseasca sistemul intr-un mod optim.
Sistemul trebuie sa ofere un grad ridicat de protective al datelor cu character personal, mai ales daca se efectueaza tranzactii financiare prin cadrul lui.
Lucrarea de fata prezinta modul prin care utilizatorii internetului pot achizitiona produsele dorite printr-un sistem de licitatii dedicat.
Dezvoltarea unei aplicatii pentru managementul licitatiilor online
Declaratia problemei
Se doreste realizarea unui sistem pentru managementul licitatiilor online. Sistemul va reprezenta legatura dintre vanzatori si cumparatori. Vanzatorii vor putea scoate la vanzare anumite produse, vor putea seta valori minime de la care poate incepe licitatia si durata acestor licitatii.
Cumparatorii vor putea sa liciteze pentru produsele active aflate in sistem. Totodata acestia vor putea cere informatii suplimentare de la vanzator cat sa si vizualizeze celelalte licitari pentru un anumit produs.
Totodata sistemul va pune la dispoztiei posibilitatea de inregistrare noi utilizatori, de activare conturi. Pentru facilitarea acesului utilizatorilor la sistem, acesta trebuie sa fie browser based si sa fie compatibil cu cele mai importante browsere ale momentului, precum Firefox, Internet Explorer 8 sau Chrome.
Sistemul va pune la dispozitie un mecanism securizat de autentificare si de acces la resurse, la pagini aplicatiei.
Pentru administrator va exista posibilitatea de management al intregilor operatii ce se efectueaza in sistem. De crearea de utilizatori, de anularea de licitatii cat si de banarea utilizatorilor care creeaza probleme si managementul categoriilor pe care se pot depune licitatii.
Specificarea cerintelor
Din perspectiva sistemului
Aplicatia eLicitatii se va folosi de un sistem de stocare dat, baza de date pentru a tine informatiile necesare desfasurarii in conditii optime a procesului de licitatii. De asemnea acesta va rula pe un server de aplicatii, astfel putand fi accesat de catre mai multi utilizatori concomitant, fara a fi nevoie de instalarea unui client local pentru fiecare utilizator in parte.
In sistem vor putea fi identificati 4 tipuri de utilizatori : vizitatori, utilizatori confirmati, administratori, utilizatori banati.
Ca un utilizator sa poata folosi la maxim aplicatia de licitatii online, acesta trebuie sa se inregistreze in cadrul sistemului sis a confirme adresa de email. Utilizator va trebui sa introduca anumite informatii personale pentru a putea deveni acceptat in cadrul sistemului.
Atat vizitatorii cat si utilizatori inregistrati pot naviga printer categoriile definite in sistem, pot vedea licitatiile active, dar numai cei inregistrati pot licita.
De asemnea un utilizator inregistrat poate sa urmareasca o licitatie la care nu a licitat. Acesta, dupa autentificare va avea optiunea de vizualizare a listei sale de licitatii urmarite si daca este cazul poate sa liciteze mergand in pagina specifica acelei licitatii.
Dupa finalizarea unei licitatii, atat vanzatorul cat si cumparatorul poate acorda o anumita nota celeilalte parti implicate in tranzactie.
O functionalitate importanta a sistemului este reprezentata de licitatiile populare. Imediat ce un tilizator acceseaza aplicatia, acestuia ii vor fi afisate primele 10 productie in ordinea popularitatii, Popularitatea unui produs este data de numarul de accesari pe care acel produs il primeste din parte altor utilizatori.
Pentru realizarea schimbului de informatii intr-un mod cat mai rapid intre comparator si vanzator, sistemul pune la dispozitie un sistem de comunicare intern. Astfel utilizatorii inregistrati por trimite mesaje scurte de la unul la celalalt. Totodata utilizatorii pot posta mesaje direct in pagina de licitatie a unui anumit produs.
Din perspectiva utilizatorilor
Utilizatorii care vor efectua operatii in cadrul sistemului au niveluri diferite de intelegere a mediului IT, ca urmare au aptitudini diferite in manipularea aplicatiilor online.
Se identifica 4 tipuri de utilizatori :
Vizitatorii: acestia sunt vizitatorii aplicatiei care nu au inca un cont sau nu sunt sutentificati. Acestia au acces limitat in cadrul sistemului.
Utilizatorii : Acestia sunt persoanele care si-au confirmat conturile in cadrul sistemului si s-au autentificat in aplicatie.
Administratorii: Reprezinta utilizatori cu drepturi special care pot modera, bana, anula licitatii, utilizatori din cadrul sistemului. Acestia urmaresc la buna functionare a aplicatiei de licitatii online.
Utilizatorii banati : Acestia reprezinta o categorie de utilizatori care nu s-au conformat regulilor sistemului si au fost exclusi din acesta de catre administratori.
3.3. Modelarea sistemului
Arhitectura sistemului
Sistemul, fiind expus in internet, presupune anumite riscuri care trebuie minimizate. De asemnea trebuie sa se aiba in vedere posibilitatea de scalare si de extindere a sistemului, in functie de numarul de utilizatori care-l acceseaza.Arhitectura generala a sistemului trebuie sa permita inserarea de component hardware, astfel incat sistemul sa poata functiona in parametri maximi. De asemnea, arhitectura sistemului trebuie sa tina cont de faptul ca uptime-ul sa fie maxim. Acesta trebuie sa se situeze la 99,9 %. Din cauza acestui lucru, toate operatiile de mententanta si suport ale sistemului trebuie sa se realizeze fara oprirea activitatii.
Privire de ansamblu
Arhitectura generala a sistemului
Modulul de management al utilizatorilor
Modulul pune la dispozitia administratorilor posibilitatea de management al utilizatorilor din sistem. Totodata modulul pune la dispozitie metodele de inregistrare in cadrul aplicatiei de licitatii. Acesta se va ocupa de managementul parolelor. Totodata in cadrul acestui modul, administratorii pot sa activeze si sa dezactiveze utilizatori.
Modulul de management al profilului utilizatorului
Utilizatorii din cadrul sistemului pot administra profilul pe care-l au. Acest lucru se realizeaza in cadrul modului de Management Profil.
Modulul de management al licitatiilor
Acest modul este responsabil cu managementul licitatiilor din intreg sistemul. Fiecare utilizator, in functie de tipul pe care-l detine, va putea initia sau participa la licitatii deja active. Din cadrul acestui modul general de management al licitatiilor se vor putea initia cat si anula licitatii. Se vor putea depune documente cerute in cadrul licitatiei.
Modulul de management al licitarilor
Acest modul permite utilizatorilor cu drepturi sa administreseze toate informatiile legate de licitatiile din sistem. Pot fi sterse licitatii active, sau chiar anula unele din ele care nu respecta standardele impuse de sistem.
Modulul de management al categoriilor
In cadrul sistemului se vor putea depune licitatii pe un nenumarat numar de directii, de categorii. Aceste categorii se vor administra din modulul de administrare categorii. Vor exista doua zone disponibile in acest modul. Unul pentru adminii sistemului cat si o zona limitata a modului pentru utilizatorii non admini.
Modulul de administrare
Administratorii sistemului sunt signurii utilizatori care au acces in modulul de administrare. Din acest modul se pot administra utilizatorii sistemului. Totodata se pot bana utilizatorii care nu respecta regulile minime impuse.
Componentele arhitecturii
Arhitectura sistemului informatic eLicitatii include urmatoarele componente:
Arhitectura cluster
Sistemul informatic trebuie sa aiba un uptime considerabil. Pentru acest lucru s-a decis realizarea unui cluster in care aplicatia sa poata fi deployata. S-a creat un cluster active-active cat si o zona redundanta, care sa intre in functiune in cazul in care clusterul activ-activ ar fi picat. De asemnea, s-a dorit aceasta zona pentru a se folosi in cazul update-urilor de sistem. In cazul in care se executa o interventie, clusterul pasiv este pornit. Se opreste clusterul activ, se realizeaza operatiile de mentenanta, dupa care se porneste zona activa. Dupa care, aceasta zona de backup este updatatata si ea. Astfel timpul de mentenanta este redus la minim.
Infrastructura
Arhitectura software
Una din cerintele importante ale sistemului este timpus de raspuns, care trebuie sa fie sub 2 sec pe fiecare request. Ca urmare procesarile realizate de sistem trebuie sa fie optimizate. Operatiile asincrone cat si operatiile multithreading sunt o necesitate pentru a obtine performantele ridicate. Ca urmare o parte a procesarii trebuie sa fie mutata catre zona de client, in special procesarea de randare, zona de manipulare a domului, zona de view. Astfel server side se vor realiza doar operatiile strict de business, fara a se pierde timp si cu pregatirea datelor pentru istrare categorii. Vor exista doua zone disponibile in acest modul. Unul pentru adminii sistemului cat si o zona limitata a modului pentru utilizatorii non admini.
Modulul de administrare
Administratorii sistemului sunt signurii utilizatori care au acces in modulul de administrare. Din acest modul se pot administra utilizatorii sistemului. Totodata se pot bana utilizatorii care nu respecta regulile minime impuse.
Componentele arhitecturii
Arhitectura sistemului informatic eLicitatii include urmatoarele componente:
Arhitectura cluster
Sistemul informatic trebuie sa aiba un uptime considerabil. Pentru acest lucru s-a decis realizarea unui cluster in care aplicatia sa poata fi deployata. S-a creat un cluster active-active cat si o zona redundanta, care sa intre in functiune in cazul in care clusterul activ-activ ar fi picat. De asemnea, s-a dorit aceasta zona pentru a se folosi in cazul update-urilor de sistem. In cazul in care se executa o interventie, clusterul pasiv este pornit. Se opreste clusterul activ, se realizeaza operatiile de mentenanta, dupa care se porneste zona activa. Dupa care, aceasta zona de backup este updatatata si ea. Astfel timpul de mentenanta este redus la minim.
Infrastructura
Arhitectura software
Una din cerintele importante ale sistemului este timpus de raspuns, care trebuie sa fie sub 2 sec pe fiecare request. Ca urmare procesarile realizate de sistem trebuie sa fie optimizate. Operatiile asincrone cat si operatiile multithreading sunt o necesitate pentru a obtine performantele ridicate. Ca urmare o parte a procesarii trebuie sa fie mutata catre zona de client, in special procesarea de randare, zona de manipulare a domului, zona de view. Astfel server side se vor realiza doar operatiile strict de business, fara a se pierde timp si cu pregatirea datelor pentru view.
Arhitectura n-tier este cea mai potrivita solutie pentru sistemul de licitatii online, cu toate ca la prima vedere arhitectura 2-tier ar fi fost mai indicata, datorita numarului de straturi prin care un request ar fi trebuit transmis. Insa arhitectura 2-tier ofera mentenabilitate scazuta cat si posibilitatea redusa de scalare pe viitor. De asemnea procesarea multi-server s-ar fi pierdut odata cu alegerea unei arhitecturi 2-tier. Folosindu-se arhitectura n-tier, bucati de procesare de business se pot muta pe diferite servere si folosindu-se posibilitatile oferite de operatiile asincrone, se poata obtine rezultatul si timpul de raspuns dorit. De asemnea pentru obtinerea performantelor sporite se foloseste cacheing peste tot prin aplicatie.
Sistemul trebuie sa ofere posibilitatea interconectarii cu alte sisteme informatice. De asemnea alte sisteme trebuie sa aiba posibilitatea de a accesa date din eLicitatii. Ca urmare zonele de statistici sau zonele de rapoarte se vor expune prin servicii web.In sistem se folosesc atata serivicii SOA cat si servicii REST. Serviciile SOAP se folosesc la integrarile cu alte sisteme in special sisteme legacy. Serviciile REST vor fi folosite mai mult in cadrul aplicatiei, pentru realizarea unei modularizari cat mai mari a sistemului. Totodata, daca in viitor se va dori expunerea altor functionalitati catre exterior, acest lucru se va realiza fara modificari. Se va deploya respectivul serviciu REST astfel acesta putand fi accesat fara probleme din afara sistemului de licitatii.
Arhitectura Three-tier (multi nivel)
Arhitectura three-tier este o arhitectura client – server in care interfata utilizatorului, procesarea functionala, stocarea datelor, accesul la date sunt dezvoltate si mentiunute independent una de cealalta. Cateodata chiar pe platform diferite. In afara de avantajele realizarii unui software modular, arhitectura three-tier permite actualizarea intregilor sale component independent una de cealalta.
Arhitectura three-tier contine urmatoarele component :
Nivelul de prezentare : este nivelul de sus al unei aplicatii. Acesta afiseaza informatii catre utilizatori intr-un mod visual, in care acestia, utilizatorii pot interactiuna cat mai usor cu restul aplicatiei. Utilizatorii pot vizualiza categorii in cadrul sistemului, pot efectua diferite operatii prin apasarea sau accesarea meniurilor special realizate pentru ei. Nivelul de prezentare comunica cu celelalte niveluri prin afisarea rezultatului in browser.
Nivelul aplicatiei (Nivelul logic) : Acesta vine imediat dupa nivelul de prezentare, dar ca si primul, efectueaza si controleaza functionalitatile unei aplicatii. In acest nivel se efectueaza cele mai multe operatii de business si se iau deciziile asupra informatiilor care se prezinta catre client, se efectueaza validari de business.
Nivelul de date : pe acest nivel se gasesc serverele de baze de date. La acest nivel se stocheaza sau se citesc date din bazele de date.
Beneficiile folosirii unei arhitecturii three-tier (multi-nivel) pot fi :
Performanta crescuta
Scalabilitate
Flexibilitate
Mentenabilitate
Refolosirea componentelor foarte usor
Prezentarea solutiilor tehnologice folosite pentru dezvoltarea aplicatiei
Java
Java este o tehnologie inovatoare lansata de compania Sun Microsystems in1995, care a avut un impact remarcabil asupra intregii comunitat si a dezvoltatorilor de software, impunandu-se prin calitati deosebite cum ar fi simplitate, robustete si nu in ultimul rand portabilitate. Denumita initial OAK tehnologia Java este formata dintr-un limbaj de programare de nivel inalt pe baza caruia sunt construite o serie de platforme destinate implementarii de aplicatii pentru toate segmentele industriei software.
Dintre caracteristicile principale ale limbajului putem aminti :
Simplitate – elimina supraıncarcarea operatorilor, mostenirea multipla
si toate facilitatile ce pot provoca scrierea unui cod confuz.
Usurinta ın crearea de aplicatii complexe ce folosesc programarea ın retea, fire de executie, interfata grafica, baze de date.
Robustete – elimina sursele frecvente de erori ce apar ın programare
prin renuntarea la pointeri, administrarea automata a memoriei ¸si eliminarea pierderilor de memorie printr-o procedura de colectare a obiectelor care nu mai sunt referite, ce ruleaza ın fundal (”garbage collector”).
Complet orientat pe obiecte – elimina complet stilul de programare procedural.
Securitate – este un limbaj de programare foarte sigur, furnizand mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamica a codului pentru detectarea secventelor periculoase, impunerea unor reguli stricte pentru rularea proceselor la distanta.
Neutralitate arhitecturala – comportamentul unei aplicatii Java nu
depinde de arhitectura fizica a masinii pe care ruleaza.
Portabililtate – Java este un limbaj independent de platforma de lucru,aceeasi aplicatie ruland fara nicio modificare ¸si fara a necesita recompilarea ei pe sisteme de operare diferite cum ar fi Windows, Linux, Mac OS, Solaris, lucru care aduce economii substantiale firmelor
dezvoltatoare de aplicatii.
Este compilat si interpretat, aceasta fiind solutia eficienta pentru obtinerea portabilitatii.
Performanta – desi mai lent decat limbajele de programare care genereaza executabile native pentru o anumita platforma de lucru, compilatorul Java asigura o performanta ridicata a codului de octeti, astfel ıncat viteza de lucru putin mai scazuta nu va fi un impediment ın dezvoltarea de aplicatii oricat de complexe, inclusiv grafica 3D, animatie.
Este modelat dupa C si C++, trecerea de la C, C++ la Java facandu-se foarte usor.
Limbajul de programare Java a fost folosit la dezvoltarea unor tehnologii dedicate rezolvarii unor probleme din cele mai diverse domenii. Aceste tehnologii au fost grupate ın asa numitele platforme de lucru, ce reprezinta seturi de librarii scrise ın limbajul Java, precum si diverse programe utilitare, folosite pentru dezvoltarea de aplicatii sau componente destinate unei anume categorii de utilizatori.
J2SE (Standard Edition)
Este platforma standard de lucru ce ofera suport pentru crearea de aplicatii independente si appleturi. De asemenea, aici este inclusa ¸si tehnologia JavaWeb Start ce furnizeaza o modalitate extrem de facila pentru lansarea ¸si instalarea locala a programelor scriseın Java direct de pe Web, oferind cea mai comoda solutie pentru distributia si actualizarea aplicatiilor Java.
J2ME (Micro Edition)
Folosind Java, programarea dispozitivelor mobile este extrem de simpla, platforma de lucru J2ME oferind suportul necesar scrierii de programe dedicate acestui scop.
J2EE (Enterprise Edition)
Aceasta platforma ofera API-ul necesar dezvoltarii de aplicatii complexe, formate din componente ce trebuie sa ruleze ın sisteme eterogene, cu informatiile memorate ın baze de date distribuite. Tot aici gasim ¸si suportul necesar pentru crearea de aplicatii si servicii Web, bazate pe componente cum ar fi servleturi, pagini JSP.
Jboss SEAM
Jboss Seam este un framework pentru dezvoltarea aplicațiilor web, care integrează componentele JSF pentru nivelul de prezentare, iar componentele EJB pentru nivelul de logică și persistență (ce ruleaza pe server). Specificațiile Java EE5 nu oferă nici un standard pentru integrarea acestor componente, dar întrucât cele doua oferă puncte standard de extensie, Seam profită de acest lucru.
JBoss Seam integreaza diferite tehnologii:
clienții AJAX pot apela componente ce rulează pe server datorită integrării unui nivel bazat pe Javascript care facilitează acest lucru
Seam integrează management-ul unui Business Process prin intermediul JBoss jBPM
întrucât EJB 3.0 schimbă natura EJB-urilor din punctul de vedere al dezvoltării aplicațiilor, Seam rupe separarea dintre nivelul de prezentare și cel de logică
inspirat de conceptul managementului declarativ al tranzacțiilor sau securitații pentru EJB-uri, Seam oferă un management declarativ al stărilor care face inutilă setarea și retragerea manuală a atributelor din sesiunea servlet-urilor
Seam a fost gandit de jos in sus in ideea de a elimina complexitatea atat la nivelul arhitecturii cat si la nivelul API-ului de dezvoltare. Permite dezvoltatorilor sa dezvolte aplicatii web prin simpla folosire a adnotarilor, folosind un set de componente de interfata complexe si variate.
Imaginea de mai jos ofera o perspectiva de anasmablu asupra arhitecturii Seam.
Ca si framework de dezvoltare, SEAM acopera cele trei straturi ale arhitecturii three-tier.
Straturi
Stratul de prezentare : la randarea stratului de prezentare se folostese XHTML si CSS. Frameworkul SEAM permite stratului de prezentare sa comunice cu stratul aplicatiei, business logic, folosind componente special dezvoltare si encapsulate in cadrul frameworkului. Seam foloseste reflection pentru initializarea, si descoperirea componentelor sale, astfel dezvoltatorul poate lucra intr-un mode abstract. In momentul in care o pagine este ceruta catre serverul de aplicatie, Seam instantiaza toate componentele necesare efectuarii operatiei cerute si afiseaza valorile proprietatilor cerute. Totodata este foarte usor de completat proprietatile unui formular, deoarece acesta, formularul este cuplat direct pe clase POJO.
Nivelul de business (nivelul logic) (JBoss AS) : Seam ruleaza fara probleme si se integreaza cu Jboss AS. Jboss AS este un server de aplicatii special pentru Java, Open Source care ruleaza peste majoritatea sistemelor de operare existente in prezent. Acesta are integrat un container de EJB-uri cat si suport soporit pentru JMS, JMX si tranzactii distribuite. Serveruk este dezvoltat peste containerul web de la tomcat, catalina. Acesta din urma se ocupa cu prezentarea catre client a informatiilor cerute, este componenta serverului HTTP (Web).
Nivelul datelor : pentru acest nivel au fost luate in considerare doua baze de date Mysql si PostresSQL. In cele din urma a ramas PostgresSQL. Totusi, decizia asupra bazei de date nu este o decizie foarte importanta in cazul in care se lucreaza cu SEAM. Acesta permite abstractizarea modului de lucru cu bazele de date aducand un strat de abstractizare, ORM. SEAM-ul se integreaza cu Hibernate, astfel rezultand o extensibilitate sportita asupra deciziei legate de baza de date aleasa. Seam pune la dispozitie o mare varietate de adnotari in lucrul cu bazele de date.
Chiar daca Seam eleimina necesitatea pentru selecturi native, exista totusi pozibilitatea de a comunica direct cu baza de date prin Hibernate Query Language (HQL), care extinde la randul sau suportul Seam de lucru cu bazele de date relationale.
Adnotari
Framewolul Seam permite folosirea unei game largi de adnotari. Se pot observa doua mari categorii :
Adnotari pentru lucrul cu bazele de date. Aceste adnotari permit unui programator ca defineasca proprietatile unui tabel din baza de date la nivelul claselor de mapare, POJO. Aceste obiecte, POJO, encapsuleaza diferite properietati si pun la dispozitie gettere si settere pentru aceste proprietati. Frameworkul Seam va crea cate o clasa pentru fiecare tabela din baza de date, continand definitia pentru fiecare coloana. Urmatoarele adnotari sunt folosite pentru definirea unui bean (POJO) care descrie o tabela din baza de date :
@Table – defineste numele tabelei pe care se mapeaza beanul;
@NotNull – forteaza o coloana sa nu primeasca valori nule;
@ManyToOne, @OneToMany, @OneToOne – defineste cardinalitatea unei proprietati.
Seam pune la dispozitie si alte adnotari care sunt folosite in ciclul de validare in momentul persistarii datelor sau al update-ului de date.
Cateva dintre cele mai folosite adnotari la nivelul tuturor straturilor :
@Name – defineste o componenta seam
@In – injecteaza o componenta seam in alta componenta
@Factory – expune o proprietate ce devine accesibila in scopul definit
Componente alte frameworkului Seam
Componentele Seam reprezinta o legatura intre business logic si view-ul aplicatiei, nivelul de prezentare. Cum am explicat mai sus, componentele Seam sunt intializate in momentul unui request si valorile lor sunt mapate pe formele fi campurile formelor XHTML. Pe langa componentele definite de dezvoltatori, Seam pune la dispozitie un set standard special dezvoltate pentru usurarea procesului de dezvoltare. Dintre acestea putem aminti :
EntityManager – reprezinta conponenta de abstractizare peste zona de tranzactii ale sistemului dezvoltat. Prin aceasta componenta se executa operatiile cu baza de date
FacesMessage – afiseaza diferitele mesaje in interfata, utilizatorului.
JSF
Prezentare generala
JSF (Java Server Faces) este o tehnologie opensource ce a apărut în anul 2001, cu ajutorul căreia putem dezvolta interfețe Web. JSF-ul are la bază șablonul MVC (Model View Controller), ceea ce presupune separarea interfeței cu utilizatorul, a părții de business logic, și a modelului. JSF-ul pune la dispoziția programatorilor o serie de componente JSF standandard, ce vor fi transpuse în elemente de interfață.
Puterea acestui framework se bazează tocmai pe flexibilitatea acestor componente, care pot fi reutilizate, și pot fi extinse pentru a da viață unei aplicații web conform cu cerințele utilizatorilor săi.
Un aspect important al aplicațiilor web de care JSF-ul ține cont este salvarea și reîncărcarea stării unei pagini web. JSF-ul se ocupă de acest lucru cu ajutorul clasei StateManager, care salvează și recuperează starea unui anumit view. Există două alternative pentru a face acest lucru: la nivelul clientului sau la nivelul serverului.Functionalitati oferite de JSF:
Dintre optiunile puse la dispozitie de JSf amintim :
permite crearea UI folosind componente standard, reutilizabile
permite accesarea si manipularea componentelor UI folosind taguri JSP
salveaza starea componentelor UI când clientul face o solicitare pentru o nouă pagină și o restaureaza când solicitarea este returnată (asigura persistenta starii la nivel Web)
ofera un model de interactiune bazat pe evenimente
furnizeaza mecanisme pentru dezvoltarea de componente proprii
separa prezentarea componentelor de functionalitate, astfel incat acestea sa poata fi utilizate in pagini HTML, WML, etc
simplifica modul de creare a IDE-urilor pentru dezvoltarea de aplicatii Web
Componente JSF:
Componentele JSF se gasesc la nivelul View-ului. Astfel, View-ul este construit din grupuri de componente, păstrate într-o ierarhie de tip arbore, permițându-se accesul la o anumită componentă pe baza unui index.
O componentă JSF reprezintă un grup de clase ce interacționează între ele, punând la dispoziția programatorului cod reutilizabil pe partea de interfață cu utilizatorul. Sarcinile unei componente în general sunt: generarea de cod pe partea de client (de exemplu html), validarea inputurilor și conversia de date.
După cum am menționat mai sus, JSF-ul pune la dispoziția programatorilor o serie de componente standard, precum componente ce generează cod pe partea de client și componente ce oferă suport pentru validare sau conversie de date. Un exemplu de componentă este UIInput care face parte din componentele JSF standard. Această componentă pune la dispoziție elementul html input text, cu ajutorul renderului HtmlInputText, sau al renderelui HtmlInputHidden etc. Alte componente standard sunt: UIData, UIColumn, UICommand, UIForm, UIGraphic etc. Pe lângă aceste componentente standard, există o serie de alte implementări, care mai de care mai puternice și mai complicate. Printe acestea enumerăm: MyFaces, RichFaces, IceFaces etc.
O componentă JSF este alcatuită din următoarele elemente:
clasă de tipul UIComponent (derivată din UIComponentBase sau extinsă dintr-o altă componentă, cum ar fi HtmlOutputText. Aceasta are rolul de a accesa date de pe partea de model
una sau mai multe clase Render: se ocupă cu generarea componentei pe partea de client, și cu conversia datelor introduse de utilizator în valori pe care componenta să le poată înțelege. Acesta este opțional, sarcinile acestuia pot fi îndeplinite și de către clasa componentă.
clasa Tag: o clasă handler care permite reutilizarea componentei în interiorul paginilor JSP.
fișier .tld (Tag Library Descriptor): permite asocierea clasei handler cu un tag JSP, pentru că JSF-ul trebuie să urmeze regulile JSP-ului.
De fiecare dată când un tag este deschis, va fi apelată metoda encondeBegin a componentei asociate, iar atunci când un tag este închis va fi apelată medota encodeEnd. Metoda encodeChildren va procesa copiii componentei dacă getRenderChildren returnează true.
Ciclul de viata a unei componente JSF
Clientul face o cerere HTTP pentru o pagină, serverul răspunde, asemanator JSP – urilor Dar, datorită puterii JSF-ului, tratarea unei cereri se face cu ajutorul unor servicii suplimentare.
Când clientul trimite o cerere, JSF-ul trebuie să îndeplinească mai multe sarcini cum ar fi validarea datelor și conversia acestora. Acestea fac parte din fazele vieții JSF-ului. Numele acestor faze sunt:
Restore View: atunci când este făcută o cerere pentru o pagina JSF.În timpul acestei faze, JSF-ul construiește/reconstruiește view-ul paginii și îl salvează într-o instanță FacesContext.
Apply Request Values: se apelează după construirea arborelui de componente.
Validation: în timpul acestei faze, fiecare componentă procesează toți validatorii înregistrați.
Update Model: se realizează actualizarea datelor pe partea de model pentru a corespunde cu datele de pe partea de componentă.
Invoke Application: procesarea action-urilor și a actionListenere-lor.
Render Response: generarea răspunsului pentru client și salvarea stării.
Richfaces
Introducere
Framerworkul este implementat ca o librarie de componente care adauga suport AJAX paginilor existente fara nevoia de a scrie Javascript. Se pot defini evenimente care invoca executa requesturi AJAX. Mai jos este prezentat modul in care Richfaces lucreaza.
Totodata, in figura de mai jos sunt preentate cateva din elemetele frameworkului Richfaces.
Hibernate
Hibernate este un tool de mapare orientat-obiect/relațional și necesită metadata pentru a putea transforma datele din o reprezentare în alta. În Hibernate 2.x, metadata de mapare este cel mai des declarată în fișiere XML. Specificațiile EJB3 susțin paradigma mapării transparente între cele două medii, creând astfel standardul pentru API-ul de bază și metadata necesară pentru orice mecanism de persistență obiectula/relațional.
Hibernate EntityManager reprezintă implementarea interfețelor și a regulilor ciclului de viață definite de către specificațiile persistenței EJB3 și, împreună cu Hibernate Annotations oferă o soluție completă de persistență EJB3.
Hibernate 3.4 este creat pe baza versiunii finale a specificațiilor EJB3.0/JPA și oferă suport pentru toate feature-urile, inclusiv cele opționale. Există o serie de Hibernate feature ce nu pot fi incă exprimate prin adnotări.
Entitățile nu sunt salvate sau șterse automat din baza de date. Aceste sarcini țin de Business Logic care trebuie să manipuleze entitățile și să le gestioneze durata de viata persistentă. JPA furnizează interfața Entity Manager în acest scop pentru a lasa aplicația să gestioneze și să regasească entitățile în baza de date relațională. Aplicațiile de persistență pot fi definite ca un parteneriat între aplicație și furnizorul de persistență. JPA aduce un nivel de control și flexibilitate care nu ar putea fi atins fără participarea activă a aplicației.
Contexte de persistență și unități de persistență
O unitate de persistență este o configurare numită a claselor entități. Un context de persistenta este un set de instanțe de entitați gestionate. Fiecare context de persistență este asociat cu o unitate de persistență, restricționând clasele de instanțe gestionate la setul definit de unitatea de persistență. A spune ca o instanță de entitate este gestionată ("managed") înseamna ca ea este conținută într-un context de persistență și că se poate acționa asupra ei cu un entity manager. Din acest motiv putem afirma că un entity manager gestionează un context de persistență.
Includerea sau excluderea dintr-un context de persistență va determina rezultatul oricărei operații persistente asupra ei. Dacă contextul de persistență participă într-o tranzacție atunci, starea reținută a entităților gestionate va fi sincronizată cu baza de date. Totuși, în ciuda rolului important pe care îl joacă, contextul de persistență nu este de fapt niciodată vizibil aplicației. El este întotdeauna accesat indirect prin entity manager.
Tipuri de entity managere și obținerea lor
Java Persistence API definește nu mai puțin de trei tipuri diferite de entity manager, fiecare dintre ele aducând o abordare distinctă a contextului de persistență gestionat, fiind legata de diferite necesități ale aplicației.
Postgres
PostgreSQL este un sistem de baze de date relationale. Este disponibil gratuit sub o licentă open source de tip BSD. PostgreSQL nu este controlat de nici o companie, își bazează dezvoltarea pe o comunitate răspândită la nivel global, precum și câteva companii dezvoltatoare.
Limitări
Câteva limitări generale
Dimensiunea maximă a bazei de date: nelimitat
Dimensiunea maximă a unei tabele: 32 TB
Dimensiunea maximă a unei înregistrări: 1,6 TB
Dimensiunea maximă a unui câmp: 1 GB
Număr maxim de înregistri într-o tabelă: nelimitat
Număr maxim de coloane într-o tabelă: 250 – 1600 în funcție de tipul coloanelor
Limbaj procedural
PostgreSQL permite folosirea limbajelor procedurale pentru a executa blocuri de cod direct în serverul de baze de date. Se pot folosi pentru a crea funcții definite de utilizator (subrutine, trigerre, agregate și funcții fereastră) sau pentru a crea blocuri ad hoc "DO". Instalarea standard a PostgreSQL permite utilizarea urmatoarelor limbaje:
PL/pgSQL, un limbar asemănator cu PL/SQL existent in Oracle.
PL/Tcl, pune la dispoziție Tcl
PL/Perl, pune la dispoziție Perl
PL/Python, pune la dispoziție Python, versiunea 2 sau 3.
Alte limbaje disponibile în afara pachetului de bază includ: PL/Java, PL/php, PL/Ruby.
Indecși
La fel ca și alte baze de date, PostgreSQL permite utilizarea indecșilor pentru accelerarea interogarilor. Suporta mai multe tipuri de indecși: B-tree, Hash, GiST sau GIN. Daca tipul nu este specificat la crearea indexului, se utilizează B-tree. Alte caracteristici suportate:
Valorile indecșilor pot fi calculate printr-o expresie sau o funcție.
Indecși parțiali permit să se indexeaze doar o parte dintr-o tabelă. Pot fi creați prin specificarea unei clauze WHERE la sfârșitul unei comenzi CREATE INDEX.
Planificatorul este capabil să folosească mai mulți indecși pentru a executa interogări complexe.
Imaginea de mai jos ilustreaza arhitectura generala a sistemului PostgresSQL
De asemnea componenta Query Processor :
IntellijIDEA
IntellijIDEA este unul din cele mai dezvoltate IDE-uri pentru Java existente in acest in piata de profil. Acesta vine cu o sumedenie de pluginuri care fac munca de dezvoltare mult mai usoara. Cea mai importanta functie a unui IDE este data de code completion. IntellijIDEA are un sistem de code completion bazat pe recunoasterea contextului de lucru si pe analiza variabilelor / claselor din jurul liniei la care ne aflam. Astfe, acesta incearca sa propuna dezvoltatorului cea mai buna optiune.
Vine cu integrari pentru :
Teste junit si testng
Maven si ant
Suport pentru limbajul de programare groovy
Suport pentru hibernate
Suport pentru seam
Suport pentru GWT, JavaScript
De asemnea pentru dezvoltatorii experimentati, IntellijIDEA permite dezvoltarea de pluginuri custom care sa faca munca de dezvoltare ult mai usoara. Aceste pluginuri de pot deploya in repository-ul intretinu de JetBrains, firma din spatele toolului IntellijIDEA.
Jboss 5.1 AS
JBoss Enterprise Application Platform este platforma de baza pentru aplicatiile Java.
Prin integrarea tehnologiilor de varf de piata intr-o singura solutie, simpla, JBoss Enterprise Application Platform face deosebit de facila dezvoltarea, implementarea si administrarea aplicatiilor Java. Contine tehnologii de varf open source pentru crearea si gazduirea de aplicatii Java si servicii in Service Oriented Architecture. JBoss Enterprise Application Platform face enterprise Java simpla, deschisa si accesibila.
JBoss Enterprise Application Platform realizeaza un echilibru intre inovatie si stabilitate. Prin integrarea celui mai popular server de aplicatii cu application frameworks de ultima generatie intr-o singura subscriptie simpla, JBoss Enterprise Application Platform imbunatateste productivitatea dezvoltatorilor, elimina complexitatea dezvoltarii in Java si simplifica dezvoltarea aplicatiilor critice.
Application Platform contine JBoss Application Server, serverul de aplicatii Java si servicii web si integreaza: Jboss Hibernate si JBoss Seam.
Beneficii
Foloseste standarde open
Imbunatateste productivitatea utilizatorului
Inovatie cu stabilitate
Performanta de nivel enterprise
JBoss Aplication Server: cel mai folosit server de aplicatii de pe piata. O platforma Java certificata pentru dezvoltarea si implementarea de aplicatii enterprise. JBoss Application Server suporta API-urile traditionale cat si Java EE API si contine performanta si scalabilitate imbunatatita. JBoss Application Server contine suport extins pentru facilitate Java EE 5 cum ar fi: EJB 3.0, Java Persistence API 1.0, Servlet 2.5, JSP 2.1, JSP/EL 1.0, JSTL 1.2, JSF 1.2, Java mail 1.4, JAF 1.1, SAAJ 1.3, JTA 1.1..
Platforme si standarde suportate
Cerinte minime de system
JDK 1.4 sau mai mult (recomandat 1.4.2)
JDK 5 sau mai mult (recomandat si necesar cand se foloseste EJB 3.0)
512 MB RAM
100MB spatiu pe hard disc
400 MHz CPU
Standarde suportate
JBoss Enterprise Application Platform contine JBoss Application Server, platforma
certificata J2EE 1.4. In Plus, JBoss Enterprise Application Platform suporta
urmatoarele standarde Java EE 5:
• EJB 3.0 • JSF 1.2
• EJB Persistence 1.0 • Javamail 1.4
• Servlet 2.5 • JAF 1.4
• JSP 2.1 • SAAJ 1.3
• JSP/EL 1.0 • JTA 1.1
• JSTL 1.2
Sisteme de operare suportate
JBoss Rules este 100% Java si de aceea interopereaza cu majoritatea sistemelor de operare capabile sa ruleze Java Virtual Machine (JVM), si anume Windows, UNIX, Red Hat Enterprise Linux, precum si alte distributii Linux.
Baze de date suportate
JBoss Enterprise Application Platform lucreaza cu orice baza de date conforma JDBC:
IBM DB2, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, Sybase.
Analiza sistemului
Detalierea formularelor
Informatii cont
Nume utilizator (obligatoriu)
Parola (obligatoriu)
Verificare parola (obligatoriu)
E-mail (obligatoriu)
Verificare E-mail (obligatoriu)
Informatii personale
Nume (obligatoriu)
Prenume (obligatoriu)
Adresa (optional)
Telefon (optional)
Data nasterii (optional)
Detalii inregistrare
Informatii cont (obligatoriu)
Informatii personale (obligatoriu)
Detalii autentificare
Nume utilizator (obligatoriu)
Parola (obligatoriu)
Cauta simpla
Criterii cautare (optional)
Cautare avansata
Include cuvintele cheie (optional)
Exclude cuvintele cheie (optional)
Cautare in titlu (optional)
Cautare in descriere (optional)
Categorii (optional)
Interval pret (optional)
Tip licitatie (optional)
Nume vanzator (optional)
Plasare licitatie
Nume licitatie (obligatoriu)
Optiuni transport (obligatoriu)
Pret minim (obligatoriu)
Duarata (obligatoriu)
Categorie (obligatoriu)
Poza (optional)
Alte informatii (optional)
Formularul de mesaje
Catre (obligatoriu)
Subiect (optional)
Mesaj (optional)
Drepturile utilizatorilor
Entitatile din cadrul sistemului informatics de licitatii online pot avea urmatoarele drepturi in functie de tipul pe care-l detin.
Vizitatorii
Pot naviga printer categorii
Pot vedea licitatiile active
Pot cere creare unui cont, se pot inregistra in sistem
Se pot autentifica in sistem daca deja detin un cont
Utilizatorii inregistrati
Pot naviga printer categorii
Pot naviga printre licitatii
Pot plasa licitatii
Pot licita
Pot urmari anumite licitatii
Pot oferi nota unui vanzator/comparator
Pot vizualiza licitarile active sau castigate
Pot accesa si modifica informatiile personale de inregistrare
Pot vizualiza mesajele primate
Pot trimite mesaje
Pot comenta la licitatii
Administratorii
Pot administra ceilalti membri ai sistemului
Pot administrat licitatiile
Pot restriction utilizatori
Diagrama cazurilor de utilizare
Vizitatorii au un numar limitat de operatii pe care-l pot efectua. Acesta se rezuma la autentificare daca au un cont, vizualizare licitatii active si creare unui cont.
Spre deosebire de vizitatori, utilizatorii inregistrati au numar mult mai mare de operatii pe care-l pot desfasura in cadrul sistemului. Acestia se pot autentifica, deoarece au deja un cont. Pot plasa licitatii cat pot licita la cele active dupa ce le identifica pe cele dorite. Pot adauga comentii la unele licitatii si pot trimite mesaje catre alti utilizatori ai sistemului. De asemnea pot administra propriul lor profil.
Administratorii sunt utilizatori cu roluri speciale care se ocupa de intretinerea sistemului. De buna functionare a acestuia. Acestia au drept deplin asupra indregului sistem, ca urmare pot efectua operatiile unui utilizator inregistrat. Pe langa aceasta, administratorii pot realiza managementul utilizatorilor din sistem, banandu-i pe aceia care nu respecta regulile, pot realiza un management al licitatiilor, anuland dupa caz pe acelea care nu sunt conforme cerintelor. De asemnea administratorii pot crea categorii in care sa se introduca noi licitatii.
Diagrama de activitati
Crearea unui cont nou
Un vizitator al aplicatiei poate intr-un anumit punct sa ceara crearea unui cont in cadrul sistemului de licitatii. Pentru acest lucru, utilizatorul isi va introduce datele. Sistemul va verifica daca exista deja un utilizator cu aceleasi date introduse de vizitatorul eLicitatii. Daca exista i se va pune la dispozitie posibilitatea de recuperare parola sau de schimbare a datelor introduse.
Crearea unei licitatii noi
Pentru crearea unei noi licitatii un utoizatoe trebuie sa se autentifice in aplicatie. Daca autentificarea a fost realizata cu succes, acesta poate accesa meniul licitatie noua. Mai departe trebuie sa introduca informatiile obligatorii pentru licitatie, sa ataseze o imagine daca doreste si sa confirme finalizarea operatiilor.
Diagrama pachetelor
Diagrama claselor
Diagrama de clase pentru pachetul entity
Diagrama de clase pentru pachetul session
Diagrama modulelor
Schema bazei de date
Prezentarea aplicatiei
Scop
Cerintele generale pentru accesarea sistemului
Elicitatii poate fi accesat de pe orice sistem de operare folosind un browser web si o conexiune catre aplicatia de licitatii online, o conexiune internet.
Nu este necesar folosirea unor echipamente hardware special.
Browserul clientului trebuie sa fie compatibil cu specificatiile W3C XHTML.
Comunicarea intre utilizator si aplicatie se va face prin protocolul HTTP pe portul 80. Ca urmare utilizatorul nu trebuie sa aiba acest port blocat.
Daca pe parcursul unui request apare o eroare, utilizatorul va primi un mesaj clar din partea sistemului si va putea action in consecinta.
Manualul de utilizare al aplicatiei
Concluzii
Bibliografie
Anexe
Anexa 1. Scripturi creare baza de date
Anexa 2. Codul sursa
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sistemele de Licitatii Online (ID: 150572)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
