• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Documentatie
 

Documentatie

on

  • 6,136 views

 

Statistics

Views

Total Views
6,136
Views on SlideShare
6,136
Embed Views
0

Actions

Likes
1
Downloads
130
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Documentatie Documentatie Document Transcript

    • PROIECT DE DIPLOMĂAplicaţie pentru managementul documentelor Prezentată Facultăţii de Automatică şi Calculatoare din Universitatea Politehnică Bucureşti de către LUPU Ionut-Marius in Iulie 2010 Coordonator: prof. dr. ing. Valentin SGARCIU
    • AbstractAbstract Documentul este o unealtă de comunicare importantă între departamentele organizaţiilorşi în relaţiile cu alte companii. Sistemele de management al documentelor sunt folosite deorganizaţii din toate sectoarele publice şi private pentru a organiza şi structura documenteleelectronice precum şi pentru a urmări fluxul acestora în cadrul companiei şi în punctele deintrare/ieşire ale acesteia. Această lucrare îşi propune implementarea unei aplicaţii de management aldocumentelor care permite gestiunea şi urmărirea documentelor, precum şi arhivarea acestora,asigurând un echilibru între securitate şi accesibilitate, protejând informaţiile şi în acelasi timpoferind un acces usor şi rapid pentru a ajuta personalul companiei să lucreze cu un maxim deeficienţă. 2
    • CuprinsCuprins Abstract …...........................................................................................................i Cuprins …...........................................................................................................31. Introducere ….....................................................................................................5 1.1 Sistemele de management al documentelor .................................................5 1.1.1 Definirea documentului …...............................................................5 1.1.2 Caracteristici ….........................................................................…...6 1.1.3 Avantaje ..........................................................................….............9 1.2 Scopul proiectului ….......................................................................................92. Aplicaţii similare de management al documentelor …..................................11 2.1 Biblioteci de documente …............................................................................11 2.2 Aplicaţii de flux (workflow) ….........................................................................123. Specificaţii de proiectare ….......................................…...................................14 3.1 Stabilirea obiectivelor de proiectare ..............................................................14 3.2 Interfaţa cu utilizatorul ...................................................................................154. Limbaje de programare folosite .......................................................................17 4.1 PHP (Hypertext Preprocessor) ......................................................................17 4.2 SQL (Structured Query Language - Limbaj Structurat de Interogare) ..........20 4.2.1 MySql ..............................................................................................20 4.3 HTML (HyperText Markup Language) ...........................................................225. Proiectarea conceptuală a bazei de date .........................................................24 5.1 Noţiuni generale .............................................................................................24 5.2 Modelul Entitate-Asociere (EA) ......................................................................25 5.2.1 Identificarea tipurilor de entităţi ........................................................25 5.2.2 Identificarea tipurilor de asocieri ......................................................27 5.2.3 Identificarea şi asocierea atributelor cu tipurile de entităţi sau relaţii ..29 5.2.4 Diagrama Entitate-Asociere .............................................................32 5.3 Modelul relaţional ............................................................................................36 5.3.1 Noţiuni generale ...............................................................................36 5.3.2 Descrierea structurii tabelelor folosite şi legăturilor dintre acestea .40 3
    • Cuprins6. Interogarea bazei de date ................................................................................52 6.1 Noţiuni generale ...........................................................................................52 6.2 Conectarea la baza de date .........................................................................55 6.3 Inserarea inregistrărilor ................................................................................56 6.4 Selectarea inregistrărilor ..............................................................................57 6.5 Actualizarea inregistrărilor ...........................................................................57 6.6 Ştergerea inregistrărilor ...............................................................................587. Prezentarea aplicaţiei ......................................................................................59 7.1 Structură ......................................................................................................59 7.1.1 Modulul client ................................................................................59 7.1.2 Modulul administrator ....................................................................688. Detalii de implementare a aplicaţiei ...............................................................70 8.1 Implementarea modulelor ............................................................................70 8.2 Optimizări şi performanţe .............................................................................73 8.2.1 Normalizarea bazei de date ...........................................................73 8.2.2 Utilizarea procedurilor stocate .......................................................75 8.2.3 Promovare .....................................................................................769. Concluzii şi dezvoltări ulterioare ....................................................................7710. Bibliografie .......................................................................................................78 4
    • 1. Introducere1. Introducere1.1 Sistemele de management al documentelor Istoria sistemelor pentru managementul documentelor cunoaşte două mari perioade deevoluţie. Primele soluţii dezvoltate erau sisteme in cadrul cărora scopul era in principal„arhivarea electronică‖, reprezentand o alternativă la micrografie. In acea perioadă, 90% dintresoluţii erau concentrate in domeniile de administraţie publică şi bănci-asigurări. A doua perioadăincepe in 1995 odată cu evoluţia reţelelor, a soluţiilor multimedia şi a informaticii in general.Astfel: • documentul electronic a devenit multimedia: nu mai este vorba numai despre texte, dar şi despre imagini, sunet, video, etc. ce pot fi integrate; • un mare progres ce a fost realizat se referă la capacităţile de stocare la costuri din ce in ce mai scăzute (de exemplu DVD-urile); • au apărut din ce in ce mai multe standarde referitoare la protocoalele de reţele, la sistemele de exploatare şi la conectivitatea intre diferitele platforme; • interfeţele om-maşină s-au simplificat mult pentru a face informatica accesibilă pentru mai multe persoane. Justificarea achiziţionării unui sistem pentru managementul documentelor devineastfel, parte importantă şi integrantă a sistemului informaţional al organizaţiilor şi joacă dinacest moment un rol economic şi strategic deoarece prin utilizarea şi administrarea eficientăa informaţiei se poate obţine avantaj competitiv.1.1.1 Definirea documentului Inainte de revoluţia digitală, documentul nu era altceva decat ceea ce defineadicţionarul: "act prin care se adevereşte, se constată sau se preconizează un fapt, se conferă undrept, se recunoaşte o obligaţie; text scris sau tipărit, inscripţie sau altă mărturie servind lacunoaşterea unui fapt real actual sau din trecut" (DEX ediţia a II-a 1996, Editura Univers 5
    • 1. IntroducereEnciclopedic). Pe scurt, un document era o foaie de hartie pe care era scris un lucru important,ce putea fi o informaţie. Astăzi, tehnologiile integrate, puternice, pe care le avem permit o redefinire adocumentului: "orice pachet de date structurate care poate fi folosit ca informaţie". Adică undocument poate fi aproape orice: holograme, CD-ROM-uri, secvenţe video. Un document tipic devine o compoziţie cu text şi elemente multimedia, tipărită mult mairar ca inainte. Documentul poate fi citit, vizualizat, auzit simultan pe dispozitive wirelessportabile sau pe echipamente de birou. Cu ajutorul acestuia se pot realiza tranzacţii de oriunde,fără constrangeri de spaţiu şi timp. Aşadar, apare noţiunea de document electronic. Documentul electronic implică oriceconţinut media electronic (text, imagine grafică, arhive, e-mail, etc.), atat timp cat nudesemnează un program pe calculator sau fişiere sistem, fiind destinat folosirii intr-o formăelectronică sau in variantă printată. Odată cu dezvoltarea reţelelor de calculatoare, s-a doveditfaptul că in cele mai multe cazuri este mult mai convenabil să distribuim documenteleelectronice decat cele printate.1.1.2 CaracteristiciDefiniţie Un sistem de management al documentelor reprezintă un sistem informatic, folositpentru a crea, gestiona, distribui şi controla documente electronice, cu facilitaţi de conectare laalte sisteme informatice sau dispozitive electronice. In general, un sistem performant de management al documentelor: • implementează rapid fluxuri de documente • este flexibil la orice structură organizaţională • are un grad inalt de securitate • este adaptabil la orice tip de document • este conectabil la alte aplicaţii • prezintă uşurinţă in exploatare • este scalabil la dezvoltări ulterioare.Componentele de bază ale unui sistem de management al documentelor: 6
    • 1. Introducere Sistemele de management al documentelor implică de obicei stocare, control alversiunilor, date meta, securitate precum şi posibilităţi de indexare şi recuperare. O descriere aacestor componente este prezentată mai jos:• Date meta Această componentă este atribuită fiecărui document in parte. Ca exemplu, datele metapot include data la care documentul a fost salvat şi identitatea utilizatorului care a salvat aceldocument. Sistemul de management al documentelor poate extrage automat datele meta dincadrul unui document, sau poate atenţiona utilizatorul să o introducă. Unele sisteme pot utiliza orecunoaştere optică 1 a caracterelor asupra imaginilor scanate sau pot extrage text dindocumente electronice. Textul rezultat poate fi de ajutor pentru utilizatori in cazul localizăriidocumentelor prin identificarea cuvintelor cheie.• Captura Imagini ale documentelor hartie folosind scannere sau imprimante multifuncţionale.Recunoaşterea optică a caracterelor este des folosită in acest caz.• Indexare Folosită pentru a ţine evidenţa documentelor electronice. Poate varia de la forme simplecum ar fi stabilirea identificatorilor unici ai documentelor pană la forme complexe precumclasificarea dupa datele meta ale documentelor sau indici ai cuvintelor extrase din conţinutulacestora.• Stocare Stocarea documentelor implică de multe ori o gestionare a acestora; unde au fostsalvate, pentru cat timp, migrarea documentelor de la un mediu de stocare la altul precum şidistrugerea acestora.• Recuperare Implică obţinerea documentelor din mediul in care au fost stocate. Acest proces poate fiunul complex. In varianta simplă, recuperarea documentelor individuale poate fi realizată prinspecificarea de către utilizator a identificatorului unic atribuit documentului respectiv. O1 Recunoaşterea optică a caracterelor reprezintă translatarea mecanică sau electronică a imaginilor cu scris demană, tipărit sau printat (de obicei scanat) in text editabil. 7
    • 1. Introducererecuperare mai flexibilă, implică specificarea de către utilizator a unor termeni parţiali de căutareimplicand identificatorul documentului şi/sau părţi din datele meta atribuite acestuia.• Securitate Securitatea documentelor este un lucru vital in astfel de sisteme. Multe aplicaţii demanagement al documentelor au implementat un modul de atribuire de drepturi de cătreadministrator, asupra documentelor, pentru anumiţi utilizatori sau grupuri de utilizatori.Securitatea implică şi atribuirea de semnături digitale asupra documentelor pentru validareaautenticităţii acestora precum şi transmiterea lor de la server la client sau invers folosindconexiuni sigure (SSL2).• Workflow (Aplicaţii de flux) Documentele intr-o organizaţie nu sunt statice. Ele sunt create, modificate, distribuite perute clar definite. De aceea, sistemele de management de documente conţin aplicaţii de fluxcare determină cu precizie unde se trimite un document, dacă a ajuns la destinaţie, cand a fostredirectat şi care este statutul lui la un moment dat. Permit automatizarea proceselor din cadrulorganizaţiei, rutand un document sau un folder de documente către utilizatori şi grupuri folosindun set de reguli stabilite de noi. Ele pot fi manuale, bazate pe reguli sau automate.• Colaborare Atunci cand un utilizator autorizat face modificări asupra unui document, accesulcelorlalţi utilizatori trebuie să fie blocat atat timp cat se desfaşoară acea activitate.• Controlul versiunilor Versiunea unui document este o copie intermediară a unui document sau o actualizare aunui document precedent. Prin crearea şi păstrarea transparentă a versiunilor unui documenteste posibilă urmărirea evoluţiei acestuia.• Publicare Un document publicat trebuie să fie intr-un format care nu poate fi modificat uşor decatcu unelte sau cunoştinţe specifice, fiind totodată ―read-only‖ sau portabil.2 SSL (Secure Sockets Layer) este un acronim care reprezintă un protocol Web dezvoltat de Netscape pentru atransmite documente private prin Internet. 8
    • 1. IntroducereFuncţiile de bază ale sistemelor de management al documentelor Sistemele de management al documentelor asigură: • Alocarea unui număr unic de inregistrare fiecărui document • Stabilirea locului unde se află fiecare document activ. • Urmărirea intregului ciclu de viaţă al unui document - personalul insărcinat cu recepţia acestuia. - momentul la care a fost recepţionat. - persoana care răspunde de avizarea/răspunsul formulat. - data la care răspunsul/avizarea au fost finalizate. • Controlul versiunii.1.1.3 Avantaje Tradiţionalele sisteme de operare ca DOS şi Windows nu au reuşit să ofere uneltele şiresursele necesare pentru gestiunea documentelor. Spre deosebire de sistemele manuale, sistemele automate de management aldocumentelor: • Stochează informaţiile legate de document intr-un singur loc • Permit accesul rapid la locul in care se află documentul in organizaţie • Informează privind stadiul de avizare (rezoluţie) in care se află un document • Urmăresc timpul necesar finalizării unei avizări (rezoluţii) şi cele care au depăşit acest termen • Vizualizează numărul de documente intrate zilnic, săptămanal şi lunar.1.2 Scopul proiectului Scopul proiectului este de a realiza o aplicaţie de management al documentelor bazatăpe tehnologii web, care să ofere utilizatorilor dintr-o reţea soluţii privind problemele de stocare,căutare, de urmărire şi de control a propriilor documente electronice, ele putand fi accesate deoriunde şi oricand. Aplicaţia este realizată pentru a gestiona : 9
    • 1. Introducere• Fluxul Documentelor : – Gestiunea documentelor dintr-o organizaţie –Inregistrarea documentelor prin atribuirea de numere unice in cadrul organizaţiei –Clasificarea documentelor –Identificarea sursei –Căutarea şi regăsirea rapida a documentelor –Stările documentelor –Acces rapid la documente prin browsere web standard• Arhivarea documentelor electronice: –Fişierele sunt salvate intr-un mediu de stocare secundar –Informaţia este centralizată fiind uşor de regăsit şi controlat. 10
    • 2. Aplicatii similare de management al documentelor2. Aplicaţii similare de management al documentelorSumar. In acest capitol sunt descrise cateva aplicatii cu funcţionalitate similara cu cea dincadrul proiectului.2.1 Biblioteci de documente Elemente centrale al unui sistem de management de documente, bibliotecile dedocumente conţin: • Documente relative la proiect. • Proceduri ale sistemului calităţii, manualul calităţii. • Norme, proceduri, regulamente care trebuiesc consultate de personal. • Documente interne etc. Un exemplu concret de astfel de aplicaţii il reprezintă DocPlus Biblioteca de documente.Beneficii -Oferă acces rapid la biblioteci electronice cu informaţii şi documente utile, acces la bazede discuţii tematice sau colaborative; -Asigură utilizatorilor acces la documente tematice, departamentale şi transfer de ―know-how‖, in baza drepturilor de acces definite, biblioteci disponibile pentru toţi membrii unei echipesau ai unui grup de lucru; -Reduce incărcarea inutilă a reţelei, fiind transmise doar legături (link-uri) cătredocumentele de interes, din cadrul bibliotecii virtuale; imbunătăţeşte colaborarea intre echipelede lucru prin partajarea şi distribuţia informaţiilor; -Asigură reducerea costurilor asociate cu gestiunea şi arhivarea diferitelor tipuri dedocumente ale departamentelor, precum şi timpul alocat activităţilor de arhivare şi regăsire adocumentelor; -Creşte eficienţa personalului prin reutilizarea informaţiilor stocate in aplicaţii partajatesau utilizarea acestor informaţii ca bază de plecare in rezolvarea de situaţii similare; 11
    • 2. Aplicatii similare de management al documentelor -Permite gruparea documentelor in zone de interes pentru acces rapid la acestea,precum şi crearea unor profile de interes pentru notificare automată de către sistem in cazulapariţiei unor informaţii noi care corespund profilelor create.2.2 Aplicaţii de flux (workflow) Documentele intr-o organizaţie nu sunt statice. Ele sunt create, modificate, distribuite perute clar definite. De aceea, sistemele de management de documente conţin aplicaţii de fluxcare determină cu precizie unde se trimite un document, dacă a ajuns la destinaţie, cand a fostredirectat şi care este statutul lui la un moment dat. DocPlus Circuitul documentelor este o aplicaţie care permite automatizarea, gestionareaşi monitorizarea proceselor interne de lucru, care pot fi imbunătăţite, rafinate, iar erorile pot fireduse intrucat paşii de flux predefiniţi sunt rezultatul unei analize a proceselor de lucru. Odatăcu evoluţia fluxurilor de lucru, profilul acestora se poate modifica cu uşurinţă. Modulul se adresează oricărei tip de organizaţii, fie că este organizaţie guvernamentală,companii mari sau din segmentul intreprinderilor mici şi mijlocii, fiind un instrument de lucrueficient utilizatorilor sistemului şi managementului organizaţiei. Integrarea cu platforma internă de comunicare mail şi in timp real este nativă, permiţandutilizatorilor sistemului de management al documentelor să fie notificaţi asupra acţiunii deaprobare, informare a unor documente. Documentele vor putea fi accesate şi se va putea lucra asupra lor indiferent de locul incare se află utilizatorii autorizaţi. Acest lucru este posibil utilizand funcţiile avansate de lucru off-line pe care sistemul le pune la dispoziţie. Timpii de aşteptare pentru acţionarea asupra documentelor urgente sunt eliminaţi,productivitatea fiind susţinută prin eficienţă. Aceeaşi eficienţă se remarcă şi prin utilizareacapabilităţii de comunicare in timp real din orice locaţie cu persoanele implicate in activitatearespectivă pentru schimb de idei, informaţii şi luare de decizii.Circuitul documentelor asigură suportul pentru automatizarea proceselor interne aleorganizaţiei, pune la dispoziţie instrumente pentru definirea circuitului diverselor tipuri dedocumente, in scopul aprobării interne şi informării, furnizand in orice moment rapoarte privindstadiul de aprobare, tipurile de documente procesate şi alte informaţii specifice. 12
    • 2. Aplicatii similare de management al documentelorBeneficii -Oferă un mecanism automatizat de circulaţie internă a documentelor de diverse tipuri,definite intern: cerere achiziţie, cerere concediu, referat deplasare, decontare, sau alteformulare specifice organizaţiei. -Oferă un cadru unitar şi standardizat pentru operarea documentelor interne de cătrepersonal. - Asigură circulaţia documentelor in interiorul organizaţiei pe trasee predefinite saustabilite de către autorul documentului, cu posibilitatea aprobării sau respingerii acestora şiadăugarea de comentarii. -Pune la dispoziţie multiple criterii de definire a fluxului de aprobare, a aprobatorilor finali,a timpilor de aşteptare, de informare. -Permite urmărirea stării documentelor pe parcursul fluxului, precum şi evidenţiereamodului de rezolvare a fiecărui document de către responsabilii desemnaţi. -Oferă posibilitatea de a obţine rapoarte privind documentele rezolvate sau aflate in lucrudupa criterii precum stare, tip, responsabil etc. -Asigură integrarea cu sistemul de comunicare in timp real pentru afişarea disponibilităţiipersoanelor pentru comunicare sau schimb de idei. -Asigură obţinerea de rapoarte specifice după persoane, stare document, tip document,fiecare persoană avand acces la documentele proprii sau la cele comune, in funcţie dedrepturile de acces stabilite. -Eficientizează lucrul cu documentele pe hartie şi automatizează procesele de aprobareinternă şi informare, reducand timpul necesar manipulării documentelor. 13
    • 3. Specificatii de proiectare3. Specificaţii de proiectareSumar. In acest capitol sunt prezentate cerinţele de proiectare ale aplicaţiei. Acest lucrupresupune o bună formulare şi inţelegere a problemei, evidenţiind necesităţile informaţionale aleorganizaţiei. Această intelegere poate conduce la o distincţie netă intre analiză ("ce trebuiefăcut?") şi proiectarea ("cum trebuie făcut?") aplicaţiei.3.1 Stabilirea obiectivelor de proiectare Aplicaţia va prezenta următoarele caracteristici, in ceea ce priveşte stabilirea obiectivelorde proiectare. • independenţa de platformă • uşurinţă in exploatare • nu necesită instalare sau alte configurări • grad inalt de securitate • adaptabilă la orice tip de document • dinamică Obiectul de bază cu care operează aplicaţia este documentul electronic. Documentele sunt introduse de către utilizatori in baza de stocare a organizaţiei prinreţeaua Internet prin completarea unor formulare on-line specifice. Aceste formulare vor fiproiectate astfel incat să permită crearea de documente noi, sau rescrierea acestora peste celevechi. Totodată, sunt preluate de către sistem şi verificate in ceea ce priveşte completitudinea şicorectitudinea datelor introduse de utilizator. De asemenea datele introduse sunt supuse unorprelucrări menite a proteja sistemul informatic la atacuri informatice (dezactivarea caracterelorspeciale, eliminarea eventualelor tag-uri sau secvenţe de cod). Structura documentelor in cadrul aplicaţiei trebuie să fie aceeaşi cu cea de pe suportulfizic pe care sunt stocate, facilitand astfel funcţia de adaptabilitate şi scalabilitate a aplicaţiei. 14
    • 3. Specificatii de proiectare Documentele companiilor sunt puse in comun angajaţilor acestora intr-un mediusecurizat. Se va folosi o transmisie criptată a acestora (SSL), informaţiile din baza de dateprecum şi documentele electronice efective vor fi salvate in mod regulat (―backup‖), iar accesuldocumentelor de către utilizatori se va face pe baza drepturilor caştigate. Mai mult, se vor folosi funcţii hash de criptare/decriptare pentru garantarea autenticităţiişi confidenţialităţii documentelor şi datelor despre utilizatori dar şi pentru stabilirea modificărilorfăcute asupra documentelor. Aplicaţia va fi modularizată, pentru o inţelegere şi distribuire mai bună a sarcinilor inetapa de implementare. Pentru asigurarea calităţii aplicaţiei, aceasta trebuie indeplinească următoarele:Increderea Este garantată buna funcţionare precum şi corectitudinea stocării datelor obţinute de lautilizatori in baza de date. Eventualele erori ce pot să apară vor fi in stransă legatură cu stareasistemului pe care este rulată aplicaţia, dar şi cu starea resurselor ce sunt utilizate.Fiabilitatea Posibilitatea de accesare a aplicaţiei web depinde de funcţionalitatea serverului pe careeste rulată aplicaţia, cat şi de starea bazei de date. Aplicaţia web in discuţie este construităpentru a fi folosită in condiţii optime o perioadă indelungată de timp, efectuanduse operaţii dincele mai diverse.Securitatea Este asigurată păstrarea confidenţialităţii datelor introduse de utilizatorii care au cont incadrul aplicaţiei.Toleranţa la erori Aplicaţia are o toleranţa ridicată la erori. Eventualele erori ce pot să apară depind deconfiguraţia serverului pe care rulează aplicaţia şi de baza de date utilizată. 15
    • 3. Specificatii de proiectare3.2 Interfaţa cu utilizatorul Interfaţa este intuitivă, prezentand uşurinţă in exploatare indiferent de gradul decunoştinţe al utilizatorului. Interfaţa cu utilizatorul implică un set de funcţionalităţi prin care acesta trimite comenzipentru a fi rulate in mediul de execuţie. Interfaţa este aceeaşi atat pentru utilizatorul obişnuit cat şi pentru administratorulaplicaţiei, cu excepţia faptului că cel din urmă beneficiază de anumite facilităţi in plus, cum ar fiadăugarea, editarea sau ştergerea de utilizatori, stabilirea perioadei de timp după care incepesă se desfăşoare procesul de arhivare etc. Funcţionalităţile de bază sunt: crearea efectivă a documentelor, ştergerea , modificarea,copierea , mutarea, căutarea şi redenumirea acestora. Alte facilităţi specifice interfeţei implicăfaptul că utilizatorii vor putea seta drepturi de acces asupra documentelor pentru anumiţiutilizatori, sau crea fluxuri de lucru. Interfaţa vizitatorului este mai redusă, acesta avand doar drepturi de căutare şivizualizare şi nu are acces la modificarea datelor din bază. Accesul la interfaţa utilizatorului este garantat prin browser-ul web (Opera, MozillaFirefox, Internet Explorer, Safari etc) care la randul său reprezintă o interfaţă de comunicare cuserver-ul pe care rulează aplicaţia. 16
    • 4. Limbaje de programare folosite4. Limbaje de programare folositeSumar. In acest capitol sunt prezentate principalele limbaje de programare ce stau la bazaimplementării aplicaţiei.4.1 PHP (Hypertext Preprocessor) PHP este un limbaj de programare destinat in primul rand Internetului, aducanddinamică unei pagini de web. Este unul din cele mai importante limbaje de programare webopen-source şi server-side. Numele PHP provine din limba engleză şi este un acronim recursiv: Php: HypertextPreprocessor. Exemple faimoase de utilizare a acestui limbaj sunt PhpBB (forum),PhpNuke(CMS), chiar şi MediaWiki, software-ul din spatele Wikipedia. Folosirea PHP poate fivăzută ca o alternativă gratuită la utilizarea unor limbaje comerciale cum sunt ASP de laMicrosoft, ColdFusion de la Macromedia, sau chiar JSP de la Sun Microsystems.Istoric PHP a insemnat iniţial Personal Home Page. PHP a fost inceput in 1994 ca o extensie alimbajului server-side Perl, şi apoi ca o serie de CGI-uri compilate de către Rasmus Lerdorf,pentru a genera un curriculum vitae şi pentru a urmări numărul de vizitatori ai unui site. Apoi aevoluat in PHP/FI 2.0, dar proiectul open-source a inceput să ia amploare după ce Zeev Suraskişi Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP in vara anului1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat şi numele in acronimulrecursiv de acum, pană atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraskişi Gutmans au rescris baza limbajului, producand astfel şi Zend Engine in 1999. In mai 2000 afost lansat PHP 4.0, avand la bază Zend Engine 1.0.Evolutie - PHP 5 17
    • 4. Limbaje de programare folosite Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus şi o orientare obiectmai pronunţată şi suportand mai multe caracteristici ale acestui tip de programare. PHP 5 aduce mai multe noutăţi faţă de versiunea 4: • Suport imbunătăţit pentru OOP • Introduce extensia PDO - PHP Data Objects, care defineşte o modalitate facilă şiconsistentă de accesare a diferitelor baze de date • Imbunătăţiri de performanţă • Suport imbunătăţit pentru MySQL şi MSSQL • Suport nativ pentru SQLite • Suport SOAP integrat • Iteratori pentru date • Controlul erorilor prin tratarea de excepţiiPHP 6 PHP 6 are următoarea agendă de imbunătăţiri şi modificări: • imbunătăţirea suportului pentru Unicode • retragerea definitivă a unor funcţii ca register_globals şi magic_quotes, şi a variabilelortip $HTTP_*_VARS • var va fi un alias pentru public, şi folosirea lui va ridica o atenţionare E_STRICT • suport pentru int pe 64 biti • taguri tip ASP sunt retrase definitiv • erorile tip E_STRICT sunt incluse in E_ALL • adaugarea instrucţinuii goto permite salturi la un alt bloc de comenzi • namespace, import, şi goto devin cuvinte rezervate • opţiunea safe_mode a fost inlăturată • operatorul and a fost inlăturat.Popularitate PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unuistudiu efectuat de Netcraft in aprilie 2002, apărand pe 9 din cele 37 milioane de domeniicercetate in studiu. De asemenea, există un grafic al creşterii folosirii PHP-ului pe site-ul oficial.Popularitatea de care se bucură acest limbaj de programare se datorează următoarelorcaracteristici : - Familiaritatea : sintaxa limbajului este foarte uşoară combinand sintaxele unora din 18
    • 4. Limbaje de programare folositecele mai populare limbaje Perl sau C; - Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere debiblioteci sau de directive de compilare, codul PHP inclus intr-un document executanduse intremarcajele speciale; - Eficienţa : PHP-ul se foloseşte de mecanisme de alocare a resurselor, foarte necesareunui mediu multiutilizator, aşa cum este web-ul; - Securitate : PHP-ul pune la dispoziţia programatorului un set flexibil şi eficient demăsuri de siguranţă; - Flexibilitate : fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizatpentru a ţine pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web,PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, server, etc.; - Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului. DezvoltareaPHP-ului sub licenţa open-source a determinat adaptarea rapidă a PHP-ului la nevoile webului,eficientizarea şi securizarea codului.Scrierea unui script PHP Pentru a crea scripturi PHP, majoritatea programatorilor PHP folosesc un editor de texteobişnuit. Sub Microsoft Windows se utilizează frecvent Windows Notepad , WordPad sau chiarun procesor de texte precum Microsoft Word.Scrierea scheletului programelor PHP Fiecare program PHP include două linii speciale , care indică serverului PHP că textulcuprins intre cele două linii este alcătuit din instrucţiuni PHP. Aceste 2 linii intre care se scriescriptul PHP sunt : <?php şi ?>. După scrierea scriptului acesta se salvează sub formă de fişier text , cu un nume carerespectă următoarele reguli : • Numele fişierului trebuie să fie alcătuit numai din caractere minuscule, cifre şi liniuţe. Utilizarea spaţiilor şi a altor caractere este interzisă. • Extensia fişierului trebuie să fie .php.Crearea datelor de ieşire pentru un browser Web Programele PHP execută trei categorii de operaţii elementare : • Obţin date de la utilizator 19
    • 4. Limbaje de programare folosite • Execută prelucrări ale datelor, respectiv obţin accesul la datele stocate in fişiere şi bazede date şi le manipulează • Afişează date astfel incat un utilizator să le poată vizualiza. Instrucţiunea care trimite date de ieşire la un browser Web astfel incat acestea să fievizibile pentru utilizatori - numită instrucţiune de reflectare este : • echo (―text afişat ―) ;Suport PHP are un manual oficial intreţinut de comunitatea din jurul proiectului. In plus,răspunsurile la multe probleme pot fi găsite printr-o simplă căutare pe internet. Există multeresurse disponibile pentru un programator PHP incepător.4.2 SQL (Structured Query Language) SQL (Structured Query Language - Limbaj Structurat de Interogare) este un limbaj deprogramare specific lucrului cu bazele de date, devenit un standard in domeniu (standardizatANSI-ISO), fiind cel mai popular limbaj utilizat pentru crearea, modificarea, regăsirea şimanipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaţionale.Pe langă versiunile standardizate ale limbajului, există o mulţime de dialecte şi variante, uneleproprietare, fiind specifice anumitor SGBD-uri şi de asemenea conţinand extensii pentru asuporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaţionale). SQL permite atat accesul la conţinutul bazelor de date, cat şi la structura acestora.4.2.1 MySql MySQL este un sistem de gestiune a bazelor de date relaţional, produs de companiasuedeză MySQL AB şi distribuit sub Licenţa Publică Generală GNU. Este cel mai popular SGBDopen-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL,PHP). Popularitatea sa ca aplicaţie web este strans legată de cea a PHP-ului care este adeseacombinat cu MySQL şi denumit Duo-ul Dinamic. MySQL este mult mai uşor de invăţat şi folositdecat multe din aplicaţiile de gestiune a bazelor de date. 20
    • 4. Limbaje de programare folosite Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau,prin descărcare de pe internet, o interfaţă grafică: MySQL Administrator şi MySQL QueryBrowser. Un alt instrument de management al acestor baze de date este aplicaţia gratuită,scrisă in PHP, phpMyAdmin. Cele mai uzuale operaţii cu bazele de date sunt:Comanda SemnificatieCREATE crează o bază de date sau un tabelDROP şterge o baza de date sau un tabelINSERT adaugă inregistrări intr-un tabelDELETE şterge inregistrări dintr-un tabelUPDATE ―updatează‖ inregistrările dintr-un tabelSELECT selectează un tabelALTER alterarea unui tabel. In MySQL spaţiul alocat pe discul serverului este funcţie de tipul de date. Cateva dintipurile de date folosite in bazele de date MySQL sunt:Tip Semnificaţieint() număr intreg 32 bitibigint() număr intreg 64 bititinyint() număr intreg (-128 la 127 sau 0 la 255) 8 bitimediumint() numar intreg 24 bitismallint() număr intreg 16 bitichar() secţiune cu lungime fixă de la 0 la 255 caracterevarchar() secţiune cu lungime variabilă de la 0 la 255 caracterefloat() număr mic cu virgulă flotantădouble număr mare cu virgulă flotantătext şir cu maximum 65535 caracteredate() data in format YYYY-MM-DDdate data in format YYYY-MM-DD HH:MM:SStime ora in format HH:MM:SS Pentru ca baza de date să fucţioneze mai bine, coloanelor li s-au adăugat modificatoride coloană. 21
    • 4. Limbaje de programare folosite MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD,GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista.4.3 HTML (HyperText Markup Language) HyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru creareapaginilor web ce pot fi afişate intr-un browser (sau navigator). Scopul HTML este mai degrabăprezentarea informaţiilor – paragrafe, fonturi, tabele etc. – decat descrierea semanticiidocumentului. Specificaţiile HTML sunt dictate de World Wide Web Consortium (W3C).Noţiuni de bază Paginile HTML sunt formate din etichete sau tag-uri şi au extensia .html sau .htm. Inmarea lor majoritate aceste etichete sunt pereche, una de deschidere <etichetă> şi alta deinchidere </etichetă>. Browserul interpretează aceste etichete afişand rezultatul pe ecran. HTML-ul nu este un limbaj case sensitiv (nu face deosebirea intre litere mici şi mari).Pagina principală a unui domeniu este fişierul index.html. Această pagină este setată a fi afişatăautomat la vizitarea unui domeniu. De exemplu la vizitarea domeniului www.nume.ro esteafişată pagina www.nume.ro/index.html. Unele etichete permit utilizarea de atribute care pot avea anumite valori: <etichetăatribut="valoare"> ... </etichetă>Elementele de marcare • Marcare structurală. Descrie scopul unui text. De exemplu: <h1>Document</h1> Direcţionează browserul pentru a reda "Document" ca pe cel mai important titlu. Marcarea structurală nu are un anumit stil predefinit, dar cele mai multe browsere webau standardizat modul in care acestea sunt afişate. De exemplu, titlurile importante (h1, h2, etc.)sunt aldine şi mai mari decat restul textului. De notat că "h1" este folosit doar o singură dată perpagină deoarece cu el este marcat titlul ei. • Marcare pentru prezentare. Descrie cum apare un text, indiferent de funcţiile sale. De exemplu: <strong>îngroşat</strong> 22
    • 4. Limbaje de programare folosite Va afişa textul "ingroşat" cu litere groase, aldine. • Marcare pentru hiperlink. Leagă părţi ale unui document cu alte documente. De exemplu: <a href="http://upb.ro/">Politehnica Bucuresti</a> Va reda Wikipedia romanească ca hiperlink către un URL specificat. • Elemente speciale (widget). Creează obiecte, cum ar fi butoanele şi listele. Doar marcatorii de prezentare (impreună cu foile de stiluri - CSS) determină cumconţinutul din interiorul marcatorului va fi prezentat. Ceilalţi marcatori spun browserului ceobiecte să redea sau ce funcţii să execute.Mai mult, Pentru o mai bună reprezentare a informaţiilor in pagina web foloseşte CSS (CascadingStyle Sheets), care este un standard pentru formatarea elementelor unui document HTML.Stilurile se pot ataşa elementelor HTML prin intermediul unor fişiere externe sau in cadruldocumentului, prin elementul <style> şi/sau atributul style. CSS se poate utiliza şi pentruformatarea elementelor XHTML, XML şi SVGL. JavaScript este un limbaj de programare orientat obiect bazat pe conceptulprototipurilor. Este folosit mai ales pentru introducerea unor funcţionalităţi in paginile web, codulJavascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentrufolosirea sa in construirea siturilor web, dar este folosit şi pentru acesul la obiecte incastrate(embedded objects) in alte aplicaţii. Cea mai des intalnită utilizare a JavaScript este in scriptarea paginilor web. Programatorii web pot ingloba in paginile HTML script-uri pentru diverse activităţi cum arfi verificarea datelor introduse de utilizatori sau crearea de meniuri şi alte efecte animate. 23
    • 5. Proiectarea conceptuala a bazei de date5 Proiectarea conceptuală a bazei de dateSumar. Pentru realizarea aplicaţiei este necesară construirea bazei de date folosind un serverde gestiune baze de date (SGBD), şi anume MySQL. In acest capitol se va prezenta etapă cuetapă realizarea unui proiect conceptual al bazei de date (BD).5.1 Noţiuni generale Faza de proiectare conceptuală a bazelor de date incepe cu crearea unui model de dateconceptual al organizaţiei, care este total independent de detaliile privind implementarea, cumar fi elementele de software ale sistemului SG-BD ţintă, programele aplicaţie, limbajele deprogramare, platforma hardware sau orice consideraţie de ordin fizic. Prima etapă in proiectarea BD constă in realizarea unor modele de date conceptuale. Utilitatea oricărei colecţii de date in obţinerea de infomaţii depinde de modul deorganizare al datelor. Regulile după care sunt organizate şi manipulate datele depind demodelul de date utilizat. Principalele modele de date utilizate in proiectarea SGBD-urilor sunt:modelul ierarhic (arborescent), modelul reţea, modelul relaţional si modelul orientat pe obiecte. Mai mult, in proiectarea bazelor de date se folosesc 2 categorii de modele: - Modele conceptuale de nivel înalt (modelul Entitate-Asociere, modelul Entitate-Asociere -Extins) – descriu concis colecţiile de date care modelează activitatea dorită fără sădetalieze modul de reprezentare sau de prelucrare a datelor - schemă conceptuală de nivelînalt. - Modele specializate (modelul ierarhic, modelul reţea, modelul relaţional, etc.) descriureprezentarea mulţimilor de entităţi şi a asocierilor dintre acestea prin structuri de date specifice- schemă conceptuală (logică). Trecerea de la modelul conceptual de nivel inalt la un model de date specific, implicăproiectarea logică a bazei de date. Modelele ierarhice (arborescente) sunt construite astfel incat au un element unic 24
    • 5. Proiectarea conceptuala a bazei de dateradacină şi un număr finit de succesori, care la randul lor au alte noduri succesoare, pană lanodurile terminale, care nu mai au alţi succesori. Orice nod, exceptand nodul rădăcină, areun predecesor unic. Relaţiile care se stabilesc in cadrul acestor modele sunt de tipul 1-n. Modelele de tip reţea sunt de tip graf cu legături bidirecţionale intre noduri. Un nodpoate avea mai multi predecesori şi mai mulţi succesori. In aceste modele relaţiile stabilitesunt de tipul m-n. Modelele de tip relaţional sunt de tip tabel de date, care au fost aduse intr-o formăoptimă. In astfel de modele relaţiile stabilite admit orice tip de relaţie: 1-n; n-m. Modelele orientate obiect redau structuri de date complexe ale realităţii, impreună cutoate caracteristicile acestora, sub formă de obiecte. Aceste modele de date admit orice tipde relaţie: 1-n; n-m. Un model de date este compus din doua părţi: set de reguli de structurare a datelor(materializate prin LDD) , set de operaţii permise asupra datelor (materializate prin LMD). Pentru folosirea modelului de date adecvat este necesar să se efectueze un studiu şi oanaliză privind situaţia reală, pentru identificarea necesarului de informaţii si a modului dereprezentare, precum şi a cerinţelor de prelucrare a acestor informaţii. Modelele de datenecesită identificarea structurii modelului, a operatorilor care acţionează asupra structurilor dedate şi a restricţiilor pentru menţinerea corectitudinii datelor. Structura modelului presupune identificarea obiectelor (care sunt denumite entităţi), acaracteristicilor acestora (denumite atribute sau campuri de date) şi a legăturilor (denumiterelaţii sau asocieri). Acest lucru este descris in cele ce urmează mai jos.5.2 Modelul Entitate-Asociere Modelul Entitate-Asociere defineşte mulţimile de entităţi şi asocierile dintre ele, dar nuimpune nici un mod specific de structurare şi prelucrare (gestiune) a datelor.5.2.1 Identificarea tipurilor de entităţi In această etapă obiectivul este identificarea principalelor tipuri de entităţi din vedereautilizatorului asupra companiei. 25
    • 5. Proiectarea conceptuala a bazei de date O metodă de identificare a entităţilor constă in examinarea specificaţiei cerinţelorcorespunzătoare unei anumite funcţii a utilizatorului in cadrul intreprinderii. Din aceastăspecificaţie se identifică substantivele sau expresiile substantivale menţionate. De asemenea,se caută obiectivele principale, cum ar fi: personale, locurile sau conceptele de interes,excluzandu-se substantivele care reprezintă doar calităţi ale altor obiecte. O modalitate alternativă de identificare a entităţilor este de a căuta obiectele care existăpe cont propriu. Uneori, entităţile sunt greu de identificat, datorită modului in care sunt prezentate incadrul specificaţiei cerinţelor utilizatorului, uneori utilizatorii se exprimă prin exemple sauanalogii. Nu este intotdeauna evident dacă un anumit obiect este o entitate, o relaţie sau unatribut. Pe măsură ce se identifică entităţile, li se atribuie denumiri care să aibă semnificaţie şisă fie evidente pentru utilizatori. Denumirea şi descrierile entităţilor sunt reunite intr-un dicţionarde date. Atunci cand este posibil se documentează numărul estimat de apariţii ale fiecăreientităţi. O entitate cunoscută sub denumiri diferite, acestea se numesc aliasuri sau sinonime şisunt inregistrate in dicţionarul de date. Prin entitate inţelegem mulţimea tuturor elementelor de un anumit tip (care prezintăaceleaşi caracteristici). Entitatea sau tabelul bidimensional, constituie unitatea informaţională elementară dinstructura unei organizări de date prin care se reflectă elemente reale sau abstracte cedefinesc segmente omogene ale realităţii obiective caracterizate prin nume unic, numărmaxim de apariţii (realizări) şi o structură specifică acestei realităţi pe care o descrie. Prin instanţă a unei entităţi inţelegem un singur element, bine individualizat, unic, dinmulţimea elementelor care formează entitatea respectivă. In cazul nostru, s-au creat următoarele entităţi: • Useri_admini • Foldere • Fisiere • Istoric • Workflow • Activitaţi Entităţile sunt de două tipuri: - entităţi independente (sau tari): au existenţa independentă de alte entităţi; 26
    • 5. Proiectarea conceptuala a bazei de date - entităţi dependente (sau slabe): sunt formate din instanţe, care işi justifică incadrareain clasa respectivă doar atata timp cat intr-o altă entitate (tată) există o anumită instanţă. Fiecare entitate este descrisă de o mulţime de proprietăţi esenţiale numite atribute.Pentru diferitele elemente ale entităţii, atributele pot să primească valori din anumite mulţiminumite domeniul atributului respectiv.5.2.2 Identificarea tipurilor de asocieri In această etapă obiectivul este identificarea relaţiilor importante care există intreentităţile identificate. Atunci cand se identifică entităţile, o metodă este de a căuta substantivele in specificaţiacerinţelor utilizatorului. De regulă, asocierile sunt indicate prin expresii verbale. Asocierea descrie o legatură specifică, delimitată logic, intre două tipuri semnificative deentităţi sau chiar in interiorul entităţilor, prin care se defineşte gradul de implicare a unei entităţiin raport cu altele. Pentru a stabili tipul legăturii, trebuie determinate numerele minime şi maximeposibile de realizări ale unei entităţi, care pot fi asociate cu o realizare a unei alte entităţi cucare se află in legătură. O astfel de implicare reprezintă cardinalitatea relaţiei (legăturii). Pe măsură ce se identifică tipurile de relaţii, li se atribuie denumiri care au semnificaţie şisunt existente pentru utilizator. Dupa numărul de entităţi distincte ce participă la asociere, relaţiile pot fi: - relaţii binare, in care se realizează legături intre două entităţi distincte; - relaţii recursive, in care se realizează legături ale entităţilor cu ele insele; - relaţii complexe, in care se realizează legături intre mai mult de două entităţidistincte. – destul de rare. După gradul asocierii (valorile maxime identificate), relaţiile din cadrul uneiorganizări de date pot fi de diferite tipuri şi anume: - de tipul 1-1, prin care se semnifică conexiunea simplă; - de tipul 1-n şi n-m prin care se semnifică conexiunea multiplă. Raport de cardinalitate: raportul dintre valorile cardinalităţilor unei asocieri faţă de douădin mulţimile de entităţi asociate. 27
    • 5. Proiectarea conceptuala a bazei de date - Exemple pentru asocieri binare: 1:1, 1:N, N:1, M:N - Asocierile multiple (k > 2) prezintă cate un raport de cardinalitate pentru fiecarepereche de mulţimi de entităţi pe care le asociază. Noţiunile de entitate, atribut şi relaţie reprezintă (formează) esenţa unui model denumitEntitate - Asociere (EA), care asigură definirea şi modelarea structurii unei organizări de date. Modul de stabilire a tipurilor de entităţi şi a asocierilor nu este unic: aceeaşifuncţionalitate se poate obţine printr-o varietate de diagrame EA. O mulţime de entităţi se denumeşte printr-un substantiv, iar o asociere se denumeşte(de regulă) printr-un verb, deoarece o asociere reprezintă o interacţiune intre entităţi. Modelul EA nu precizează modul cum sunt realizate asocierile intre mulţimile de entităţi:acest aspect depinde de modelul de date specializat utilizat pentru definirea bazei de date. In cadrul fazei de proiectare a BD se recomandă modelul E-A oriunde este necesar,pentru a servi la construirea unei imagini a sectorului de intreprindere care urmează să fiemodelat. În cazul aplicaţiei de faţă, vom avea asocieri binare şi recursive. Astfel, se stabilesc asocieri binare intre mulţimile de entităţi: useri_admini – foldere(relaţie de tip 1-1), foldere – fişiere (relaţie de tip 1-n), drepturi – foldere (relaţie de tip n-n),drepturi – fişiere (relaţie de tip n-n). Asocierea recursivă se stabileşte in cazul mulţimii entităţiiuseri_admini, fiind de tip 1-n, intrucăt un administrator poate gestiona mai mulţi utilizatori iarunui utilizator ii corespunde un singur administrator. O asociere poate prezenta unul sau mai multe atribute proprii cu rol de a caracteriza,explicita, legătura stabilită intre entităţile participante la asociere. Asocieri din cadrul aplicaţiei de management al documentelor: – GESTIONARE (intre useri_admini şi fişiere/foldere) – INIŢIAZĂ (intre useri_admini şi workflow) – PRECIZARE FIŞIER (intre workflow şi fişiere) – SPECIFICARE UTILIZATOR (intre useri_admini şi drepturi) – SPECIFICARE FIŞIER (intre fişiere şi drepturi) – SPECIFICARE FOLDER (intre foldere şi drepturi) – INREGISTRARE FOLDER (intre foldere şi istoric) – INREGISTRARE FIŞIER (intre fişiere şi istoric) – INREGISTRARE UTILIZATOR (intre useri_admini şi istoric) 28
    • 5. Proiectarea conceptuala a bazei de date De exemplu, intre entităţile useri_admini şi fişiere ori useri_admini şi foldere poate existao asociere GESTIONARE, care implică faptul că un fişier sau folder are un singur utilizatorcreator.5.2.3 Identificarea şi asocierea atributelor cu tipurile de entităţi saurelaţii Obiectivul acestei etape constă in asocierea atributelor cu tipurile de entităţi sau relaţiiadecvate. Această etapă din constă in identificarea tipurilor privind entităţile şi relaţiile caretrebuie reprezentate in BD. Atributele pot fi identificate acolo unde substantivul sau expresia substantivală exprimă oproprietate, calitate, identificator sau caracteristică a uneia din acela entităţi sau relaţii. Atribute simple/compuse Este foarte important de a determina dacă un atribut este simplu sau compus. Atributelecompuse sunt formate din atribute simple. De exemplu, atributul Adresă poate fi simpluconţinand toate detaliile adresei ca o singură valoare. Dar atributul poate fi şi compus, fiindformat din atribute simple care conţin detaliile adresei ca valori separate in atribute. Stradă,zonă, oraş şi cod P. Opţiunea de a reprezenta detaliile adresei ca un atribut simplu sau compuseste determinată de cerinţele utilizatorului. In cadrul acestei etape, este important de identificat toate atributele simple care vor fireprezentate in modelul de date conceptual-inclusiv acela care formează atributele compuse. De exemplu, in cadrul aplicaţiei noastre, atributul Adresă specific entităţii Useri_adminieste unul compus fiind alcătuit din atributele simple Oraş şi Cod_postal. Atributele derivate Atributele ale căror valori pot fi deduse din valorile altor atribute se numesc derivate saucalculate. Un atribut sau o mulţime de atribute pentru care valorile asociate determină in mod unicorice element al entităţii respective se numeşte cheie. Orice entitate admite cel puţin o cheie,deci toate elementele unei entităţi sunt distincte. In cazul in care există elemente care să aibăaceleaşi valori pentru toate atributele, se ia drept cheie un atribut suplimentar reprezentat denumărul asociat elementului in entitatea respectivă, care defineşte in mod unic elementul. Determinarea atributelor cheielor candidate 29
    • 5. Proiectarea conceptuala a bazei de date In această sub-etapă obiectivul constă in identificarea cheii (cheilor) candidate pentrufiecare entitate şi dacă există mai mult decat o cheie candidat – selecţionarea celei care va ficheia primară. O cheie candidat este un atribut sau un set minimal de atribute ale unei entităţi, careidentifică in mod unic fiecare apariţie a acesteia. Se poate identifica mai mult decat o singurăcheie candidat, dar in acest caz trebuie să alegem una dintre ele drept cheie primară, celelaltechei candidat se numesc chei alternative. La alegerea unei chei primare din cele candidate trebuie să se ţină seama deurmătoarele, care ajută la efectuarea selectării: • se alege cheia candidat cu setul minim de atribuţi; • se alege cheia candidat căreia probabilitatea de modificare a valorii este mai mică; • se alege cheia candidat care are probabilitatea mai mică să-şi piardă caracterul deunitate in viitor; • se alege cheia candidat cu cel mai mic număr de caractere; • se alege cheia candidat cea mai prietenoasă din punct de vedere al utilizatorului. In procesul de identificare al cheilor primare se constată dacă o entitate este tare sauslabă. O altă clasificare a atributelor unei entităţi, le prezintă in două feluri: – atribute de identificare (formand impreună identificatorul entităţii) sunt acele atributecare permit distincţia intre instanţele aceleiaşi entităţi; – atributele de descriere (sau descriptori), care sunt folosiţi pentru memorareacaracteristicilor suplimentare ale instanţelor. In cazul aplicaţiei noastre, atributele asociate entităţilor sunt: Atributele entităţii Useri_admini: - id - nume_org - user - parola - nume - prenume - email - telefon - oras 30
    • 5. Proiectarea conceptuala a bazei de date - adresa - cod_postal - data - timp - id_folder - id_admin In exemplul de mai sus, id este atribut de identificare (deoarece nu pot exista doiutilizatori cu acelaşi id), sau o cheie primară, pe cand celelalte atribute sunt descriptori şi cheisecundare. • Atributele entităţii Foldere: - id - nume - folder_id - data - timp - owner • Atributele entităţii Fisiere: - id - nume - folder_id - data - timp - owner - versiune • Atributele entităţii Drepturi: - id - id_fisier -r - rwd - rwda - id_user 31
    • 5. Proiectarea conceptuala a bazei de date • Atributele entităţii Workflow: - id - nume - tip - initiator - instructiuni - stare - transmitere - data - timp - id_fisier - exp Atributele entităţii Activităţi: - id - nume - id_user - stare - viz - nota - id_workflow Pentru fiecare relaţie s-a identificat un anumit atribut, id , ce reprezintă atributul relaţieirespective dintre cele două entităţi.5.2.4 Diagrama Entitate-Asociere Diagramele Entitate – Asociere (Ea) se utilizează pentru a reprezenta mai uşor entităţileşi modelul in care sunt legate acestea unele de altele. Convenţia de reprezentare grafică a elementelor, care participă la formarea uneidiagrame EA, este următoarea: - entităţile se reprezintă prin dreptunghiuri, in care este inscris numele entităţii. In cazulentităţilor dependente, conturul va fi cu linie dublă; 32
    • 5. Proiectarea conceptuala a bazei de date - atributele se reprezintă prin cercuri (sau ovale), in interiorul cărora apare numeleatributului şi care sunt conectate cu un segment de dreaptă cu entitatea de care aparţin. Pentru a distinge atributele de identificare de cele de descriere, numele celor deidentificare va fi subliniat; - asocierile se reprezintă prin romburi (dacă conectează una sau două entităţi) saupoligoane regulate (dacă conectează mai mult de două entităţi) conectate prin segmente dedreaptă la entităţile pe care le leagă, avand inscris in interior (sau alături) numele asocierii. In figura de mai jos este prezentată convenţia de reprezentare a elementelor modeluluiEA. 33
    • 5. Proiectarea conceptuala a bazei de dateDiagrama modelului Entitate-AsociereAtributele entităţilor de mai sus, sunt reprezentate schematic astfel:• entitatea Useri_admini 34
    • 5. Proiectarea conceptuala a bazei de date• entitatea Foldere• entitatea Fisiere 35
    • 5. Proiectarea conceptuala a bazei de date • entitatea Drepturi5.3 Modelul relaţional5.3.1 Noţiuni generale Modelul relaţional ca şi orice alt model de date utilizat in proiectarea logică a bazelor dedate eliberează utilizatorul de cunoaşterea detaliilor despre structura fizică şi metodele de accesla date. In afară de aceasta, el are două avantaje suplimentare: e simplu şi elegant. Simplitateasa constă in structurile de date omogene in formă de relaţii tabelare. Iar eleganţa modelului seexplică prin temelia sa ştiinţifică. El este riguros din punct de vedere matematic graţie faptului căse sprijină pe bine puse la punct teoriile matematica relaţiilor şi logica de ordinul unu. Modelul relaţional a fost primul exemplu de model de date formal şi a fost propus de E.Codd in 1970. Prin model datele utilizatorului sunt reprezentate şi manipulate in mod abstract.Modelul de asemenea presupune tehnici ce ajută administratorul de a detecta şi corectaposibilele probleme de proiectare ce pot apărea o dată cu pregătirea datelor pentruimplementare intr-un SGBD concret. 36
    • 5. Proiectarea conceptuala a bazei de date Orice model de date, conform unei sugestii a lui Codd, trebuie să se bazeze pe treicomponente: structurile de date, constrangerile de integritate şi operatorii de manipulare adatelor. - Structurile de date. Structurile sunt definite de un limbaj de definire a datelor (datadefinition language). Datele in modelul relaţional sunt structurate in relaţii bidimensionale.Elementele principale ale structurii relaţionale sunt relaţiile, tuplurile, atributele, domeniile. - Constrângerile de integritate. Prin integritatea datelor se subinţelege că datele rămanstabile, in siguranţă şi corecte. Integritatea in modelul relaţional este menţinută de constrangeriinterne care nu sunt cunoscute utilizatorului. - Manipularea datelor. Relaţiile pot fi manipulate utilizand un limbaj de manipulare adatelor (data manipulation language). In modelul relaţional, limbajul foloseşte operatoriirelaţionali bazaţi pe conceptul algebrei relaţionale. In afară de aceasta, există limbajeechivalente algebrei relaţionale, cum ar fi calculul relaţional orientat pe tuplu şi calculul relaţionalorientat pe domeniu. O bază de date relaţională este compusă dintr-o mulţime finită de relaţii, fiecare relaţiereprezentand un tip de entitate sau o asociere dintre două sau mai multe tipuri (mulţimi) deentităţi. Din această definiţie rezultă că intr-o bază de date fiecare relaţie este unică (nu existădouă sau mai multe relaţii de acelaşi fel), dat fiind că o bază de date este o mulţime de relaţii. Orelaţie se defineşte prin intermediul atributelor sale. Atributele unei relaţii sunt atributele tipului de entitate sau de asociere pe care ilreprezintă relaţia respectivă. Fiecare atribut al unei relaţii are un domeniu de definiţie şi poate lua o singură valoare(din domeniul său de definiţie) pentru fiecare tuplu al relaţiei, ceea ce inseamnă că atributele aunumai valori scalare. Un domeniu de definiţie este o mulţime cu nume de valori atomice de acelaşi tip,avand o anumită semnificaţie, din care işi iau valori atributele relaţiilor. Nu trebuie confundată atomicitatea din punct de vedere semantic a valorii unui atribut cuatomicitatea structurii de date prin care este reprezentată valoarea acelui atribut in memoriacalculatorului. De exemplu, un atribut care desemnează un nume (de persoană, de instituţie, deprodus, de componentă, etc.) se reprezintă printr-un şir (vector) de caractere, care, bineinţeles,poate fi descompus in elementele componente (caracterele), dar sistemul de gestiune nuatribuie nici o semnificaţie unui element separat, ci numai intregii valori (şirul de caractere). 37
    • 5. Proiectarea conceptuala a bazei de date Schema relaţiei, notată R(A1A2,...Ai,...An), este compusă din numele relaţiei (R) şi dinlista ordonată a atributelor sale A1,A2,...Ai,...An, fiecare atribut Ai definit pe domeniul său dedefiniţie, D(Ai). Schema relaţiei este folosită pentru a descrie relaţia respectivă şi se mainumeşte şi tipul sau intensiunea relaţiei. Numărul de atribute ale schemei unei relaţii senumeşte gradul relaţiei. O relaţie R definită de schema R(A1,A2,...Ai,...An) este o mulţime de n-tupluri t, fiecaretuplu fiind o listă ordonată de n valori t = <v1,v2,...vi,....vn>, unde 1 ≤ i ≤ n şi vi este valoareaatributului Ai, aparţinand domeniului său de definiţie D(Ai). O relaţie corespunde, in general, unei mulţimi de entităţi din diagrama E-A (Entitate-Asociere) a unei baze de date, iar un tuplu reprezintă o entitate din mulţimea de entităţi. Atributele tipului de entitate din modelul conceptual de nivel inalt devin atributele relaţieiin modelul relaţional. Ca exemplu de relaţie se defineşte relaţia cu schema Fisiere (sau FISIERE)corespunzătoare tipului de entitate ―fisiere‖ (descris in exemplele prezentate anterior) astfel: FISIERE (Id,Nume,Folder_id,data,timp,owner,versiune) Domeniile de definiţie ale atributelor se specifică prin numele domeniului, semnificaţiaacestuia, tipul de date şi restricţii asupra valorilor in cadrul acelui tip de date. Exemple de domenii relaţionale ale atributelor: • D_Nume: domeniul numelor fişierelor gestionate, reprezentate printr-un şir demaximum 255 caractere. Cel mai frecvent insă, in implementarea modelului relaţional in cadrul diferitelor sistemede gestiune a bazelor de date, ca domenii de definiţie ale atributelor se folosesc direct tipurilede date predefinite ale limbajului de definiţie a datelor (LDD) specific acelui SGBD. - în cazulnostru SQL, respectiv MySql. Reprezentarea relaţiilor prin tabele Un tabel este o reprezentare a unei relaţii şi este compus din următoarele părţi: • Numele tabelului, care este identic cu numele relaţiei pe care o reprezintă. • Un număr de coloane egal cu numărul de atribute ale relaţiei, fiecare coloanăreprezentand un atribut. • Capul tabelului, in care se inscriu numele atributelor relaţiei, fiecare atribut fiind inscrisin coloana corespunzătoare. • O mulţime de linii, fiecare linie corespunzand unui tuplu (deci unei entităţi); in fiecareelement al unei linii se inregistrează valoarea atributului corespunzător coloanei in care se aflăelementul respectiv. 38
    • 5. Proiectarea conceptuala a bazei de dateConstrângeri de integritate Constrangerile de integritate sunt reguli care se definesc la proiectarea unei bazei dedate şi care trebuie să fie respectate de orice stare a acesteia. Relaţiile unei baze de datereflectă realitatea modelată şi de aceea valorile pe care le conţin trebuie să respecte anumitereguli, care să corespundă celor din realitate. Constrangerile se pot clasifica după locul undesunt definite şi după modul in care sunt definite. Din punct de vedere al locului unde suntdefinite, constrangerile pot fi constrangeri intra-relaţie şi constrangeri inter-relaţii. Constrangerile intra-relaţie sunt reguli care se impun in cadrul unei singure relaţii şiasigură integritatea datelor acesteia. Ele sunt, la randul lor, de trei categorii: • Constrangeri de domeniu, care sunt condiţii ce se impun valorilor atributelor şi asigurăintegritatea domeniilor atributelor. • Constrangeri de tuplu, care sunt condiţii ce se impun tuplurilor unei relaţii şi asigurăidentificarea corectă a tuplurilor prin intermediul cheilor (primare sau candidate). • Constrangeri impuse prin dependenţe de date (dependenţe funcţionale, multivaloricesau de joncţiune); acestea sunt constrangeri prin care valorile unor atribute ale unei relaţiidetermină valorile altor atribute ale aceleiaşi relaţii. Constrangerile inter-relaţii sunt reguli care se impun intre două sau mai multe relaţii. Cele mai importante constrangeri inter-relaţii sunt constrangerile de integritareareferenţială, care se realizează prin intermediul cheilor străine şi asigură asocierea corectă arelaţiilor.Algebra relaţională Algebra relaţională exprimă interogările prin aplicarea unor operatori specializaţi(operatorii algebrei relaţionale) asupra relaţiilor. E.F. Codd a propus opt operaţii ale algebreirelaţionale, grupate in două categorii: • Operaţii pe mulţimi: reuniunea, intersecţia, diferenţa şi produsul cartezian. Acesteoperatii reprezintă adaptarea operatiilor corespunzătoare din teoria mulţimilor şi acţioneazăasupra relaţiilor văzute ca mulţimi de elemente (tupluri), fără a lua in consideraţie compoziţiafiecărui element. • Operaţii relaţionale speciale: restricţia, proiecţia, joncţiunea şi diviziunea. Acesteoperaţii iau in consideraţie compoziţia tuplurilor, formate din valori ale atributelor relaţiilor. Toate aceste operaţii trebuie să asigure proprietatea de inchidere, adică rezultatulfiecărei operaţii trebuie să fie tot o relaţie. Această proprietate permite efectuarea operaţiilorimbricate: proiecţia unei joncţiuni dintre o relaţie şi restricţia aplicată altei relaţii, etc. 39
    • 5. Proiectarea conceptuala a bazei de date Restricţia şi proiecţia sunt operaţii unare (au un singur operand, o relaţie); operaţiile pemulţimi, joncţiunea şi diviziunea sunt operaţii binare (au doi operanzi, două relaţii).5.3.2 Descrierea structurii tabelelor folosite şi legăturilor dintreacestea Mai intai, vom prezenta concretiza cat mai succint anumite noţiuni legate de structurabazei de date folosită pentru aplicaţia de management al documentelor. Aşadar, O cheie primară sau principală reprezintă una sau mai multe coloane ale carorvalori identifică in mod unic toate liniile unui tabel. Cheia primară este utilizată pentru a face referinţe la o singură linie. Fără cheia primară,actualizarea sau stergerea de linii specifice devine foarte dificilă, deoarece nu există nici omodalitate garantat sigură pentru a face referire numai la liniile ce vor fi afectate. Cheie straină sau externă este o coloană sau un set de coloane cu valori din setul devalori a cheii primare a unei alte tabele cu care face astfel o legătură. Dacă o cheie străinăapare in mai mult de o tabelă, aceasta este de regulă o legătură intre cele două tabele. Astfel, legăturile intre tabele se fac prin intermediul cheilor primare şi străine. Fiecare coloană are un set de atribute care pot fi completate (sau nu) pentru a preluaanumite caracteristici. In cazul atributelor avem mai multe opţiuni, in funcţie de serverul de gestiune al bazei dedate (in cazul nostru MySql): - să alegem tipul variabilei, folosit pentru a menţiona cu ce tip de date poate fi completatcampul respectiv (ex: int, varchar, date, text etc.); - să setăm dimensiunea maximă admisă; - avem posibilitatea de a completa o valoare nulă (NULL sau NOT_NULL); Campurile marcate NOT NULL sunt acele campuri ale căror valori trebuie introduse infiecare inregistrare, in timp ce campurile NULL sunt acelea care nu necesită de fiecare datăintroducerea unei valori. - avem posibilitatea de a selecta o valoare default cu care vor fi completate toateinregistrările coloanei respective; - putem seta auto-increment (incrementare automată la fiecare inregistrare nouă dintabelă), unique (nu pot exista două sau mai multe valori identice), index, primary key (cheieprimară), foreign key (cheie straină). 40
    • 5. Proiectarea conceptuala a bazei de date Inainte de prezentarea tabelelor, am creat o bază de date cu MySQL server versiunea5.1.30. Baza de date se numeşte „diploma” şi a fost realizată folosind următoarea sintaxă SQL:CREATE DATABASE `diploma` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;USE `diploma`; Acestea fiind zise, structura tabelelor in baza de date corespunzătoare aplicaţiei noastrese prezintă astfel: • Tabela Useri_adminiEste alcatuită din următoarele câmpuri, urmate de tipul şi domeniul acestora:Id int(11)nume_org varchar(25)user varchar(20)parola varchar(255)nume varchar(20)prenume varchar(20)email varchar(30)telefon varchar(15)oras varchar(20)adresa varchar(150)cod_postal varchar(10)data DATEtimp TIMEid_folder int(11)id_admin int(11)Tabela Useri_admini este reprezentată schematic astfel: 41
    • 5. Proiectarea conceptuala a bazei de date Coloana id reprezintă o cheie primară. La adăugarea unei noi inregistrări in aceastătabelă, valoarea cheii id respective se va incrementa automat, fapt ce garantează unicitateainregistrărilor din tabelă. Coloana id_folder şi id_admin reprezintă chei străine, care sunt chei primare in tabelelefoldere şi useri_admini. După cum observăm, cheia străină id_admin face referinţă cătreaceeaşi tabelă din care face parte. In tabela există utilizatori administratori care reprezintă oanumită organizaţie şi utilizatori creaţi de utilizatorii administratori respectivi, avand drepturilimitate in ceea ce priveşte managementul documentelor aceleiaşi organizaţii. In cazul in careinregistrarea introdusă in tabelă denotă un utilizator administrator, valoarea campului id_adminva fi 0, altfel va indica o valoare a cheii primare din aceeaşi tabelş ce reprezintă utilizatoruladministrator ce gestionează utilizatorul nou introdus. Coloanele nume_org şi user au valori unice intrucat nu pot exista doi useri cu acelaşinume sau două organizaţii cu acelaşi nume. Codul SQL specific creării tabelei Useri_admini in baza de date (denumită „diploma‖)este:CREATE TABLE IF NOT EXISTS `useri_admini` ( 42
    • 5. Proiectarea conceptuala a bazei de date`id` int(11) NOT NULL AUTO_INCREMENT,`nume_org` varchar(25) NOT NULL,`user` varchar(20) NOT NULL,`parola` varchar(255) NOT NULL,`nume` varchar(20) NOT NULL,`prenume` varchar(20) NOT NULL,`email` varchar(30) NOT NULL,`telefon` varchar(15) NOT NULL,`oras` varchar(20) NOT NULL,`adresa` varchar(150) NOT NULL,`cod_postal` varchar(10) NOT NULL,`data` date NOT NULL,`timp` time NOT NULL,`id_folder` int(11) NOT NULL,`id_admin` int(11) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `nume_org` (`nume_org`),UNIQUE KEY `user` (`user`),KEY `id_folder` (`id`),KEY `id_admin` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=45 ;• Tabela FoldereAre urmatoarea structură:Id int(11)nume varchar(25)folder_id int(11)data varchar(255)timp varchar(20)owner int(11) Schematic, tabela arată astfel: 43
    • 5. Proiectarea conceptuala a bazei de date Coloanele owner şi folder_id sunt chei străine.Cheia străină owner implică cheia primară(id) din tabela Useri_admini iar cheia straină folder_id face referire către cheia primară (id) dinaceeaşi tabelă Foldere. Fiecare director (sau folder) are un singur utilizator creator reprezentatprin cheia (id) şi un singur părinte, care este tot un director (folder), reprezentat prin cheia(folder_id). Campurile data şi timp reprezintă data şi ora la care a fost creat folderul respectiv. Sintaxa SQL specifică creării tabelei foldere este următoarea:CREATE TABLE IF NOT EXISTS `foldere` (`id` int(11) NOT NULL AUTO_INCREMENT,`nume` varchar(25) NOT NULL,`folder_id` int(11) NOT NULL,`data` date NOT NULL,`timp` time NOT NULL,`owner` int(11) NOT NULL,PRIMARY KEY (`id`)KEY `id_folder` (`id_folder`),KEY `owner` (`owner`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1265 ;• Tabela Fisiere Are următoarea structură:Id int(11)nume varchar(25) 44
    • 5. Proiectarea conceptuala a bazei de datefolder_id int(11)data varchar(255)timp varchar(20)owner int(11) Ca şi in cazul tabelei Foldere, in tabela Fişiere avem aceleaşi chei străine owner şifolder_id. In acest caz, folder_id face referinţă către cheia primară (id) din tabela Foldere şireprezintă faptul că un fişier are un tată (sau este stocat in directorul tată) reprezentat prin cheiaid in tabela Foldere. Coloana versiune, reprezintă versiunea curentă (ultima versiune) la care a ajuns fişierulrespectiv. Sintaxa SQL specifică creării acestei tabele este următoarea:CREATE TABLE IF NOT EXISTS `fisiere` (`id` int(11) NOT NULL AUTO_INCREMENT,`nume` varchar(255) NOT NULL,`folder_id` int(11) NOT NULL,`data` date NOT NULL,`timp` time NOT NULL,`owner` int(11) NOT NULL,PRIMARY KEY (`id`),KEY `id_folder` (`id_folder`),KEY `owner` (`owner`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ; 45
    • 5. Proiectarea conceptuala a bazei de date• Tabela Drepturi Prezintă următoarea structură:Id int(11)id_folder varchar(25)id_fisier int(11)r int(1)rwd int(1)rwda int(1)id_user int(11) După cum observăm, cheia primară este id, iar id_folder, id_fisier şi id_user reprezintăchei străine cu aceeaşi semnificaţie ca şi in cazul tabelelor descrise mai sus. Valorile campurilor r, rwd, rwda pot fi 0 sau 1. Pe larg, un fişier sau director (folder) poate avea drepturi acordate pentru anumiţiutilizatori. Ele sunt interpretate in funcţie de valorile r (read), rwd (read-write-delete), rwda(„read,write,delete,administer‖). Sintaxa SQL conform căreia s-a creat această tabelă este următoarea:CREATE TABLE IF NOT EXISTS `drepturi` (`id` int(11) NOT NULL AUTO_INCREMENT,`id_folder` int(11) NOT NULL,`id_fisier` int(11) NOT NULL,`r` int(1) NOT NULL, 46
    • 5. Proiectarea conceptuala a bazei de date`rwd` int(1) NOT NULL,`rwda` int(1) NOT NULL,`id_user` int(11) NOT NULL,PRIMARY KEY (`id`)KEY `id_folder` (`id_folder`),KEY `id_fisier` (`id_fisier`),KEY `id_user` (`id_user`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=337 ;• Tabela Workflow Cheile străine sunt reprezentate prin atributele initiator şi id_fisier care reprezintăidentificatorul utilizatorului care a creat fluxul de lucru respectiv si identificatorul fişierului pentrucare s-a creat acel flux. Sintaxa SQL conform căreia s-a creat această tabelă este următoarea:CREATE TABLE IF NOT EXISTS `workflow` (`id` int(11) NOT NULL AUTO_INCREMENT,`nume` varchar(80) NOT NULL,`tip` varchar(30) NOT NULL,`initiator` int(11) NOT NULL, 47
    • 5. Proiectarea conceptuala a bazei de date`instructiuni` text NOT NULL,`stare` varchar(30) NOT NULL,`transmitere` varchar(30) NOT NULL,`data` date NOT NULL,`timp` time NOT NULL,`id_fisier` int(11) NOT NULL,`exp` date NOT NULL,PRIMARY KEY (`id`)KEY `initiator` (`initiator`),KEY `id_fisier` (`id_fisier`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;• Tabela Activitati Atributul id_user reprezintă utilizatorul pentru care a fost creată activitatea, iarid_workflow reprezintă identificatorul unic al fluxului de lucru de care aparţine activitatearespectivă. Starea poate fi activ, aprobat sau respins. Sintaxa SQL corespunzătoare este:CREATE TABLE IF NOT EXISTS `activitati` (`id` int(11) NOT NULL AUTO_INCREMENT,`nume` varchar(80) NOT NULL,`id_user` int(11) NOT NULL, 48
    • 5. Proiectarea conceptuala a bazei de date`stare` varchar(30) NOT NULL,`viz` int(1) NOT NULL,`nota` text,`id_workflow` int(11) NOT NULL,PRIMARY KEY (`id`),KEY `id_workflow` (`id_workflow`)KEY `id_user` (`id_user`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; In cazul de faţă, baza de date conţine tabele corelate. Mai precis, intre aceste tabele sestabilesc legături de mai multe tipuri: - 1:n (una-la-mai multe). O inregistrare din primul tabel poate fi legată cu mai multeinregistrări din al doilea tabel. - 1:1 (una-la-una). O inregistrare din primul tabel este legată la o singură inregistrare dinal doilea tabel. - n:n (mai multe-la-mai multe).O inregistrare din primul tabel poate fi legată la mai multeinregistrări din al doilea tabel şi invers. Schema bazei de date relaţionale cu tabelele şi legăturile dintre acestea este prezentatămai jos: 49
    • 5. Proiectarea conceptuala a bazei de date Aşadar intre tabela Useri_admini şi tabela Fişiere există o dată, o legătură de tip 1:nintrucat un utilizator poate crea mai multe fişiere dar un fişier este creat de un singur utilizator.Pe de altă parte se stabileşte şi o legătură indirectă de tip n:n prin intermediul tabelei Drepturideoarece un un utilizator poate avea drepturi asupra mai ultor fişiere, iar un fişier poate aveaacordate drepturi pentru mai mulţi utilizatori. 50
    • 5. Proiectarea conceptuala a bazei de date Analog, legături asemănătoare se stabilesc şi intre tabela Useri_admini şi tabelaFoldere. Intre tabela Foldere şi tabela Fişiere se stabileşte o legătură de tip 1:n deoarce un folderpoate avea mai multe fişiere in conţinutul său, pe cand un fişier poate fi reprezentat doar intr-unsingur folder. In interiorul tabelei Useri_admini se stabileşte o asociere de tip 1:n, intrucat un utilizatoradministrator poate gestiona mai mulţi utilizatori subalterni, iar un utilizator subaltern poate figestionat doar de un singur utilizator administrator. Intre tabelele Workflow şi Activitati se stabileşte o asociere de tip 1:n, deoarece un fluxde lucru are asociate mai multe activităţi, iar o activitate poate fi stabilită in cadrul unui singurflux de lucru. 51
    • 6. Interogarea bazei de date6. Interogarea bazei de date6.1 Noţiuni generale Sub numele de interogare sau cerere sunt referite acele solicitări de date in mod directfără indicarea modului de obţinere. O cerere se poate lansa din fereastra de comenzi sau din interiorul unui program(aplicatia scrisa in PHP) pentru că ea funcţionează ca orice altă comandă dar se poate proiectaintr-un mod interactiv cu ajutorul utilitarului PhpMyAdmin. Una din cele mai importante comenzi şi mai des folosite este comanda SELECT. Această comandă permite specificarea datelor care vor constitui ieşirea din interogareprecum şi sursa acestora. O frază SQL include mai multe clauze ce sunt executate dupa optimizare de către SQL. Structura generală:SELECT lista campuri FROM lista tabele WHERE conditii de tip select, joinGROUP BY lista campuri grupareHAVING conditii pe functiiORDER BY lista campuri grupare Numai clauzele SELECT, FROM sunt obligatorii celelalte sunt dependente de naturacererii. Ordinea clauzelor group by, having, order by poate fi modificată. Rezultatul execuţiei este tot un tabel, de regulă temporar, care se suprascrie. Vom prezenta pe scurt cele mai frecvente comenzi MySql:1.Modificarea numelui unei tabele:mysql>alter table nume_vechi rename nume_nou; 52
    • 6. Interogarea bazei de date2.Adăugarea unei coloane:mysql>alter table nume_tabela add column nume_coloana tip atribute;3. Comanda “insert” Insert serveşte la adăugarea de inregistrări (linii) intr-un tabel al bazei de date curente. Sintaxa comenzii este:mysql>insert into nume_tabela(col1, col2,...) values (val1,val2,...); Valorile de tip text trebuie puse intre ghilimele simple.4. Comanda “update” Comanda update permite modificarea valorilor unor campuri dintr-un tabel. Sintaxa eieste:mysql> update nume_tabela set col1=val1,col2=val2...where col1=value; Deşi condiţia din clauza where poate fi complexă, de cele mai multe ori ea este de formacheie_primara=valoare.5. Comanda “select” Comanda select este cea mai complexă comandă din limbajul SQL şi este destinatăregăsirii unor anumite informaţii. Dacă se doreşte selectarea tuturor inregistrărilor dintr-o tabelă,sintaxa comenzii este:mysql>select * from nume_tabela; Dacă se doreşte selectarea doar a unor inregistrări dintr-o tabelă, care indeplinesc oanumită condiţie, sintaxa comenzii este:mysql>select * from nume_tabela where nume_camp=100; Dacă se doreşte selectarea doar a unor coloane dintr-o tabelă, sintaxa comenzii este:mysql>select nume_camp1,nume_camp2 from nume_tabela; Dacă se doreşte selectarea doar a unor coloane dintr-o tabelă, care indeplinesc oanumită condiţie, sintaxa comenzii este:mysql>select nume_camp1,nume_camp2 from nume_tabela where nume_camp=100;6. Comanda “delete” Pentru a şterge unul sau mai multe articole existente, dintr-o tabelă se va utilizacomanda delete cu sintaxa:mysql>delete from nume_tabela where nume_camp=100; 53
    • 6. Interogarea bazei de date Pentru a şterge toate articolele existente dintr-o tabelă, sintaxa comenzii este:mysql>delete from nume_tabela;7. Comanda “drop” Comanda drop permite suprimarea unui tabel din baza de date curentă sau distrugereaintregii baze de date. Sintaxa comenzii este:mysql>drop table nume_tabela;mysql>drop database nume_baza;8. Comanda “show” Comanda show se foloseşte pentru listarea bazelor de date existente, a tabelelor dinbaza de date curentă sau pentru listarea campurilor unei tabele. Sintaxa ei este:mysql>show databases;mysql>show tables;mysql>show fields from nume_tabela;9. Comanda “quit” Comanda determină intreruperea conexiunii cu serverul MySQL şi inchiderea sesiunii delucru a clientului MySQL. Este echivalentă cu exit.mysql>quit;mysql>exit; O interogare inglobată in alte cereri SQL se numeşte o subcerere. Subcererea poate săincludă la randul ei o altă subcerere. Subcererile sunt de două feluri: necorelate şi corelate:• subcererea necorelată este o subcerere independentă de cererea principală. Se execută osingură dată in interiorul cererii principale.• cererea corelată se bazează pe date provenite de la cererea principală. Se execută pentrufiecare inregistrare returnată de cererea principală. Execuţia subcererillor corelate durează mai mult, iar acest lucru este vizibil in cazulbazelor de date cu un volum foarte mare de date. Din punct de vedere al rezultatelor returnate, subcererile se impart in trei categorii:• Subcereri care intorc o singură valoare• Subcereri care intorc o coloană• Subcereri care intorc un tabel 54
    • 6. Interogarea bazei de date Mai departe, urmează să prezentăm principalele comenzi SQL folosite pentruinterogarea bazei de date in cadrul aplicaţiei de management al documentelor.6.2 Conectarea la Baza de Date PHP permite conectarea la diferite baze de date. Cea mai frecventă combinaţie oreprezintă PHP şi MySQL pe care o vom prezenta in acest capitol. Pentru a putea funcţiona o aplicaţie web dezvoltată cu aceste medii trebuie instalate:php, mySQl şi serverul de web Apache. (se va instala xampp sau easyphp, etc.) Ideea pe carese bazează interacţiunea PHP - MySQL sau in general interactiunea dintre PHP şi o bază dedate este aceea că permite că informaţiile care se doresc să apară pe site să fie prezente inbaza de date. In acest fel informaţiile pot fi actualizate usor şi prezentate intr-o formă "dinamică"in cadrul site-ului. Vom incepe prin a ne conecta la o bază de date MySQL.mysql_connect(adresa, utilizator, parola); Ca şi parametri vom folosi adresa care reprezintă IP-ul sau hostname-ul calculatoruluipe care am instalat baza de date MySQL. Acesta poate fi acelaşi cu cel pe care rulează serverulde web (de obicei Apache sau IIS) sau un alt calculator. In cazul in care se găseşte pe acelaşicalculator cu serverul de web, putem folosi la adresa şi localhost. Numele de utilizator şi parolăvor fi cele setate pentru MySQL. Implicit acestea sunt nume de utilizator: root şi fără parolă.Este recomandat ca aceste setări implicite să fie modificate. Funcţia mysql_connect returnează un număr de identificare a conexiunii in caz desucces, sau false in caz de eroare. In cazul in care nu ne putem conecta la baza de date funcţiamysql_connect va returna false, iar in acest caz se va trece la executarea funcţiei die, care vaafişa mesajul din paranteză şi va termina execuţia scriptului. Următorul pas il reprezintă alegerea bazei de date.mysql_select_db(baza_de_date, identificatorul_conexiunii); Parametrii folosiţi in acest caz vor fi: numele bazei de date ales şi identificatorul returnatde către mysql_connect. Acestea fiind zise, conectarea la baza de date se face utilizand următoarea sintaxăPHP:<?php$AdresaBazaDate = "localhost"; 55
    • 6. Interogarea bazei de date$UtilizatorBazaDate = "root";$ParolaBazaDate = "mysql";$NumeBazaDate = "diploma";$conexiune = mysql_connect($AdresaBazaDate,$UtilizatorBazaDate,$ParolaBazaDate)or die("Nu ma pot conecta la MySQL!");mysql_select_db($NumeBazaDate,$conexiune)or die("Nu gasesc baza de date!");?> De cate ori vom lucra cu MySQL va trebui să ne conectăm la baza de date folosind oanume sintaxă. Vom salva această secvenţă de cod cu numele config.php putand fi folosităulterior in mai multe scripturi utilizand funcţia require_once(“config.php”).6.3 Inserarea înregistrărilor În continuare, vom insera in baza de date inregistrările necesare. Pentru aceasta vomfolosi funcţia: mysql_query cu ajutorul căreia vom executa o instrucţiune SQL.mysql_query(instructiune_SQL, identificatorul_conexiunii); Această instrucţiune va fi transmisă serverului MySQL care il va executa şi va returnarezultatul. In cazul mysql_query rezultatul va fi true, in caz de succes, sau false, in caz deeroare. De exemplu, inregistrarea utilizatorilor in baza de date din cadrul aplicaţiei noastre seface utilizand următoarea sintaxă:$i="INSERT INTO useri_admini(nume_org,user,parola,nume,prenume,email,telefon,oras,adresa,cod_postal,data,timp,id_folder,id_admin)VALUES(".mysql_real_escape_string($_SESSION[org]).",".mysql_real_escape_string($_SESSION[admin]).",".md5($_SESSION[parola]).",".mysql_real_escape_string($_SESSION[nume]).",".mysql_real_escape_string($_SESSION[prenume]).",".mysql_real_escape_string($_SESSION[email]).",".mysql_real_escape_string($_SESSION[telefon]).",".mysql_real_escape_string($_SESSION[oras]).",".mysql_real_escape_string($_SESSION[adresa]).",".mysql_real_escape_string($_SESSION[postal]).",CURDATE(),CURTIME(),".$cr.",0)"; 56
    • 6. Interogarea bazei de datemysql_query($i);6.4 Selectarea înregistrărilor După ce am inserat o inregistrare in baza de date dorim să o afisăm in browser. Sepoate observa că in cazul in care se foloseşte instrucţiunea mysql_query cu o instrucţiuneSELECT, acesta nu va returna true sau false, ci va returna o lista de rezultate sau fals in caz deeroare. Spre exemplu, deoarece documentele sunt structurate intr-o formă arborescenta incadrul aplicaţiei, pentru a afla tatăl unui anumit director (folder) s-a folosit următoarea sintaxăSQL:$msql = "SELECT folder_id FROM foldere WHERE id=".$i."";$rez = mysql_query($msql);while($rand = mysql_fetch_array($rez)) {$s=$rand[folder_id];} Unde, variabila Php $i reprezintă identificatorul unic al folder-ului căruia dorim să ii aflămtatăl. In cazul in care găsim rezultate in tabela Foldere vom parcurge fiecare din acesterezultate şi il vom reţine.mysql_fetch_row(rezultatul_returnat_de_mysql_query); Instrucţiunea mysql_fetch_row va parcurge rezultatul returnat de instrucţiuneamysql_query şi va returna pentru fiecare inregistrare un tablou care conţine fiecare campreturnat. Indexarea tablourilor incepe de la valoarea 0. Instrucţiunea while va avea ca efectreturnarea pentru fiecare linie a unui tablou. In cazul nostru vom avea in $rand[folder_id],identificatorul unic al folder-ului tată al directorului in cauză.6.5 Actualizarea înregistrărilor Pentru actualizarea inregistrărilor se va folosi comanda UPDATE. Spre exemplu, dacă dorim să mutăm un folder in alt folder, este necesar ca tatălacestuia să devină chiar cel din urmă folder precizat, unde se va face mutarea. La nivel de cod 57
    • 6. Interogarea bazei de dateacest lucru se realizează actualizand inregistrarea specifică folderului in cauză şi anumevaloarea campului ce reprezintă tatăl iniţial: folder_id:$a= "UPDATE foldere SET folder_id=".$d." WHERE id=".$s."";mysql_query($a); Unde variabila Php $d reprezintă identificatorul tatălui nou, iar variabila $s reprezintăidentificatorul folderului ce trebuie mutat.6.6 Ştergerea înregistrărilor Stergerea inregistrărilor din baza de date se face utilizand comanda DELETE. Spre exemplu, in cazul nostru, vom şterge un anumit folder din baza de date:$a= "DELETE FROM foldere WHERE id=".$f."";mysql_query($a);$fisi= "DELETE FROM fisiere WHERE folder_id=".$f."";mysql_query($fisi);$ms = "SELECT id FROM foldere WHERE folder_id=".$f."";$rez = mysql_query($ms);while($rand = mysql_fetch_array($rez)) {sterge($rand[id]);} Ştergerea unui folder din baza de date, implică şi ştergerea descendenţilor săi cereprezintă fişiere sau tot foldere, fapt ce determină implementarea in Php a unei funcţii recursivesterge($rand[id]). 58
    • 7. Prezentarea aplicatiei7. Prezentarea aplicaţieiSumar. In acest capitol vom prezenta structura aplicaţiei de management al documentelor,organizată pe module plus facilităţile pe care le oferă.7.1 Structura Aplicaţia este formată din două module principale: –Modulul administrator –Modulul client Administratorul aplicaţiei, este totodată şi reprezentantul companiei căreia ii este asociatcontul de gestiune a propriilor documente. Pe langă funcţiile de bază, de management aldocumentelor organizaţiei, administratorul va beneficia de facilităţile de adăugare, editare sauştergere utilizatori ce reprezintă angajaţi ai companiei respective, controlul versiunilor sauarhivarea documentelor. El va avea drepturi depline in ceea ce priveşte stabilirea de permisiunipentru utilizatori sau grupuri de utilizatori. Modulul client implică partea de utilizator, văzut ca angajat al companiei. El dispune doarde facilităţile de bază de gestionare a documentelor in cadrul organizaţiei. Va avea acces deplinasupra propriilor documente create de el, fiind limitat insă pentru celelate, administrate deceilalţi utilizatori, in funcţie de permisiunile acordate.7.1.1 Modulul Client Interfaţa de administrare este aceeaşi cu cea a utilizatorului obişnuit (clientului). Insă, modulul administrator implică adăugarea la modulul client, a unor funcţii deadministrare. Aşadar, in acest capitol vom prezenta mai intai facilităţile de care dispune clientulaplicaţiei urmand apoi să le descriem pe cele ale administratorului. 59
    • 7. Prezentarea aplicatiei Prima pagină oferă posibilitatea de autentificare a utilizatorului - client in cadrul aplicaţieicu datele ―User‖ şi ―Parola‖, precum şi posibilitatea de inregistrare a administratorului princompletarea unui formular cu datele personale. Interfaţa web a acestei pagini este ilustrata mai jos: Dupa validarea datelor de intrare, vom accesa prima pagină din cadrul modului deadministrare. In ceea ce priveşte conţinutul interfeţei acestui modul, suprafaţa de lucru este organizatăin două secţiuni; prima reprezentand jumatatea de sus şi cealaltă, cea de jos sau de mijloc. Prima secţiune se caracterizează prin faptul că nu-şi schimbă conţinutul, indiferent depagină, oferind o serie de link-uri ce fac legături către alte pagini, cu funcţionalităţi diferite:Home, Sarcini, Setari, Iesire precum şi o sub-secţiune in care este afişat numele utilizatoruluicurent. Acestea reprezintă meniul principal al aplicaţiei. 60
    • 7. Prezentarea aplicatiei Accesarea link-ului Home determină modificarea căii documentului curent, mai exactprecizarea adresei radăcinii din care acesta face parte. Calea documentului reprezintă adresacu care acesta este memorat in spaţiul de stocare al organizaţiei şi este folositoare pentruprocesul de navigare prin ierarhia de documente (foldere şi fişiere) structurată sub formăarborescentă. Sarcini are rolul de afişare şi editare a atribuţiilor utilizatorului curent, mai precis, cele deaprobare de documente asociate unor fluxuri de lucru. Despre acestea vom vorbi mai tarziu. Link-ul Setari este folosit pentru afişarea şi modificarea datelor de profil proprii. Iesire implică deconectarea utlizatorului de aplicaţie. Butoanele Upload şi New Folder sunt folosite pentru incărcarea fişierelor in baza destocare a organizaţiei, respectiv crearea ―folderelor‖ (directoare) unde sunt incărcate. In sub-secţiunea cautare, avem posibilitatea de căutare a documentelor organizaţiei infuncţie de anumite criterii, iar rezultatele returnate conţin detalii ce ne uşurează munca degestiune a documentului precizat. Mai jos, este ilustrată prima secţiune a aplicaţiei despre care am discutat pană acum: A doua secţiune, se caracterizează prin dinamism, intrucat conţinutul acesteia seactualizează in funcţie de acţiunile efectuate de utilizator. Pagina principală a aplicaţiei (home.php), introduce in această secţiune funcţiile debază, de operare cu documente: copiere, mutare, ştergere, redenumire, salvare, reprezentateprin butoane specifice. Pe langă acestea, sunt prezente şi alte opţiuni cum ar fi stabilirea sau vizualizarea depermisiuni asupra documentului selectat, vizualizarea detaliilor, istoricului şi a fluxurilor de lucruspecifice, precum şi stabilirea de noi fluxuri de lucru, sau dacă documentul se află in starea decheck in sau check out: 61
    • 7. Prezentarea aplicatiei In imaginea de mai sus este prezentată şi o sub-secţiune unde se face navigarea prinierarhia de documente. Sunt ilustrate caracteristicele fiecărui document in parte, cum ar fidrepturile utilizatorului curent asupra lor, spaţiul ocupat de fiecare, data la care au fostmodificate ultima dată. Pentru efectuarea comenzilor de către utilizator asupra documentelor, se vor marca intaicăsuţele din dreptul lor (checkbox-uri). Copierea unui anumit fişier sau director se face bifand căsuţa din dreptul său şi apoiexecutand butonul de copiere. Acest lucru va implica redirecţionarea către o nouă pagină undeva apărea o nouă sub-secţiune de navigare prin ierarhia de documente, dupa cum esteprezentat in imaginea următoare: 62
    • 7. Prezentarea aplicatiei Operaţia de mutare a documentului se desfăşoară la fel ca şi in cazul copierii. Ştergerea,se face bifand căsuţa din dreptul documentului in cauză, urmată de primirea unui mesaj deconfirmare: Pentru redenumire se va proceda ca şi in cazul ştergerii, doar că se va completa unformular cu numele nou. Atribuirea de permisiuni asupra documentelor pentru anumiţi utilizatori arată astfel: 63
    • 7. Prezentarea aplicatiei Se vor selecta utilizatorii şi tipul de permisiune pentru fiecare dintre aceştia, pentrudocumentul selectat (in cazul de mai sus: Proiect Man.docx). Permisiunea ―read-only‖ semnificăfaptul că documentul poate fi doar citit (descărcat) şi nu poate fi modificat in nici un fel. ―Read-Write-Delete‖ inseamnă că documentul respectiv poate fi citit, sters, editat,redenumit, iar ―Read-Write-Delete-Administer‖ acordă in plus faţă de ultima permisiune, drepturide administrare. In continuare vom insista asupra noţiunilor de flux de lucru (workflow), controlulaccesului ( “Check-in / Check-out”) , şi controlul versiunii, operaţii care stau la baza unei aplicaţiide management al documentelor. Datorită faptului ca reţelele au devenit un loc comun, editarea şi crearea de documentein mod colaborativ a devenit o practică foarte raspandită. Un sistem de managememnt a documentelor trebuie să furnizeze modalităţi prin caremai mulţi autori să-şi coordoneze activităţile cu privire la unul sau mai multe documente. Aplicaţia de faţă oferă această posibilitate prin funcţiile ―check-in‖ şi ―check-out‖. Cand un utilizator editează un document acesta trece in starea de ―check-out‖, fiindblocat faţă de ceilalţi utilizatori. Documentul cu starea ―check-out‖ poate fi vizualizat de către alţiutilizatori (devine ―read-only‖), dar nu şi editat. Astfel, se evită problemele ce pot apărea candmai mulţi utilizatori incearcă să editeze acelaşi document simultan. Cu ―check-out‖ numai unsingur utilizator poate edita un document la un moment dat. La final utilizatorul reintoarcedocumentul in starea de ―check-in‖ acesta devenind iarăşi disponibil pentru editare. Acest lucrufavorizează controlul versiunii. Versiunea unui document este o copie intermediară a unui document sau o actualizare aunui document precedent. Prin crearea şi păstrarea transparentă a versiunilor unui documenteste posibilă urmărirea evoluţiei acestuia. Aplicaţia oferă utilizatorilor posibilitatea, respectand drepturile de acces, să creeze noiversiuni sau să se reintoarcă la versiunile precedente. Flux de lucru Documentele sunt repartizate unui anumit flux, utilizandu-se o opţiune rapidă din meniu(―workflow‖). Astfel, documentul va „călători‖ de la un utilizator la altul, in funcţie de regulilepredefinite. Documentele dintr-un workflow sunt disponibile utilizatorilor incluşi in acel flux intr-ozonă distinctă de lucru – Sarcini – unde există opţiuni de completare sau de continuare afluxului de lucru, utilizate pentru a redirecţiona obiectul după editare. In cadrul aplicaţiei este implementat un flux ad-hoc. Un astfel de flux este potrivit pentruprocese de lucru seriale sau paralele, cum sunt, spre exemplu, distribuirea anumitor documente 64
    • 7. Prezentarea aplicatieirapid şi uşor intre mai mulţi angajaţi – documente precum newsletter-uri, circulare, diversechestionare sau informaţii de uz intern. Toate setările pentru un astfel de workflow pot firealizate rapid, intr-o singură fereastră de dialog. Ca exemplu putem da un product manager, ce creează un ghid tehnic. Acesta il trimitein flux sub numele „aprobare manual‖ şi il trimite spre aprobare către managerii de dezvoltare şivanzări. Tipul fluxului ales este serial. Imediat ce managerul de dezvoltare a aprobatdocumentul, il trimite către managerul de vanzări. In cazul in care acesta aprobă documentul,product managerul este inştiinţat printr-un mesaj şi astfel manualul intră in producţie. In cazul in care fluxul de lucru se desfăsoară in mod serial şi un utilizator respingedocumentul care i-a fost atribuit pentru aprobare, intregul flux va eşua, adică documentul nueste transmis mai departe celei de-a doua persoane preselectată, iar iniţiatorul fluxului esteinştiinţat de acest lucru. In cazul fluxului de lucru paralel, de detinătorul sau participantii la fluxul de lucru auposibilitatea să vizualizeze starea acestuia, pentru a ști care participanți și-au terminat activităilefluxului de lucru. Cand toti participantii isi finalizează activitătile, fluxul de lucru se incheie, iardeținătorul acestuia este notificat automat cu privire la terminarea acestuia. Indiferent dacă un participant respinge activitatea care i-a fost atribuită, fluxul va ramaneactiv. Pornirea fluxului de lucru: – In cadrul aplicaţiei, se bifează căsuţa din dreptul documentului pentru care vrem săiniţiem fluxul de lucru şi apoi se selecteaza opţiunea ―workflow‖. – Odată ce a fost apăsat butonul specific, va trebui să completaţi un formular in carespecificaţi denumirea fluxului de lucru, tipul (ex: aprobare), modul de desfăşurare(serial/paralel), instrucţiuni relevante pentru activităţi, participanţii la proces precum şi o datăscadentă. – Se apasă butonul ―Start workflow‖, iar fluxul de lucru este iniţiat, fiind trimis cătreutilizatorii selectaţi, in funcţie de modul ales: serial sau paralel: 65
    • 7. Prezentarea aplicatieiDesfăşurarea fluxului de lucru: După ce fluxul de lucru a fost iniţiat conform specificaţiilor de mai sus, utilizatorul : ‖dea2‖va fi inştiinţat in secţiunea ―Sarcini‖ de faptul că are de indeplinit o activitate de aprobare: 66
    • 7. Prezentarea aplicatiei Aici are opţiunea de a respinge, aproba sau reatribui activitatea primită, adăugandu-i şi onotă in care descrie motivul acţiunii sale. In cazul in care o va respinge, intrucat fluxul de lucruse desfăşoară serial, acesta va eşua, iar iniţiatorul lui va fi inştiinţat de acest fapt. In cazul in care activitatea este aprobată, ea se va termina, iar documentul este transmismai departe, către un nou utilizator preselectat (in cazul nostru ―dea4‖ ), unde va genera o nouăactivitate corespunzătoare. Funcţia de reatribuire a activităţii implică reasignarea acesteia către un alt utilizator decatcel curent. Fluxul de lucru se va termina abia atunci cand toate activităţile au fost indeplinite.(Valabil doar pentru cazul serial). Vizualizarea fluxului de lucru Fluxul de lucru va putea fi vizualizat şi / sau editat, bifand căsuţa din dreptuldocumentului cu pricina, şi selectand din meniul ―Optiuni ― , Workflows. Va apărea o nouă pagină in care putem observa sau edita, in funcţie de permisiuni,fluxurile de lucru stabilite pentru acel fişier. (Exemplul in cazul nostru ―localhost.sql‖). 67
    • 7. Prezentarea aplicatiei Aşadar, vom putea vizualiza detaliile fluxului de lucru, cum ar fi starea (in desfăşurare,terminat sau eşuat), participanţii, starea activităţilor corespunzătoare, data iniţiere şi expirare,numele iniţiatorului.7.1.2 Modulul administrator Administratorul aplicaţiei, este la randul său un utilizator, reprezentant al organizaţieiinregistrate, ale cărui atribuţii sunt de a gestiona atat documentele cat şi utilizatorii inscrişi incadrul aceleiaşi organizaţii. In ceea ce priveşte crearea şi gestionarea utilizatorilor, administratorul dispune defacilităţile următoare: Creare utilizator, Editare utilizator, Stergere utilizator. Aceste operaţii se desfăşoară prin bifarea căsuţei din dreptul utilizatorului afişat, urmandcompletarea unui formular cu date sau confirmare de ştergere: 68
    • 7. Prezentarea aplicatieiCreare utilizator: De multe ori este utilă asignarea unor drepturi sau sarcini mai multor utilizatori. Astfel, se pot crea grupuri de utilizatori. Ele reprezintă de obicei departamente din cadrulcompaniei, sau mai mulţi utilizatori care au atribuţii in general, comune. 69
    • 8. Detalii de implementare a aplicatiei8. Detalii de implementare a aplicaţieiSumar. In acest capitol este prezentat in amănunt cum funcţionează aplicaţia, interacţiuniledintre module, structurile de date şi algoritmii implementaţi in mediul de programare Php.8.1 Implementarea modulelor După cum am precizat in capitolele anterioare, aplicaţia este structurată in pagini web,scrise in limbajul de programare HTML ( Hypertext Markup Language - limbaj de marcarehipertext ). Insă, pentru a filtra şi afişa conţinutul lor, se vor folosi script-uri PHP, sporinddinamicitatea acestora. Aşadar, aceste pagini vor conţine linii de cod HTML, iar in unele secţiunise va introduce script Php. Atat modulul client cat şi cel administrator sunt implementate pe baza unor funcţii Phpcomune (prezente in fisierul functii.php), iar modul de folosire şi integrare al acestora, vadetermina diferenţa funcţională dintre cele două module. Documentele electronice cu care operează utilizatorii aplicaţiei sunt fişiere şi foldere(directoare). Un Director sau Folder— este un grup de fişiere şi subfoldere pe un anumit discorganizat cu ajutorul sistemului de operare. Regula de denumire este similară cu cea afişierelor: intr-un folder nu pot să apară două entităţi (fişiere sau foldere) cu acelaşi nume. Structura documentelor in spaţiul de stocare al organizaţiei este una arborescentă, adicăun folder sau nod poate avea mai mulţi descendenţi, iar un nod poate avea doar un singurpărinte. Nodurile care marchează sfarşitul unei ramuri, adică nu au descendenţi se numescnoduri frunză, iar nodul său folder-ul care nu are părinte şi conţine toate entităţile din structuraprezentată, poartă numele de folder rădăcină. In aplicaţia curentă, folder-ele rădăcină poartăchiar numele organizaţiilor inregistrate. Ca urmare, datorită modului de dispunere al documentelor, sub formă de arbore, ne vombaza pe implementarea algoritmilor recursivi.Spre exemplu, ştergerea unui director, implică ştergerea tuturor descendenţilor acestuia.Funcţia de ştergere a unui director, sterge($f), are urmatoarea secvenţă de cod specifică: 70
    • 8. Detalii de implementare a aplicatiei Ştergerea directorului curent implică ştergerea inregistrării corespunzătoare din baza dedate, precum şi ştergerea tuturor operaţiilor efectuate asupra acestuia, inregistrate in baza dedate, cum ar fi in cazul de mai sus ştergerea fluxurilor de lucru asociate (se apelează o altăfuncţie : sterge_workflow($f) ). Funcţia este recursivă, intrucat se apelează pe ea insăşi, insă cualt parametru, mai exact fiul folder-ului curent ( sterge($rand[id]) ). Atunci cand funcţia ajunge la un nod frunză (care nu mai are descendenţi), se intoarcecu un nivel inapoi, unde va căuta următorii fii. Funcţia se opreşte din recursivitate atunci cand s-a terminat de parcurs toată ramura ce derivează din folder-ul precizat iniţial in parametrulfuncţiei de ştergere. Mutarea unui director in alt director, implică doar o singură operaţie simplă. Se modificăvaloarea campului inregistrării specifice din BD, ce reprezintă identificatorul folderului tată. Copierea unui director implică replicarea inregistrării corespunzătoare dar şi replicareaaltor inregistrări ce figurează in anumite tabele din baza de date, cum ar fi duplicarea drepturilorasociate pentru diferiţi utilizatori. Operaţia de copiere este la randul ei recursivă, intrucat seaplică asupra intregii ramuri de documente ce derivează din folder-ul specificat. Funcţiaspecifică, este urmatoarea: 71
    • 8. Detalii de implementare a aplicatiei Parametrii funcţiei de copiere $s, $d, $prim semnifică identificatorii directoarelor sursa şidestinaţie, respectiv o variabilă ce returnează identificatorul folder-ului nou copiat, folosităpentru moştenirea drepturilor directorului destinaţie. Aplicarea de permisiuni asupra unui director, implică aplicarea aceloraşi drepturi şiasupra nodurilor de directoare şi fişiere ce descendează din acesta. Aşadar funcţia esterecursivă. Funcţia de moştenire drepturi se aplică atunci cand un utilizator (client) mută sau copieun fişier sau director dintr-o locaţie in alta. Spre exemplu dacă dorim să mutăm un fişier asupracăruia avem drepturi depline (citire, scriere şi administrare) intr-un director unde avem doardrepturi de citire şi scriere, acest fişier va moşteni drepturile de scriere şi citire al directoruluidestinaţie, deci vom pierde drepturile de administrare. 72
    • 8. Detalii de implementare a aplicatiei Această funcţie preia drepturile directorului destinaţie reprezentat prin identificatorul dinvariabila $id_tata, iar apoi apelează funcţia de aplicare de drepturi cu parametrii citiţi anterior,asupra directorului sursă reprezentat prin identificatorul $id_folder.Ştergerea unui flux de lucru, implică ştergerea efectivă a inregistrării corespunzătoare din bazade date, precum şi ştergerea automată a activităţilor asociate. Parametrul $id_fisier, reprezintă identificatorul unic al fişierului pentru care s-a aplicatfluxul de lucru respectiv. Funcţiile prezentate mai sus stau la baza implementării modulelor client şi administrator,iar pe baza modelului acestora se dezvoltă şi celelalte funcţii utile pentru funcţionarea corectă aaplicaţiei. Orice modificare a directoarelor şi fişierelor survenită in urma aplicării operaţiilor degestiune in cadrul aplicaţiei, se reflectă in spaţiul fizic de stocare al serverului, lucru util in cazulextinderii aplicaţiei, prin ataşarea la aceasta a unui soft client care rulează direct pe sistemul deoperare al maşinii utilizatorului.8.2 Optimizări şi performanţe In continuare vom discuta despre tehnici de optimizare a aplicatiei, care asigurafunctionarea corecta si sporirea performantelor acesteia.8.2.1 Normalizarea bazei de date Pentru a inţelege rolul regulilor de normalizare in conceperea bazelor de daterelaţionale, vom evidenţia un mic exemplu: Este posibil ca la un moment dat, datorită nedefinirii constrangerilor asupra bazei dedate, un utilizator să introducă de două ori, aceeaşi inregistrare. Inregistrarea in mod repetat, a 73
    • 8. Detalii de implementare a aplicatieiunor anumite date se numeşte redundanţă. Redundanţa, in afară de consumul nejustificat despaţiu de stocare, mai are şi un alt efect negativ: dacă adresa unuia dintre utilizatori s-armodifica, atunci modificarea in baza de date ar presupune modificarea tuturor inregistrărilor incare apare acel utilizator. Ori, in mod normal, o modificare de acest fel ar trebui făcută intr-unsingur loc. O alta problema, poate fi si inconsistenta bazei de date. Regulile de normalizare a datelor (denumite uneori reguli de normalizare) pot fi aplicateca un pas din cadrul proiectării. Aceste reguli se utilizează pentru a verifica dacă tabelele suntstructurate corect. Procesul aplicării regulilor la proiectarea bazei de date este denumitnormalizarea bazei de date, sau doar normalizare. Normalizarea este foarte utilă dacă ati determinat toate elementele informaționale și ațicreat un proiect preliminar. Scopul este să vă asigurați că ați impărțit elementele informaționalein tabelele corespunzătoare. Normalizarea nu vă poate ajuta să vă asigurați că aveți de lainceput toate elementele de date corecte. Regulile se aplică succesiv, asigurandu-vă la fiecare pas că proiectul va ajunge la ceeace se numește o "formă normală." In principiu, sunt acceptate cinci forme normale — de laprima formă normală pană la a cincea. Primele trei sunt necesare pentru majoritatea proiectelorde baze de date:Prima formă normală Prima formă normală presupune că există o singură valoare la fiecare intersecție dintreun rand și o coloană din tabel, și niciodată o listă de valori. De exemplu, nu poate exista uncamp denumit Preț in care să plasați mai multe prețuri. Dacă priviți intersecția dintre un rand șio coloană ca pe o celulă, atunci fiecare celulă poate conține o singură valoare.A doua formă normală A doua formă normală necesită ca fiecare coloană care nu este cheie să depindăcomplet de cheia primară, nu doar de o parte a cheii. Această regulă se aplică cand seutilizează o cheie primară care conține mai multe coloane.A treia formă normală A treia formă normală necesită ca fiecare coloană care nu este cheie să depindă deintreaga cheie primară, dar și ca toate coloanele care nu sunt chei să fie reciproc independente. 74
    • 8. Detalii de implementare a aplicatiei8.2.2 Utilizarea procedurilor stocate Intr-o configuraţie client-server se poate vorbi ,in principiu , despre două opţiuni de bazăpentru stocarea şi executarea programelor. - Programele pot fi memorate local la nivelul aplicaţiilor care trimit comenzi către SQLServer şi prelucrează rezultatele returnate de acesta. - A doua opţiune presupune dezvoltarea şi inregistrarea programelor ca proceduristocate in SQL Server şi crearea de aplicaţii care apelează aceste proceduri şi le prelucrează. Procedurile stocate din SQL Server sunt similare procedurilor din alte limbaje deprogramare. Se poate lansa in execuţie prin comanda EXECUTE. Utilizarea procedurilor stocate prezintă mai multe avantaje faţă de varianta programelorstocate la nivelul aplicaţiilor utilizator :- programare modulară : o procedură stocată poate fi creată o singură dată şi apelată de maimulte ori din mai multe aplicaţii . Mai mult, procedura stocată poate fi creată de către opersoană specializată in baze de date şi poate fi modificată independent de aplicaţiile care oapelează.- performanţă îmbunătăţită : in cazul programelor cu volum mare de cod sau a celor executatein mod repetat procedurile stocate sunt mai eficiente deoarece compilarea şi optimizarea lor seface o singură dată la crearea procedurii şi sunt memorate intr-o formă direct executabilă princare se evită repetarea fazelor de compilare şi optimizare la fiecare apel al procedurii -reducerea traficului de reţea : o prelucrare care presupune execuţia a sute de linii de cod poatefi realizată printr-o singură linie de comandă care apelează procedura stocată prin care esteimplementată acea prelucrare.Se evită astfel transmiterea prin reţea a codului respectiv lafiecare executare a acelei prelucrări.- oferă un mecanism suplimentar de securitate : utilizatorii nu au acces direct la codulprocedurilor stocate, iar dreptul de execuţie al unei proceduri poate fi acordat sau nu in funcţiede statutul fiecărui utilizator de către administratorul bazei de date . In SQL Server o procedură stocată este creată prin comanda :- CREATE PROCEDURE şi poate fi modificată ulterior prin comanda ALTER PROCEDURE. 75
    • 8. Detalii de implementare a aplicatiei Definiţia unei proceduri stocate conţine următoarele elemente :- specificarea numelui procedurii şi a parametrilor;- corpul procedurii , care conţine instrucţiunile SQL ce realizează prelucrarea pentru care a fostcreată procedura.8.2.3 Promovare Optimizarea aplicaţiei de faţă implică pregatirea acesteia pentru promovarea inmotoarele de cautare. Aplicaţia se adresează organizaţiilor, deci scopul este imbunătăţireaperformanţelor in vederea caştigării unei poziţii mai bune pe paginile returnate căutărilorutilizatorilor. Mai mult decat atat, aplicarea optimizării pentru motoarele de cautare are şi efectesecundare asupra site-ului care in final il fac mai bun faţă de abordarea utilizatorului. Folosireacodului de editare valid XHTML şi CSS nu doar că este bine primit de motoarele de căutare insaşi perfect inţeles de browser făcand posibilă iincarcarea şi afisarea lui mai repede, mai corect pecalculatorul utilizatorului. Documentarea conţinutului cu texte logice, care dezvoltă strict şi laobiect tema pe care o abordează un website inseamnă o corelare cu meta tag-urile pentru cares-a facut optimizarea iar in final prezenţa unui conţinut bogat, bine documentat, pe măsura aceea ce aşteapta să găseasca un utilizator in momentul accesării paginii. Plasarea in site la indemana oricui a unei hărţi a intreg proiectului web face mult maiusor accesibile anumite secţiuni mai puţin dezbătute sau promovate şi da o nouă cale de accescătre celalalte. Folosirea unui titlu individual la fiecare altă pagină face mult mai bine de inţelesde la primul contact subiectul pe care il dezvoltă paginile proiectului. Culorile bine alese, cele―web-safe‖ oferă posibilitatea tuturor vizitatorilor să vadă acelaşi lucru, plasarea de link-uri insite, respectand o logică a culorilor le fac mai vizibile, iar folosirea unui acelaşi font pe totcuprinsul paginilor creaza unitate. Folosirea de imagini sugestive către subiectul şi temaabordată, de grafică optimă pentru web, evitarea folosirii de bannere sau elemente flash cuzgomot sau miscare inutilă sunt iarăşi un element de optimizare care impreună cu toatecelelalte sfarşesc in a indeplini un dublu rol: - fac posibilă plasarea pe primele poziţii in rezultatele returnate de motoarele de căutareşi inscrierea in cataloage on line. - cel mai important, modelează un produs ―user friendly‖ care va indeplini toate nevoile şiexigenţele utilizatorilor. 76
    • 10. Bibliografie9. Concluzii şi dezvoltări ulterioare In cadrul capitolului 3 au fost specificate cerinţele proiectului, iar după testarea aplicaţieişi interpretarea rezultatelor se poate spune ca acestea au fost satisfăcute. S-a obţinut astfel oaplicaţie uşor de folosit, dinamică, sigura, scalabilă şi adaptabilă la viitoare dezvoltări. Urmărirea stării documentelor in diferite stadii prin care trec acestea, evidenţiereamodului de rezolvare al documentelor, alocarea de permisiuni, rutarea automată şi facilităţilepentru gestiunea documentelor prin folosirea grupurilor, indeplinesc principalele criterii necesareunei organizaţii pentru managementul propriilor documente. Beneficiile utilizatorului sunt reprezentate printr-o interfaţă prietenoasă şi intuitivă, uşorde folosit, iar rularea aplicaţiei pe un server web, duce la independenţa acesteia faţă de sistemulde operare al utilizatorului. Inregistrarea operaţiilor de gestiune in baza de date precum şivalidarea acestora prin intermediul limbajului de programare JavaScript, asigură dinamicaaplicaţiei. Scalabilitatea şi performantele aplicatiei sunt asigurate prin folosirea procedurilorstocate, implementate in baza de date şi folosirea formelor normale. Posibilitatea de arhivare a documentelor precum si transmiterea acestora dintr-o locatiein alta prin folosirea conexiunilor SSL, garanteaza standardele de securitate si confidenţialitate. Prin utilizarea acestei aplicaţii se obţine o reducere substanţială a timpului de regăsire ainformaţiilor si documentelor prin gestionarea structurată a acestora, avand acces rapid lavalorile organizaţiei. Aplicaţia poate fi dezvoltată ulterior prin adăugarea unor noi module şi funcţionalităţi. Unexemplu ar fi implementarea unui drive virtual ce rulează in Windows Explorer, pe sistemul deoperare al clientului, sincronizat cu serverul de date, un lucru ce oferă o serie de avantaje:rapiditatea desfăşurării operaţiilor de gestiune asupra documentelor in cadrul organizaţiei,uşurinţa in utilizare şi administrare, gradul de acceptanţă ridicat din partea ―end-userilor‖,integrarea cu orice tip de aplicaţie Windows, gestionarea fişierelor de orice tip. 77
    • 10. Bibliografie10. Bibliografie• Document Management for Small Business, By Susan Ward• Microsoft Office Online - Gestionarea documentelor• PHP Manual, 1997-2007 the PHP Documentation Group• Tehnica bazelor de date - Notite de curs, Prof. Dr. Ing. D. Carstoiu• Workflow - FAST FORWARD! , Vasile Gabriel• http://www.oriceon.com - Tutorial PHP şi MySql• http://www.php.net• http://w3schools.com 78