View
130
Download
2
Category
Preview:
DESCRIPTION
Licenta SharePoint 2010by Miklos CSere
Citation preview
Lucrare de licență
Autor: Csere Miklós
Coordonatori științifici: Lector Dr. Lucian Sasu
Lucian Ciurilă – IQuest
Brașov
Iunie 2013
Universitatea TRANSILVANIA din Brașov
Facultatea de Matematică și Informatică
Specializarea Informatică Aplicată
Managementul documentelor
folosind SharePoint 2010
Autor: Csere Miklós
Coordonatori științifici: Lector Dr. Lucian Sasu
Lucian Ciurilă - IQuest
Brașov
Iunie 2013
Universitatea TRANSILVANIA din Brașov
Facultatea de Matematică și Informatică
Specializarea Informatică Aplicată
3
Cuprins
1 Introducere ........................................................................................................... 5
2 Introducere în SharePoint ................................................................................... 7
2.1 Ce este SharePoint? ................................................................................................ 7
2.1.1 „SharePoint Wheel” ............................................................................................. 8
2.1.2 Termeni specifici ................................................................................................. 8
2.2 Aplicații SharePoint ................................................................................................... 9
2.3 Configurare și personalizare ................................................................................ 10
2.3.1 Cerințe hardware/software ................................................................................. 10
2.3.2 Configurare web ................................................................................................ 12
2.4 Arhitectura SharePoint ......................................................................................... 13
2.5 Versiuni SharePoint ............................................................................................. 17
2.5.1 Istoric ................................................................................................................. 17
2.5.2 SharePoint 2010 ................................................................................................. 18
2.5.3 SharePoint Foundation ....................................................................................... 23
3 Dezvoltarea aplicațiilor în SharePoint .............................................................25
3.1 Instalarea și actualizarea aplicațiilor folosind PowerShell .................................. 25
3.2 SharePoint Design Patterns .................................................................................. 29
3.2.1 Model-View-Presenter ....................................................................................... 29
3.2.2 Repository .......................................................................................................... 30
3.2.3 Service Locator .................................................................................................. 31
3.2.4 Trusted Facade Pattern ...................................................................................... 32
3.3 Pagini web ............................................................................................................ 33
3.3.1 Master Pages ...................................................................................................... 33
3.3.2 Application Page ................................................................................................ 35
4
3.3.3 Web Part ............................................................................................................ 35
3.4 Evenimente (Event Handlers) .............................................................................. 36
3.5 Liste ...................................................................................................................... 38
3.5.1 Definirea câmpurilor .......................................................................................... 39
3.5.2 Crearea tipurilor de conținut .............................................................................. 41
3.5.3 Construcția listelor utilizând fișiere de configurare .......................................... 42
3.5.4 Accesarea datelor ............................................................................................... 42
3.6 SharePoint Feature ............................................................................................... 44
3.7 Căutarea datelor ................................................................................................... 45
3.8 Securitate .............................................................................................................. 48
4 Coduri de bare și recunoașterea lor .................................................................50
4.1 Ce sunt codurile bare? .......................................................................................... 50
4.2 Code 128 .............................................................................................................. 51
4.3 Generarea și citirea codurilor de bare .................................................................. 52
4.3.1 Gen Code 128 .................................................................................................... 52
4.3.2 ABBYY FineReader 11 ..................................................................................... 53
5 Aplicație de gestionare de documente „Document Routing” ........................54
5.1 Cerințe generale ................................................................................................... 54
5.2 Mediul de lucru .................................................................................................... 56
5.3 Descrierea proceselor ........................................................................................... 56
5.4 Stocarea datelor .................................................................................................... 64
5.5 Arhitectura aplicației ............................................................................................ 68
5.5.1 Nivelul de acces la date ..................................................................................... 69
5.5.2 Nivelul de logică al aplicației ............................................................................ 71
5.5.3 Nivelul de prezentare ......................................................................................... 76
5.5.4 Crearea interfeței utilizând jQuery .................................................................... 78
5.6 Manual de instalare (Posibilități de dezvoltare ulterioară) .................................. 83
Bibliografie ...............................................................................................................85
Referințe web............................................................................................................85
5
Capitolul 1
Introducere În zilele noastre, tot mai multe companii consideră inevitabile organizarea şi
arhivarea documentelor, în vederea sistematizării şi transparentizării evidenţei facturilor
şi contractelor. Majoritatea vede managementul documentelor ca şi simpla înregistrare,
în format electronic, a informaţiilor, însă conceptul este mult mai complex.
Globalizarea reprezintă un proces multicauzal care are drept rezultat faptul că
evenimente care au loc într-o parte a globului au repercursiuni din ce în ce mai ample
asupra societăților și problemelor din alte părți ale globului[1]. În contextul globalizării
au apărut companii multinaționale ce reprezintă unități economice care produc bunuri sau
servicii pentru a genera profit, înregistrate în mai multe țări, iar activitatea lor depășește
granița unei singure țări. O firmă multinațională este structurată în filiale localizate pe
mai multe teritorii naționale sau chiar la nivel global, fiind necesar un schimb rapid de
informații și documente pe distanțe mari.
Managementul documentelor implică tehnologii, mijloace şi metode cu ajutorul
cărora organizaţiile îşi creează, gestionează, stochează, caută, transmit şi, după expirarea
lor, casează documentele, oferind control asupra ciclului complet de viaţă al acestora.
Este vorba de un proces de bază al activităţii organizaţionale, deoarece nu prea există
aspecte în viaţa unei afaceri sau instituţii care să nu implice crearea anumitor documente.
Datorită faptului că în secolul XXI lista purtătorilor de date a cunoscut o
diversificare semnificativă, documentele importante provenind din nenumărate surse
variate, precum şi volumului zilnic crescut al documentelor, cauzat de procesul de
digitalizare, gestionarea fizică, pe suport de hârtie, a documentelor a devenit greoaie.
Căutarea informaţiilor consumă minute preţioase din timpul de lucru al angajaților
administrativi, de multe ori fără rezultat. Acestea sunt problemele care au stat la baza
dezvoltării sistemelor de managementul documentelor. Aceste sisteme oferă angajaţilor
posibilitatea de a accesa informaţiile necesare - pe baza drepturilor de autorizaţie -,
tranparentizează relaţiile dintre documente (ex. prin evidenţa sistematizată a contractelor
şi facturilor, înregistrarea e-mailurilor etc.) şi facilitează comunicarea rapidă şi eficientă
dintre colegii din diferite departamente (ex. financiar, HR, administrativ etc.) şi filiale,
contribuind la un flux de lucru mult mai transparent. [2]
6
Prezenta lucrare tratează subiectul organizării documentelor în contextul
globalizării, având o aplicație ce va permite unei companii ce are sedii pe trei continente
să își administreze și să împartă într-un mod organizat documente fizice folosind
platforma SharePoint 2010.
Aplicația a venit ca o propunere de licență adresată studenților anului III
Matematică Informatică, din partea companiei de IT IQuest ce are nevoie pentru uz intern
de o aplicație de gestiune de documente. Soluția va fi realizată folosind serverul
SharePoint 2010 din cadrul companiei utilizând elemente de Agile Methodologies
asemeni oricărui proiect real din cadrul IQuest.
7
Capitolul 2
Introducere în SharePoint
2.1 Ce este SharePoint? Microsoft SharePoint este o platformă de aplicaţii web
dezvoltat de Microsoft. La prima lansare, în 2001, a fost gândit şi utilizat pentru
managementul de documente și conținut din cadrul unei companii, dar versiunile recente
au funcționalități sporite datorită integrării platformei cu aplicațiile Microsoft Office.
Platforma cuprinde un set de tehnologii web susținute de o infrastructură tehnică
comună fiind strâns integrat cu suita Office având o interfața asemănătoare, existând
posibilitatea de folosire și de către utilizatorii non-tehnici. SharePoint poate fi folosit
pentru a oferi un portal atât intranet cât și extranet de gestionare a fișierelor, de
colaborare, rețele sociale pentru angajați, site-uri web și un motor de căutare a resurselor
din cadrul unei companii având rol în automatizarea fluxului de lucru în cadrul acesteia.
Software-urile de tip ”Enterprise Application Software” (ERP, CRM) oferă
posibilitatea integrării platformei SharePoint care de asemenea încorporează un set
complet de tehnologii web și de API-uri standardizate de ale căror management și
securitate se ocupă. Platforma poate fi instalată direct pe IIS ( Internet Information
Services ) oferit de orice sistem de operare Windows, existând astfel posiblitatea de
scalare prin creare unor ferme
mari de servere necesare în
cadrul organizațiilor mari sau
al providerilor de servicii de
găzduire cloud.
Figura 2.1.1 Pagina inițială
rezultată în urma creării unui site
SharePoint.
(http://office.microsoft.com)
Figura 2.1 Logo SharePoint
(http://office.microsoft.com )
8
2.1.1 „SharePoint Wheel” La prezentarea Microsoft SharePoint 2010, departamentul de marketing a folosit
termenul de „SharePoint Wheel” pentru a descrie toate uneltele ce pot facilita
interacțiunile și procesele din cadrul unei organizații. Astfel avem :
Site: Un site este un mediu de lucru contextual specific unei organizații sau
unei echipe individuale, grup din cadrul acesteia.
Comunitate: Este locul în care au loc relațiile și comunicarea dintre membrii
unui mediu de lucru
Conținut: SharePoint oferă management de documente și de conținut virtual
ce trebuie stocat, găsit, impărțit, reînnoit, documentat, arhivat, urmărit sau
restaurat în funcție
Motor de căutare: Se ocupă de căutarea documentelor, persoanelor, site-urilor
sau a oricărui tip de conținut înregistrat în serverele SharePoint. Căutarea se
bazează pe cuvinte cheie, analiză de conținut și un proces de sortare în funcție
de relevanță.
Perspective: Informații din orice parte a organizației pot fi încadrate într-un
site sau context asigurând informații ce pot crește eficiența acelei zone.
Compoziții: SharePoint permite integrarea de date ce nu au o legătură cu o
zonă anume din aplicație. Astfel pot fi create aplicații ce pot prelua și prelucra
date din diverse zone, așa numitele : „composite applications”.
2.1.2 Termeni specifici În cele ce urmează vom descrie o serie de concepte și termeni utilizați în aplicațiile
SharePoint.
Team Site: Este un website intern unde departamente sau grupuri din cadrul
unei organizații pot interacționa și colabora prin documente sau alte tipuri de
fișiere. Se pot stoca documente, adăuga anunțuri interne, programa întâlniri,
urmări task-uri sau probleme șamd. Se pot crea și diverse sub-site-uri utilizând
template-uri pregătite in Team Site. De exemplu se poate crea un blog pentru
angajați sau o bază de date pentru diversele activități ale unei companii.
Web Site: Reprezintă o aplicație personalizată creată de unul sau mai mulți
dezvoltatori și integrată în platforma SharePoint. Platforma are în componență
biblioteci pentru stocarea de conținut media, grafic sau documente ce vor apare
pe site dar și elemente ce vor descrie design-ul acesteia. SharePoint vine și cu o
9
unealtă numită Web Site Design Tool ce ușurează munca de aranjare grafică a
unei pagini.
Un site reprezintă o colecție de pagini pregătit în scopul modularizării
platformei SharePoint, spre a se evita interacțiuni între departamente sau
grupuri ce nu sunt necesare. Fiecare site are elemente comune pe care le vom
descrie în continuare :
Lista: O listă este componenta unui site unde o organizație poate stoca,
împărtăși și administra informații. De exemplu se poate crea o listă de sarcini
pentru urmărirea timpului lucrat în cadrul unui proiect.O listă poate fi văzută
ca o colecție de bucăți de informație majoritatea având proprietăți similare.
Poate fi considerată similară cu o tabelă dintr-o bază de date. Listele au mai
multe caracteristici precum fluxuri de lucru, permisiuni de acces pe nivele,
istoric versiuni samd.
Bibliotecă: O bibliotecă este o listă specială ce conține atât fișiere cât și
informații despre acestea. Pot fi cotrolate felul în care un document este
vizualizat, urmărit, modificat sau creat într-o bibliotecă.
View: Se folosesc la afișarea unei liste sau a unei biblioteci. Există
posibilitatea de a filtra datele afișate, de a aduce informații din mai multe zone
sau de a afișa mai multe view-uri pe o pagină în funcție de necesități.
Web Part: Reprezintă o unitate modularizată de conținut ce formează
blocurile din alcătuirea majorității paginilor de pe un site. Dacă utilizatorul are
permisiunea de a edita paginile, poate folosi Web Part-uri pentru a personaliza
porțiuni din acele pagini în vederea adăugării de noi elemente, view-uri, poze
sau diagrame.
2.2 Aplicații SharePoint Application Page: Este o pagină nouă, personalizată și creată de către unul sau
mai mulți dezvoltatori software. O astfel de pagină va fi într-un folder mapat al
aplicației SharePoint. Ea poate avea o schemă de bază (master layout) provenită
din șabloanele SharePoint, dar acest aspect nu este unul obligatoriu.
Portal intranet: Un portal intranet SharePoint reprezintă o modalitate de a
centraliza accesul către resurse și aplicații din cadrul unei întreprinderi într-o rețea
din cadrul acesteia. Este o unealtă ce permite unei companii să își administreze
datele cu ușurință.
10
Administrator de documente și conținut (Enterprise content management
ECM): Este o metodă formalizată de organizare și stocare a documentelor unei
întreprinderi sau a altor tipuri de conținut ce au rol în activitatea acesteia.
Termenul încadrează de asemenea și strategii, metodologii și unelte folosite în
timpul ciclului de viață al informațiilor stocate.
Extranet: SharePoint poate oferi acces securizat prin autentificare la o interfață
pregătită pentru exteriorul întreprinderii. Companiile folosesc această
funcționalitate pentru a integra în procesul business alte întreprinderi
subcontractoare sau clienții stabilind un mediu de colaborare securizat. Privind din
perspectiva unui context companie-companie, extranetul poate fi considerat o
extensie a zonei intranet a unei companii existând posibilitatea partajării datelor,
modificările dintr-o parte să fie vizibile în timp real în cealaltă parte optimizând
astfel procesul de lucru companie – client. SharePoint asigură un acces alternativ
către aceași resursă permițând unui site să fie accesibil prin mai multe URL-uri
fiecare cu o metodă proprie de autentificare.
Internet: Folosind uneltele de publicare a unui site, SharePoint poate fi utilizat în
administrare de conținut și pagini reprezentând un veritabil CMS (Content
Management System ).
2.3 Configurare și personalizare
2.3.1 Cerințe hardware/software În vederea instalării unei platforme SharePoint sunt necesare următoarele[4] :
Componentă
Hardware Cerință minimă
Procesor 64-bit, 4 core
RAM 4 GB pentru zona de dezvoltare
8 GB în producție pe un server sau o fermă de servere.
11
Mediu Cerință minimă
Server de
baze de date
dintr-o fermă
Una dintre următoarele:
Versiunea pe 64 biți a Microsoft SQL Server 2012
Versiunea pe 64 biți a Microsoft SQL Server 2008 R2
Versiunea pe 64 biți a Microsoft SQL Server 2008 SP 1
Versiunea pe 64 biți a Microsoft SQL Server 2005 SP3
Server cu o
bază de date
încorporată
Versiunea pe 64 biți a Microsoft SQL Server 2008
Standard, Enterprise, Data Center, sau Web Server cu
SP2; ediția pe 64 biți a Windows Server 2008 R2
Standard, Enterprise, Data Center, or Web Server; sau
variant pe 64 biți a Windows Server 2008 R2 Service Pack
1 (SP1) Standard, Enterprise, Data Center, sau Web
Server.
Ghidul de instalare SharePoint va instala și :
Web Server (IIS) role
Application Server role
Microsoft .NET Framework version 3.5 SP1
SQL Server 2008 Express with SP1
Microsoft Sync Framework Runtime v1.0 (x64)
Microsoft Filter Pack 2.0
Microsoft Chart Controls for the Microsoft .NET
Framework 3.5
Windows PowerShell 2.0
SQL Server 2008 Native Client
Microsoft SQL Server 2008 Analysis Services ADOMD.NET
ADO.NET Data Services Update for .NET Framework 3.5
Hard disk 80 GB pentru pachetul de bază cât și pentru zona de log,
back-up și pentru operațiunile generale. În funcție de
cantitatea de date stocată în listele SharePoint, spațiul de
memorie necesar va crește.
12
SP1
Windows Identity Foundation (WIF)
Servere web
front-end și o
fermă de
servere de
baze de date
Versiunea pe 64 biți a Windows Server 2008 Standard,
Enterprise, Data Center, sau Web Server with SP2; ediția
pe 64 biți a Windows Server 2008 R2 Standard,
Enterprise, Data Center, sau Web Server; sau variant pe
64 biți a Windows Server 2008 R2 Service Pack 1 (SP1)
Standard, Enterprise, Data Center, sau Web Server.
Ghidul de instalare SharePoint va instala și :
Web Server (IIS) role
Application Server role
Microsoft .NET Framework version 3.5 SP1
Microsoft Sync Framework Runtime v1.0 (x64)
Microsoft Filter Pack 2.0
Microsoft Chart Controls for the Microsoft .NET
Framework 3.5
Windows PowerShell 2.0
SQL Server 2008 Native Client
Microsoft SQL Server 2008 Analysis Services ADOMD.NET
ADO.NET Data Services Update for .NET Framework 3.5
SP1
Windows Identity Foundation (WIF)
Unitatea client Un program browser ce suportă SharePoint (ex. Internet
Explorer 7, Google Chrome, Mozilla Firefox)
2.3.2 Configurare web SharePoint oferă o interfață asemănătoare cu cea a Microsoft Office 2007 sau a
versiunilor ulterioare. Această interfață oferă posibilitatea ca un utilizator ce nu are
cunoștințe de programare să poată manevra datele, să editeze paginile sau să adauge
funcționalități standard site-urilor fără prea mari dificultăți: pot fi administrate
conținuturile listelor, bibliotecilor sau al paginilor din site, se pot acorda permisiuni
utilizatorilor, se poate vedea istoricul documentelor, paginilor, bibliotecilor sau se pot
defini proprietăți ale acestora.
SharePoint Designer sau Microsoft Office SharePoint Designer este un editor
HTML de web design gratuit pentru crearea sau modificarea site-urilor SharePoint.
13
Printr-o interfață asemănătoare Microsoft Word se poate crea conținut transformat in cod
HTML ce nu este la îndemâna utilizatorului.
2.4 Arhitectura SharePoint Platforma SharePoint este una flexibilă, orientată pe servicii (arhitectură SOA).
Astfel ea poate fi scalată de la o utilizare pe un singură mașină la utilizarea pe o fermă de
sute de servere.
O fermă SharePoint reprezintă o grupare logică de servere ce împart resurse
comune. O fermă în general este independentă de altele, dar poate exista posibilitatea de a
oferi sau a primi funcționalități dintr-o altă fermă. Fiecare fermă are o bază de date
centrală de configurare, ce este administrată printr-o interfață PowerShell sau printr-un
site SharePoint de tip Administrator Central ce parțial este construit tot pe infrastructura
PowerShell. Windows PowerShell reprezintă un framework de automatizare și creare de
sarcini prin rularea unor scripturi create într-un limbaj construit în .NET, într-o interfață
de tip command-prompt. Fiecare server din fermă este capabilă să acceseze configurațiile
salvate in baza de date centrală spre a își configura serviciile locale precum IIS sau
conexiunile la bazele de date în concordanță cu celelalte servere din fermă. De asemenea
astfel se raportează către serverul central probleme ce pot să apară în fermă sau gradul de
folosire a resurselor fermei, astfel serverul central având posibilitatea de a redirecta un
nou utilizator către un alt server.
Aplicațiile web reprezintă containerele de nivel înalt pentru conținut într-o fermă
și sunt interfața prin care un utilizator interacționează cu SharePoint. O aplicație web are
asociate un set de URL-uri mapate ce sunt definite în consola de administrare centrală
SharePoint și apoi replicate în mod automat în configurațiile IIS al fiecărui server atașat
fermei. Aplicațiile web sunt în general independente unele de altele, având propriile
application pool existând posibilitatea de a le reporni independent în IIS.
O colecție de site-uri este folosită pentru a grupa mai multe „SharePoint Site-uri”,
fiecare aplicație web având cel puțin una. Acestea pot avea propria lor bază de date, sau
pot împărți baza de date cu o alte colecții din cadrul aceleiași aplicații web.
Aplicațiile service oferă bucăți atomice de funcționalitate către alte aplicații din
cadrul unei ferme. Astfel de aplicații sunt existente în instalarea de bază a SharePoint
pentru sincronizarea utilizatorilor (User Profile Sync Service) sau a datelor ce privesc
motorului de căutare (Search Indexing Service). Un serviciu poate fi oprit, poate exista
doar pe un singur server sau sarcinile ei pot fi echilibrate prin mai multe servere din
fermă. Ele sunt construite în așa măsură încât să fie cât mai independente posibil pentru
14
ca nefuncționarea uneia să nu oprească ferma din funcționare. Fiecare serviciu dintr-o
fermă are propriul proces ce necesită o anumită cantitate de memorie RAM ca să
funcționeze având de asemenea o bază de date de configurare și un container Active
Directory pentru verificarea permisiunilor de acces către serviciu.
Administrare și securitate. Datorită naturii modulare a arhitecturii SharePoint
aceasta permite crearea de permisiuni și privilegii pe zone clar definite în aplicație.
SharePoint Central Administration reprezintă aplicația web ce în mod normal este pe un
singur server din fermă, oferind o interfață web pentru administrarea unei ferme
SharePoint. În eventualitatea unei proaste funcționări a acestei aplicații ea poate fi
înlocuită cu o consolă Windows PowerShell pentru reconfigurarea fermei. Structura
platformei SharePoint permite existența a multiple aplicații web într-o singură fermă. În
cadrul unui mediu de găzduire de tip cloud, proprietarii aplicațiilor au nevoie de o
consolă proprie de administrare, SharePoint Tenant Administration ce este utilizată
pentru administrarea unei singure aplicații web.
Accesul către orice resursă SharePoint fie ea aplicație web, pagină web sau listă
este strict controlat de platformă. Aplicațiile web ce sunt construite pe Windows
SharePoint Services au grupuri implicite incluzând cinci nivele de acces. Un
administrator de site poate administra ce permisiuni are fiecare din aceste nivele. Acesta
poate asocia apoi permisiuni grupurilor de utilizatori aceștia fiind asociați cu anumite
resurse precum liste, biblioteci sau elemente din ele. Avem astfel următoarele nivele de
acces implicite în SharePoint Services 3.0:
NIVEL
PERMISIUNE
DESCRIERE
Full Control Acest nivel conține toate permisiunile, atribuit inițial proprietarilor unui grup de
SharePoint. Acest nivel nu poate fi personalizat sau șters..
Design Poate crea liste sau biblioteci, edita pagini, adăuga teme vizuale, margini și css-uri
unui site. Nu este atribuit niciunui grup inițial.
Contribute Poate adăuga, edita și șterge elemente din liste sau biblioteci deja existente. Acest
nivel este atribuit grupului utilizatorilor (Members) inițial.
Read Au acces numai pentru vizualizarea site-ului. Utilizatorii sau grupurile ce au această
permisiune pot viziona elemente, pagini sau documente. Este desemnat inițial
grupului Visitors.
Limited Access Nivelul limitat de acces este creat pentru a permite anumitor utilizatori sau grupuri de
utilizatori sa acceseze anumite liste, biblioteci sau elemente din ele fără a putea vedea
întregul site. Totuși, pentru a avea acces la o listă sau o bibliotecă un utilizator sau un
grup de utilizatori trebuie să aibe permisiunea de a accesa pagina părinte a întregului
15
site. Acest nivel nu poate fi personalizat și nici șters. Acest nivel nu este atribuit în
mod direct de către un administrator ci Windows SharePoint Services 3.0 îl atribuie
automat unui utilizator sau grup de utilizatori când acestora le este atribuit accesul
către un obiect ce necesită permisiunea de a vedea și resursele părinte ale acestora.
Windows SharePoint Services 3.0 include 33 de permisiuni ce sunt folosite de
catre nivele menționate anterior. Se poate personaliza fiecare nivel ce permisiuni conține
cu excepția Limited Acces și Full Acces și de asemenea se pot crea nivele noi de
permisiuni.
Cele 33 de permisiuni menționate anterior pot fi grupate funcțional în funcție de
resursele sau obiectele la care au acces. Avem astfel permisiuni asupra listelor, site-urilor
sau personale ce pot fi aplicate asupra view-urilor sau web part-urilor. În următoarele
tabele sunt prezentate permisiunile implicite pe nivele.
Permisiuni asupra listelor
PERMISIUNE FULL
CONTROL
DESIGN CONTRIBUTE READ LIMITED
ACCESS
Administrare Listă X X
Suprascriere check-out X X
Adăugare X X X
Editare X X X
Ștergere X X X
Vizionare X X X X
Aprobare element X X
Deschidere element X X X X
Vizionare versiuni X X X X
Ștergere versiuni X X X
16
Create Alerts X X X X
Vizionare Application Page X X X X X
Permisiuni Site
PERMISIUNE FULL
CONTROL
DESIGN CONTRIBUTE READ LIMITED
ACCESS
Administrare permisiuni X
Verificare rapoarte utilizare X
Create Subsites X
Administrare WebSite X
Adăugare și personalizare
pagini
X X
Adăugare teme SharePoint X X
Adăugare teme css X X
Creare grupuri X
Accesare directoare X X X
Folosire Self-Service Site
Creation
X X X X
Vizionare pagini X X X X
Vizionare permisiuni X
Accesare informații
utilizatori
X X X X X
Administrare alerte X
17
Folosirea interfețelor
remote
X X X X X
Folosirea uneltelor de
integrare clienți
X X X X X
Deschidere site X X X X X
Editare profile utilizatori X X X
Permisiuni Personale
PERMISIUNI FULL
CONTROL
DESIGN CONTRIBUTE READ LIMITED
ACCESS
Administrare Personal
Views
X X X
Adăugare/ștergere
WebPart
X X X
Editare WebPart X X X
De asemenea fiecare permisiune în parte poate să fie dependentă de una sau mai
multe alte permisiuni.
2.5 Versiuni SharePoint
2.5.1 Istoric Prima versiune oficială a apărut în 2001 sub numele de SharePoint Portal Server
2001 și SharePoint Team Services. A fost descris ca un portal ce ajută întreprinderile să
își stocheze datele referitoare la compania lor oferind un sistem de navigare prin ele și un
motor de căutare.
În 2003 au apărut SharePoint Portal Server 2003 și Windows SharePoint Services
2.0 construite pe o platformă comună al doilea fiind integrat și in Windows Server, având
o licență comună. De asemenea a fost integrat in SP2003 și sistemul de administrare de
conținut MCMS.
18
În 2007 a apărut o nouă versiune de SharePoint construită peste Windows Server,
având în spate SQL Server și .NET Framework (ASP.NET 2.0) ce avea o funcționalitate
sporită precum pagini șablon și web part-uri. A fost prima versiune de SharePoint de
succes, Microsoft comercializând peste 100 de milioane de licențe, 4000 de sisteme
integrate generând venituri de 1.3 miliarde de dolari într-un an. Această versiune conținea
o platformă cu multe componente și unelte integrate, un portal web, motor de căutare,
administrare de conținut și tehnologii de business intelligence. De exemplu în această
versiune o listă putea stoca documente, postări pe un blog, pagini wiki sau pagini întregi
cu un conținut administrat.
2.5.2 SharePoint 2010 În 12 mai 2010, Microsoft a lansat SharePoint 2010, un sistem orientat web,
interfețele platformei fiind reprezentate în principal de browsere web. Principala calitate a
acestui tip de interfață o reprezintă accesul la resurse fără a fi nevoit să te afli pe un
anumit server.
În privința sistemului de administrare de conținut SharePoint 2010 aduce
îmbunătățiri în privința editării, experiența fiind similară celei din Microsoft Office, un
suport îmbunătățit al internaționalizării, o bună organizare și clasificare de conținut,
conformitatea cu ultimele standarde web cum ar fi XHTML și WCAG 2.0 AA pentru a
asigurarea unei game mai largi de utilizatori și dispozitive ce pot vizualiza aplicația și o
căutare îmbunătățită prin intermediul unui concept de FAST Search rezultatele fiind mai
relevante existând posibilitatea de a vizualiza rezultatele în multiple modalități. De
asemenea a fost integrată unealta Web Analytics (asemănătoare Google Analytics)
utilizată în măsurători, colectare de date, analiză și raportare în scopul optimizării și
înțelegerii modului în care este folosită o aplicație web.
19
Figura 2.5.2.1 Exemplu de aplicație gestionată de SharePoint (http://office.microsoft.com)
SharePoint 2010 introduce o rețea socială în cadrul locului de muncă ca o porțiune
de informații de pe spațiul de lucru al unui angajat. Totul se rezumă la a oferi o viziune
modernă lucrului in echipă, colaborării și împărțirii cunoștințelor și resurselor din cadrul
companiei. Un angajat își poate crea un profil detaliat cu date de contact, zona sa de
expertiză sau documente, articole de blog publicate de respectivul. Se pot crea grupuri de
persoane pentru împărțirea task-urilor, se pot crea anunțuri, conținutul poate fi etichetat și
comentat, SharePoint fiind transformat într-o adevărată rețea socială. Cei mai de succes
oameni dintr-o organizație se bazează pe talentele și cunoștințele celorlalte persoane
pentru a-și termina treaba. Uneltele oferite de SharePoint permit căutarea de persoane și
resurse în privința unei anumite activități spre a profita de experiențe anterioare în
domeniu. S-a observat faptul că restricționarea site-urilor de socializare externe produce
nemulțumiri în cadrul angajaților, SharePoint venind cu o soluție internă, mai restrictivă
și cu posibile utilizări strict profesionale.
20
Figura 2.5.2.2 Pagina de profil utilizator a unui site social SharePoint
(http://office.microsoft.com)
Administrarea de documente a fost îmbunătățită în versiunea SharePoint 2010,
având astfel două tipuri de conținut: documente și informații folosite pentru a rezolva
task-uri și activități și înregistrări. Acestea din urmă diferă de primele deoarece sunt
documente și informații ce trebuie închise și stocate pentru a se crea un istoric al lor sau
pentru scopuri administrative. Astfel în SharePoint 2010 se pot oferi drepturi de acces
asupra controlului și citirii documentelor, se pot crea categorii de documente pentru o
căutare mai rapidă sau se pot eticheta anumite documente oficiale eliminând posibilitatea
de a fi schimbate ulterior. Datorită interconectivitații dintre produsele Microsoft, aceste
documente pot fi create și editate într-un alt mediu decât SharePoint, de exemplu
Microsoft Word fapt demonstrat de figura următoare:
21
Figura 2.5.2.3 Bibliotecă de documente.(http://office.microsoft.com)
Indiferent cât de mare este compania, când un angajat are nevoie de un document
anume el trebuie să îl obțină cât mai rapid. SharePoint 2010 are două nivele de
căutare: una instalată direct, fiind o versiune îmbunătățită a SharePoint 2007 și FAST
Search ce include opțiuni adiționale precum:
Căutare de informații și persoane, incluzând detalii despre
acestea
Conținutul este indexat și stocat în afara bazei de date
SharePoint
Se poate folosi Windows 7 pentru a căuta informații din
SharePoint
Căutarea poate fi filtrată în funcție de anumite metadate
Se pot previzualiza obiectele rezultate în urma căutării
Există un filtru ce depinde de profilul persoanei care caută
22
Figura 2.5.2.4 Căutarea prin Fast Search (http://office.microsoft.com)
Un element cheie în orice afacere este reprezentat de Business Intelligence, ce rezumă
totalitatea software-urilor ce pot ajuta la găsirea de probleme și la luarea deciziilor într-o
companie. Cu SharePoint 2010 se pot folosi instrumente precum Excel pentru colectarea
și analiza datelor care sunt stocate pe serverele SharePoint, existând posibilitatea ca
aceste informații să provină din diferite sisteme externe companiei.
Figura 2.5.2.5 Grafice și rapoarte întcomite de SharePoint (http://office.microsoft.com)
23
Un rol important pe care îl poate avea SharePoint se referă la integrarea
multiplelor sisteme de afaceri într-unul singur creând astfel sisteme Compozite sau
Mashup-uri. Platforma SharePoint poate să obțină date din diverse sisteme externe și să le
unească oferind o singură locație pentru un angajat la locul de muncă. Se pot crea
formulare web-based pentru editarea și actualizarea bazelor de date atât interne cât și
externe existând posibilitatea modificării sau adăugării unor documente direct din
Microsoft Word sau Excel.
Microsoft SharePoint 2010 poate fi utilizat și într-o perspectivă cloud oferind
servicii web la care se pot conecta orice tip de aplicații (servicii REST și SOAP).
2.5.3 SharePoint Foundation SharePoint Foundation introdus odată cu versiunea de SharePoint Server 2010
aduce îmbunătățiri în privința principiilor Web 2.0 și a standardelor HTML rezolvând o
serie mare de limitări ale versiunii anterioare. Interfața web este construită folosind
JavaScript și Ajax ce îmbunătățesc experiența utilizatorului, eliminând reîncărcări inutile
ale paginilor web doar pentru transmiterea anumitor date către server. Este introdusă și o
„panglică” (ribbon) cu rol de meniu în partea superioară a fiecărei pagini ce permite
utilizatorului să localizeze și să execute diverse comenzi fără a fi necesară schimbarea
paginii deschise.
Rolul fundamental al SharePoint Foundation este reprezentat de folosirea unor
șabloane web pentru a crea aplicații, liste și biblioteci pentru stocarea datelor. Aceste
șabloane pot fi folosite atât pentru a crea noi aplicații cât și pentru adăugarea diferitelor
elemente din cadrul acestora precum liste, pagini și componente web. Serverul de
SharePoint din spatele aplicației web se ocupă de toate detaliile referitoare la adăugarea și
modificarea înregistrărilor din baza de date SQL a aplicației fără a fi nevoie de un
administrator de baze de date care să asigure funcționalitatea optimă a acesteia.
Arhitectura SharePoint Foundation a fost creată pentru a opera într-un cluster sau fermă
de servere. De exemplu, considerând scenariul în care avem două server web „fron-end”,
nu server de baze de date este necesar să folosim un load balancer ce va decide cărui
server va fi trimis o cerere HTTP.
25
Capitolul 3
Dezvoltarea aplicațiilor în SharePoint
3.1 Instalarea și actualizarea aplicațiilor folosind
PowerShell Windows Powershell este o unealtă de creare de script-uri de tip „command-line”
ce permite unui administrator acces total către interfețele API-urilor SharePoint, pentru a
interacționa direct cu aplicații web, colecții de site-uri, liste și alte elemente de
SharePoint. A fost construit deasupra framework-ului .NET acceptând ca și input și
returnând obiecte recunoscute de limbajul CLR. Powershell introduce conceptul de
cmdlet, o unealtă cu o singură funcționalitate ce permite realizarea de task-uri simple. Ele
pot fi de asemenea combinate, personalizate sau create pentru realizarea de task-uri mai
complexe. SharePoint 2010 include mai mult de 500 de cmdlet-uri, unele fiind concepute
pentru a gestiona colecții și site-uri. Un site în SharePoint este reprezentat în spate de o
colecție de pagini web, liste sau biblioteci create pentru a stoca și prezenta informații.
Pași de efectuat pentru instalarea SharePoint 2010 pe un Windows Server:
Se execută de pe un cont de administrator pe toate serverele dintr-o fermă
următorul script
Start-Transcript
Set-ExecutionPolicy unrestricted -Force # answer Y
$spmodlocation = "C:\Users\SP-SETUP\Desktop\SPModule;"
$env:PSModulePath = $env:PSModulePath + ";$spmodlocation"
Import-Module SPModule.misc
Import-Module SPModule.setup
Install-SharePoint -SetupExePath "C:\Users\SP-
SETUP\Desktop\en_sharepoint_server_2010_x64_dvd_518634\setup.exe" -PIDKey
"PIDKY-PIDKY-PIDKY-PIDKY-PIDKY"
Pentru crearea și configurarea bazei de date se va executa pe serverul principal al
aplicației
Add-PSSnapin Microsoft.SharePoint.Powershell
$username = 'DOMAIN\SP-FARM'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential
$username,$password
New-SPConfigurationDatabase -DatabaseName "SP2010_Config" -DatabaseServer
SharePoint_Alias -AdministrationContentDatabaseName "SP2010_CentralAdmin" -
26
Passphrase (ConvertTo-SecureString "FarmAcctPassw0rd!" -AsPlainText -force) -
FarmCredentials $cred
Install-SPHelpCollection -All
Initialize-SPResourceSecurity
Install-SPService
Install-SPFeature -AllExistingFeatures
New-SPCentralAdministration -Port 8080 -WindowsAuthProvider "NTLM"
Install-SPApplicationContent
Pentru conectarea celorlalte servere dintr-o fermă se vor executa următoarele
Add-PSSnapin Microsoft.SharePoint.Powershell
$spmodlocation = "C:\Users\SP-SETUP\Desktop\SPModule;"
$env:PSModulePath = $env:PSModulePath + ";$spmodlocation"
Import-Module SPModule.misc
Import-Module SPModule.setup
Join-SharePointFarm -DatabaseServer SharePoint_Alias -
ConfigurationDatabaseName SP2010_Config
Pentru a putea fi folosit SharePoint 2010, este necesară adăugarea unor conturi (user
accounts) prin execuția următoarelor scripturi :
$username = 'DOMAIN\SP-MSAP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-FSS'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-FSCA'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-AP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-DCA'
$password = 'Passw0rd!'
27
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-WFEAP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-CA'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-Excel'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-SS'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-MMAP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-SSAP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-INAP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-UPSAP'
$password = 'Passw0rd!'
28
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-UPS'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-OWAAP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
$username = 'DOMAIN\SP-DSAP'
$password = 'Passw0rd!'
$password = (ConvertTo-SecureString -String "$password" -AsPlainText -force)
$cred = New-Object System.Management.Automation.PsCredential $username,$password
New-SPManagedAccount –Credential $cred
În final pentru crearea unei aplicații web se va executa :
New-SPWebApplication -Name "SharePoint Front End Web Application" -Port 81 -URL "http://www.contoso.com" -ApplicationPool "SharePoint
Sites Application Pool" -ApplicationPoolAccount "DOMAIN\SP-AP" -
DatabaseName "SP2010_ContentDB_Frontend"
Din linia de comadă PowerShell se pot de asemenea:
Crea noi site-uri : New-SPWeb -Url http://SPServer/NewWeb -Template "STS#0" -
Name "New Site" ` >> -Description "My New Site"
Se pot crea rezerve (backup) pentru conținutul și setările create în
SharePoint : Export-SPWeb -Identity http://SPServer/NewSite `
>> -Path C:\Backup\spWebBackup.bak
Site-urile sau aplicațiile ce nu mai sunt necesare pot fi șterse Remove-
SPWeb -Identity http://SPServer/NewSite -Confirm:$false
Figura 3.1 Exemplu
PowerShell
29
3.2 SharePoint Design Patterns În dezvoltarea software un design pattern reprezintă o soluție generală și
reutilizabilă a unei probleme ce poate să apară în mai multe aplicații. Adoptarea unor
astfel de practici pentru dezvoltarea aplicațiilor SharePoint permite crearea de soluții de
performante și avansate independente de modul de implementare. În continuare sunt
descrise practicile ce ar trebui să stea la baza fiecărei aplicații SharePoint.
3.2.1 Model-View-Presenter
Figura 3.2.1 Schemă MVP
Model-view-presenter (MVP) este un șablon derivat din model-view-controller,
folosit la construirea interfețelor utilizatorilor. În MVP, nivelul de presenter îți asumă
funcționalitatea de mijlocitor între zona de interfață pe care o vede utilizatorul și zona de
stocare a datelor și obiectelor. În general, se dorește ca tot cea ce reprezintă logică a
aplicației să fie definită în zona de presenter. Ca și o regulă generală orice interfață
(view) ce se dorește a fi vizionată trebuie să fie generată de nivelul de presenter și de
asemenea orice acțiune generată pe interfață este gestionată de acest nivel.
Într-o aplicație SharePoint o pagină web sau un web part aduce datele, se ocupă de
evenimentele declanșate de un utilizator și trimite mai departe către server datele
modificate prin nivelul „model”.
30
3.2.2 Repository
Figura 3.2.2.1 Schemă Repository
Repository este denumirea generală a uneia sau mai multor zone dintr-o aplicație
ce acționează cu un rol mediator între diferite nivele sau părți ale unei aplicații. În general
în aplicațiile enterprise,zona de Repository este folosită pentru persistența datelor și a
informațiilor, fiind responsabile asupra cererilor către SharePoint și pentru actualizarea
datelor din liste. Recuperarea datelor din listele SharePoint necesită o folosire atentă a
API-ului oferit, cunoștințe de GUID-urile ( identificatori unici ai elementelor SharePoint)
legate de liste și câmpuri și o cunoaștere a folosirii CAML (Collaborative Application
Markup Language). Înainte de folosirea acestui șablon accesul la datele din liste se făcea
descentralizat din diverse zone ale unei aplicații, iar în cazul unei erori de acces
identificarea și rezolvarea tuturor problemelor era dificilă. De asemenea apare cod
duplicat, dificultăți în a crea o zonă de cache a aplicației și imposibilitatea realizării de
teste unitare. Pentru a fi corectată această problemă accesul la date a fost centralizat în
zona de Repository aceasta fiind într-o oarecare măsură abstractizată existând
posibilitatea refolosirii codului în mai multe aplicații.
Prin Repository este centralizat accesul la datele din SharePoint, orice aspect al
aplicației ce depinde de înțelegerea API-ului SharePoint fiind scris o singură dată în
folosul întregii aplicații. Astfel odată scris codul acestui nivel, un programator nu trebuie
neapărat să aibe cunoștințe de SharePoint pentru a avea acces la informații din liste.
Cantitatea de cod care este necesară pentru interogarea sau actualizarea unui element
31
dintr-o listă SharePoint este suficient pentru a ne determina să încapsulăm aceste procese
în metode de ajutor. Fiecare parte dintr-o aplicație fie el numit Web Form sau Event
Receiver are nevoie de acces la date din liste riscul la crearea de cod duplicat fiind
ridicat. Considerând că poate la un anumit moment va fi necesară adăugarea sau
eliminarea unei coloane al unei liste, centralizarea codului ce face legătura între zona de
business a aplicației și SharePoint reprezintă o foarte bună practică în crearea oricărei
aplicații. În figura de mai jos se pot observa componentele unui repository al unei liste
SharePoint :
Figura 3.2.2.2 Schemă Repository SharePoint
3.2.3 Service Locator Service Locator oferă un punct centralizat pentru înregistrarea și căutarea de
obiecte diferite. După cum spune și numele se referă în principal la înregistrarea zonelor
de acces la date diferite dintr-o aplicație. Altfel spus,avem o clasă Singleton în care
fiecare zonă de Repository pentru un obiect sau o listă SharePoint este înregistrată o
singură dată pentru folosire, obținând un comportament similar containerelor de injectare
de dependințe. De asemenea
centralizând gestionarea zonei de
servicii, se elimină riscul de a
crea cod duplicat sau greu de
modificat ulterior. În figura
următoare avem un exemplu de
funcționalitate al Service Locator.
Figura 3.2.3 Schemă Service
Locator
32
Prin folosirea șablonului menționat anterior, putem face modificări în zona Service
fără a fi neapărat necesar să modificăm clasele care le folosesc. Acest șablon de
proiectare ne permite realizarea de aplicații modularizate ce pot fi dezvoltate și testate
independent.
3.2.4 Trusted Facade Pattern Este folosită pentru aplicații ce vor fi accesate atât din exteriorul unei companii cât
și intern, prin intranet. Cererile se fac într-o rețea cunoscută sub numele de DMZ ( zonă
demilitarizată) ce folosește un serviciu WEB care se află în spatele unui firewall, în
rețeaua internă, unde se va stabili și nivelul de acces sau de permisiune al unei cereri.
Topologia rețelei
Figura 3.2.4.1 Schemă Trusted Facade
În SharePoint șablonul Trusted Facade este folosit pentru :
Autentificarea utilizatorilor externi ai unei aplicații SharePoint care se află într-o
rețea DMZ, cererea SharePoint utilizând o bază de date de acreditare și
autentificare.
Transformarea parametrilor de autentificare transmiși din zona externă în
parametrii recunoscuți de către rețeaua internă, operație executată de serverul
SharePoint.
Asigurarea integrității și confidențialității mesajelor transmise între aplicația
SharePoint și serviciile web.
Evitarea construirii unor sisteme proprii de stocare de parole de autentificare.
33
Figura 3.2.4.2 Schemă SharePoint Trusted Facade Pattern
3.3 Pagini web
3.3.1 Master Pages Una din principalele caracteristici ale unei aplicații web ușor utilizabile este
reprezentată de existența unei scheme generale consistente, întinsă pe toate paginile și
oferind un meniu de navigare. ASP.NET 2.0 introduce o nouă posibilitate de a simplifica
implementarea unei scheme și a navigării prin definirea unui „master page”. Aceste
pagini permit unui dezvoltator să construiască scheme șablon cu zone predefinite de
editare. Acest șablon poate fi aplicat fiecărei pagini de tip ASP.NET de pe un site, ele
fiind furnizoarele de conținut în zonele editabile descrise anterior, dar în rest fiecare
pagină având elemente identice.
În SharePoint există un „master page” predefinit pentru toate aplicațiile, dar nu
este obligatorie folosirea ei, existând opțiunea de editare a ei sau de ștergere. Fișierul fizic
al acestui șablon se poate găsi în dosarul masterpage din _catalogs, SharePoint
Foundation fiind proiectat în jurul acestuia. De fiecare dată când este creat un nou site,
SharePoint crează un dosar ascuns cunoscut ca și „Master Page Gallery” unde sunt
adăugate trei variante de pagini șablon: v4.master, minimal.master și default.master.
Pagina minimal.master furnizează o schemă fără conținut predefinit, oferind
utilizatorului permisiunea de a modifica și personaliza complet paginile ce
implementează această schemă.
Pagina șablon default.master conține o schemă realizată conform unor standarde
HTML mai vechi, ce permite unui site să fie adus de pe o versiune mai veche SharePoint
în versiunea din 2010 fără a fi necesară schimbarea codului aplicației.
34
Pagina șablon v4.master este cea principal folosită în aplicațiile SharePoint 2010,
oferind o schemă generală pentru fiecare pagină a site-ului. Ea include un meniu de
navigare, o zonă de breadcrumb (ce permite utilizatorului navigarea către paginile aflate
la un nivel superior paginii accesate ), un meniu de bun venit și o bară de navigare
denumită Ribbon (panglică) în partea superioară. Această pagină conține elemente de
bază HTML, incluzând zonele standard precum html, head, body și form având multiple
zone de control gestionate de serverul SharePoint pentru navigarea pe alte pagini ale site-
ului. Zonele de „Content Place Holder” (substituenți de conținut) permit unui dezvoltator
să extindă un șablon prin adăugarea de conținut unic în pagini. Astfel în oricare pagină ce
extinde acest șablon se pot adăuga elemente ce aparțin zonei de titlu a paginii, a zonei
head a paginii sau conținut. Pentru adăugarea acestui șablon peste o pagină nouă se
folosește următoarea linie de cod:
<%@ Page MasterPageFile=”~masterurl/default.master” %>
În continuare prezentăm codul sursă ce definește cum arată șablonul v4.master:
Figura 3.3.1 Codul sursă al fișierului șablon v4.master
35
3.3.2 Application Page Pentru dezvoltarea de aplicații web personalizate, SharePoint Foundation oferă un
tip de pagină numit Application Page, ce reprezintă un fișier .aspx aflat în dosarul
_layouts și este desfășurat fizic în dosarul rădăcină SharePoint sub calea următoare:
C:\Program Files\Common Files\Microsoft Shared\Web Server
Extensions\14\Template\Layouts
SharePoint Foundation crează o zonă virtuală de directoare _layouts pentru fiecare
aplicație web creată. Prin folosirea acestui sistem de cartografiere (mapare) de fișiere,
orice Application Page poate fi accesat din contextul site-ului în care se află într-o fermă.
O astfel de pagină poate fi accesată prin apel direct de URL în interiorul dosarului
_layouts, de exemplu: http://sptest/_layouts/DocumentRouting/index.aspx .
Un Application Page poate extinde un șablon SharePoint oferindu-i paginii o
structură similară întregului site, primind de asemenea și funcționalități specifice precum
meniul de navigare. Spre deosebire de un site page, un application page nu poate fi
modificată din interiorul SharePoint, oferind astfel siguranță asupra conținutului și
aspectului nefiind salvate și afișate dintr-o bază de date. De asemenea nu este necesară
analiza și încarcarea în memorie a unei astfel de pagini, viteza de execuție în cadrul unei
ferme mari fiind considerabilă față de un Site Page. Instalarea SharePoint 2010 crează
peste 400 de Application Page în fișierul _layouts pentru diverse funcționalități ale site-
ului și pentru interfața de administrare.
3.3.3 Web Part Un Web Part reprezintă o componentă web din cadrul unei pagini. Prin acestea o
aplicație poate fi modularizată, se pot crea elemente care să apară pe una sau mai multe
pagini fiind definite o singură dată. De asemenea ele pot fi personalizate în așa fel încât
să fie disponibile doar pentru o anumită gamă de utilizatori. Un web part poate fi utilizat
doar în cadrul unui Site Page, fiind pus la dispoziția oricărui utilizator cu drepturi de
editare a unei pagini, pentru adăugare sau ștergere dintr-o pagină. Printr-o astfel de
acțiune, utilizatorul nu modifică conținutul acelei componente ci doar o aduce în pagină.
O pagină compusă din Web Part-uri este construită pe baza infrastructurii furnizate de
ASP.NET, fiind necesară crearea de fișiere .aspx ce vor reprezenta conținutul unui Web
Part.
36
Figura 3.3.3 Exemplu de fișier .aspx în care este creat un Web Part.
3.4 Evenimente (Event Handlers) SharePoint Foundation are în componență evenimente-server ce au legătură cu
obiecte precum site-uri, liste sau componente ale lor. Acest suport permite dezvoltatorilor
să creeze manipulatoare de evenimente în metode ce sunt executate automat ca și răspuns
la producerea unui eveniment precum crearea unei liste, actualizarea sau ștergerea ei.
Manipulatoarele de evenimente pot fi clasificate în două categorii: acționate
înainte de producerea evenimentului în sine și înainte ca SharePoint Foundation să
producă modificări în baza de date și în urma acestuia. Astfel un manipulator ce precede
un eveniment poate ajunge chiar și să îl anuleze, SharePoint oferind o metodă foarte bună
pentru validarea intrărilor într-o listă de exemplu. Manipulatoarele post-eveniment sunt
acționate în urma modificărilor comise de SharePoint Foundation pe baza de date și nu
mai pot fi anulate. Acestea sunt folosite în special pentru crearea de notificări precum
trimiterea unui email către fiecare membru al unui site în urma încărcării unui document.
37
Există o convenție în privința denumirii manipulatoarelor de evenimente, de
exemplu cele ce preced un eveniment au denumiri ce se termină cu sufixul –ing, precum :
WebAdding, WebDeleting sau ItemAdding. Metodele post-eveniment sunt denumite în
general folosind sufixul –ed, precum: WebProvisioned, ItemAdded sau ItemUpdated.
Fiecare manipulator este executat într-un mod specific de sincronizare. Astfel cele
ce preced un eveniment rulează sincron cu evenimentul în sine, pe același fir de execuție
blocând execuția evenimentului. Metodele post-eveniment sunt executate asincron pe un
alt fir de execuție răspunsul serverului SharePoint către utilizatorul ce a cauzat
evenimentul nefiind blocat. Considerând situația în care un utilizator încarcă un
document și sunt trimise notificări prin email către 100 de utilizatori ai site-ului, natura
asincronă a metodelor post-eveniment asigură funcționalitatea rapidă a procesării datelor,
utilizatorul nefiind nevoit să aștepte trimiterea fiecărui email. Totuși dacă se dorește
metodele post-eveniment pot fi configurate să fie executate sincron și pe același fir de
execuție cu evenimentul.
În SharePoint sunt definite o colecție de clase ce permit manevrarea
evenimentelor. Se poate crea un nou manipulator de evenimente prin simpla extindere a
unei clase de bază, în funcție de necesități, definită în spațiul Microsoft.SharePoint:
SPItemEventReceiver
Asigură suportul de prelucrare al evenimentelor ce se produc asupra elementelor
dintr-o listă sau o bibliotecă: adăugarea, modificarea sau ștergerea unei
componente.
SPListEventReceiver
Furnizează prelucrarea evenimentelor ce au ca obiect listele: adăugarea, ștergerea
sau modificarea câmpurilor unei liste din cadrul unei colecții de site-uri.
SPEmailEventReceiver
Oferă posiblitatea de a prelucra e-mail-uri trimise către o listă ce are această
posibilitate.
SPWebEventReceiver
Are suport pentru evenimente ce se produc în cadrul unui site dintr-o colecție.
SPWorkflowEventReceivers
Asigură suportul de prelucrare al evenimentelor ce țin de fluxurile de lucru inițiate
de utilizatori.
Odată extinse aceste clase, este necesară implementarea metodelor sale prin
suprascrierea lor, în funcție de necesități. De exemplu dacă dorim implementarea
38
evenimentului ListAdded din cadrul SPListEventReceiver se va suprascrie doar această
metodă ca în exemplul următor:
namespace WingtipEvents.ListEvents{
public class ListEvents : SPListEventReceiver{
public override void ListAdded(SPListEventProperties properties){
//prelucrare eveniment
}
}
}
În urma acestui pas clasa creată trebuie înregistrată ca și manipulator de
evenimente printr-un fișier de configurare XML citit de SharePoint :
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers>
<Receiver>
<Name>Receiver1</Name>
<Type>ListAdded</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>WingtipDocuments.ListEvents.ListEvents</Class>
</Receiver>
</Receivers>
</Elements>
În Visual Studio acest aspect este acoperit de către o interfață care permite crearea
unei clase ce va extinde o altă clasă selectată și va implementa anumite funcții alese, iar
apoi o va înregistra într-un fișier de configurare.
3.5 Liste Întregul univers SharePoint are la bază conceptul de listă ca și zonă de stocare a
datelor. Acestea pot fi create și personalizate pentru a veni în întâmpinarea cerințelor
necesare diverselor contexte de lucru sau a nevoilor fiecărei companii. Când un utilizator
crează o listă prin intermediul interfeței SharePoint, el poate să aleagă dintr-o listă de
șabloane predefinite ce sunt prezentate în figura următoare:
39
Figura 3.5 Exemple liste predefinite
Sunt destule situații în care șabloanele SharePoint corespund necesităților și nu
este necesar intervenția unui programator. Un utilizator experimentat poate crea și
configura diverse liste ce pot fi suficiente în a atinge scopurile unei companii, dar sunt și
cazuri în care definirea lor dinamică și automatizarea construcției unei liste se impune, în
principal în momentul în care acestea trebuiesc create pe un mai mare număr de site-uri
sau ferme SharePoint.
3.5.1 Definirea câmpurilor Fiecare listă conține o colecție de câmpuri ce un utilizator le percepe ca și coloane
ale unui tabel. Un câmp poate fi creat în contextul unei singure liste. Aceste câmpuri pot
conține un tip de date definit în SharePoint Foundation confom tabelului următor, preluat
din zona în care se crează un câmp:
40
Figura 3.5.1 Exemple tipuri de câmpuri
Fiecare câmp are un identificator unic în contextul SharePoint denumite GUID, de
forma: {4700A7B4-49E1-4466-8902-C8E38C245650} ce permite urmărirea și
procesarea fiecăruia în zona serverului. Există o serie de câmpuri de bază: Title,Created,
Modified, Author și Editor ce sunt introduse automat în cadrul fiecărei liste. De asemenea
există un câmp ID ce este generat automat și primește o valoare unică pentru un element
dintr-o listă. Pentru definirea programatică a unuia sau mai multe câmpuri se crează un
XML în cadrul unui proiect SharePoint ce va conține elemente de forma:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field Name="State" Type="Choice" ID="{1178F65D-0AF4-4E08-A45C-CB88C6CA7B4C}"
Required="TRUE" DisplayName="State">
<CHOICES>
<CHOICE>Registered</CHOICE>
<CHOICE>Barcode Generated</CHOICE>
<CHOICE>Uploaded</CHOICE>
</CHOICES>
</Field>
<Field Name="Description" Type="Note" ID="{4700A7B4-49E1-4466-8902-C8E38C245650}"
DisplayName="Description" Required="FALSE"/> </Elements>
41
3.5.2 Crearea tipurilor de conținut
Tipurile de conținut pot fi create folosit un obiect de tip Content Type și se
folosesc la definirea a ce conținut va exista într-o listă. Un astfel de obiect trebuie să
conțină un set de atribute și de câmpuri create folosind atributul FieldRef. Fiecare
definire a unui tip de conținut începe cu ID-ul conținutului părinte. De exemplu, acest
indicator unic pentru conținutul de tip Anunț (Announcement Content Type) este 0x0104,
ce transmite noului tip de conținut faptul că sunt moștenite atributele din părinte. Un
exemplu de configurare a unui tip de conținut este următorul:
Figura 3.5.2 Exemplu de descriere „Content Type”
Precum se poate observa în acest exemplu, avem mai multe referințe către câmpuri
definite printr-un ID și o denumire. Înainte de a crea un tip de conținut programatorul va
trebui să decidă care va fi tipul de bază din care se vor moșteni câmpuri și proprietăți.
În urma lansării tipului de conținut pe o fermă sau un server SharePoint, acesta
poate fi folosit și în cadrul listelor create folosind interfața web a SharePoint Foundation.
În aceași interfață pot fi văzute diverse proprietăți ale tipului de conținut, tipurile
moștenite într-o structura ierarhică precum și câmpurile acestora. În cazul în care sunt
executate modificări asupra tipului de conținut acestea sunt înregistrate și memorate de
serverul SharePoint ele fiind suprascrise doar în cazul în care este lansată o altă versiune
a aceluiași tip de conținut.
42
3.5.3 Construcția listelor utilizând fișiere de configurare Pentru crearea unei liste personalizate se crează în cadrul Visual Studio un tip de
fișier numit „List Defition”. Există două variante de definiri a unei liste și se referă la
alegerea tipului de conținut ce depinde ori de un tip predefinit în SharePoint Foundation
sau de unul personalizat creat în cadrul aplicației. În funcție de alegerea făcută se vor
genera o serie de fișiere XML, ce vor conține configurări predefinite pentru orice tip de
listă.
În figura următoare, avem conținutul fișierului principal de descriere al unei liste:
Figura 3.5.3 Exemplu
descriere List Template
Microsoft Visual Studio permite generarea din câteva click-uri a unei definiri de
liste, adăugând în soluția SharePoint fișiere xml ce descriu comportamentul acestuia.
Astfel în fișierul schema.xml putem modifica felul în care va fi vizionată această listă, ce
coloane vor fi afișate în cazul în care se merge pe varianta oferită de interfața SharePoint.
3.5.4 Accesarea datelor Listele Microsoft SharePoint sunt create pentru vizualizare și editare de către
utilizatori. În majoritatea soluțiilor SharePoint, ele se comportă precum niște surse de
date, permițând utilizatorilor crearea, citirea, actualizarea, ștergerea și executarea de
cereri asupra lor (operații CRUDQ) ce transformă listele SharePoint în surse de date
aparte: se comportă precum o grilă legată de date dar și o bază de date în același timp.
Elementele din cadrul listei pot fi folosite similar cu cele din listele normale C# cu
mențiunea că indecșii acestora sunt șiruri de caractere ce reprezintă numele câmpurilor
listei. Nu este recomandată preluarea unei liste întregi în memorie, deoarece cantitatea de
date transportată ar putea fi prea mare cauzând excepții de tip Out of Memory. Pentru
actualizarea oricărui tip de element al unei liste este necesară apelarea unei funcții de
43
update ce va transmite serverului SharePoint modificările, altfel ele pierzându-se, nefiind
salvate în baza de date. Lucrul cu elementele listelor nu este complicat, dar necesită multă
atenție din partea programatorilor, deoarece pot apare excepții din cauza nerespectării
parametrilor unei liste.
SharePoint oferă un obiect server-side pentru accesarea listelor și a elementelor
din ele. Folosindu-se obiectele oferite din spațiul Microsoft.SharePoint se pot adăuga,
citi, actualiza sau șterge elementele din orice listă. Întregul proces începe prin obținerea
unei referințe către un obiect Microsoft.SharePoint.SPList. Aceasta se poate prelua
precum este demonstrat în figura următoare: Figura 3.5.4.1
Obținere referință
către o listă
SharePoint[3].
În figura următoare avem un exemplu concret de operații CRUD ( create, read,
update, delete) asupra elementelor dintr-o listă SharePoint.
44
Figura 3.5.4.1 Exemplu de operații CRUD asupra unei liste[3].
3.6 SharePoint Feature Definirea unui feature furnizează un mecanism de adăugare a elementelor unei
soluții SharePoint precum definiri de liste, câmpuri, pagini sau manipulatoare d
evenimente. Un feature reprezintă un set de fișiere șablon ce sunt încărcate odată cu o
soluție pe o fermă SharePoint. În momentul în care administratorul fermei decide
activarea unui feature se crează o instanță a acestuia ce face posibilă folosirea
elementelor înregistrate în fișierele sale. De exemplu, o listă înregistrată într-un feature
este creată doar în momentul activării acesteia. Dosarul unui feature poate conține de
asemenea și elemente precum șabloane de pagini, imagini, fișiere CSS sau JavaScript.
Fiecare feature trebuie să conțină în mod obligatoriu fișierul de configurare XML
feature.xml prezentat în figura următoare:
Figura 3.6 Exemplu XML configurare feature
După cum se poate observa în figura anterioară un fișier de configurare conține
atribute precum Id, Title, Description, Version, Scope, Hidden și ImageUrl. Pentru
fiecare feature este necesară crearea unui cod unic de identificare GUID pentru câmpul
Id, pentru identificarea unică a acesteia. Pentru atributele Title și Description se
recomandă completarea cu date ce pot fi înțelese de un administrator al unei ferme
SharePoint referitoare la întrebuințarea acestui feature. Aceste atribute sunt afișate în
SharePoint Foundation în zona de administrare de feature-uri, unde acestea sunt și
activate. Scopul unui feature reprezintă contextul în care o instanță a acesteia poate fi
45
activată sau deactivată. Considerând setarea „Web” ca în cazul prezentat, înseamnă că
acest feature poate fi activat doar în contextul unui site SharePoint. Dacă scopul este setat
pe „Site” acesta poate fi activat în contextul unei colecții de site-uri. Câmpul Hidden, se
referă la vizibilitatea feature-ului în zona de administrare. Daca este scrisă valoarea True
atunci un feature nu poate fi activat decât de un administrator ce are acces la o consolă
PowerShell în cadrul unei ferme. În caz contrar, dacă este setat pe False, el poate fi pornit
de utilizatorii ce au acces în secțiunea de administrare.
Un feature reprezintă o componentă esențială în cadrul sistemelor SharePoint,
oferind posibilități de instalare printr-un singur click a unei întregi aplicații. Odată
încărcat un feature, este permisă accesarea oricărei resurse descrise în cadrul ei. În
momentul în care este dezactivat, acestea nu mai pot fi accesate. Astfel este creat un
sistem de tip Install/Uninstall similar cu cel al programelor din sistemul de operare
Windows. De asemenea pentru un feature se pot create manipulatoare de evenimente ce
sunt acționate de evenimente precum activare sau dezactivare de unde pot fi începute o
altă serie întreagă de activități.
3.7 Căutarea datelor Dintre toate componentele disponibile în Microsoft SharePoint Server 2010,
căutarea datelor denumită „Enterprise Search” are cea mai mare importanță având și cel
mai mare impact asupra unui utilizator. Căutarea a devenit o parte normală din viața
fiecărei persoane, fiind folosite motoare de căutare precum Bing sau Google atât în
scopuri personale cât și profesionale. Concepte precum căutarea în funcție de chei
predefinite, căutare avansată, filtrare și adrese web rezultate în urma unei căutări sunt
familiare tuturor. În SharePoint prima zonă accesată de un utilizator în căutarea de
informații o reprezintă motorul de căutare. Dacă acesta oferă rezultate relevante atunci
utilizatorul va fi mulțumit cu sistemul. Deoarece „Enterprise Search” are un rol important
în succesul SharePoint Server, este importantă configurarea și personalizarea sa adecvată.
Dată fiind complexitatea problemei căutării, Microsoft oferă cinci versiuni
diferite: SharePoint Foundation 2010 Search, Search Server Express, Search Server 2010,
SharePoint Server 2010 și Fast Search Server 2010. Fiecare dintre acestea este creat
pentru a fi folosit în contexte diferite, oferind diferite nivele de funcționalitate având de
asemenea și oferte diferite de licență.
În mod tradițional un motor de căutare returna rezultate pentru cererea unui
utilizator sub forma unei liste ordonate după relevanță. Aceste rezultate puteau oferi
informații de bază, un titlu al unui document sau data unei pagini web, dar utilizatorul era
nevoit să deschidă adresa la care se afla rezultatul pentru a verifica dacă este de interes.
46
Astfel a apărut conceptul de aplicație „search-based” (bazată pe căutări) ce permite
utilizatorului manevrarea rezultatelor direct.
Deși varianta inițială a unei pagini SharePoint de căutare afișează rezultatele într-o
listă există foarte multe oportunități ce susțin crearea de aplicații „search-based”. Astfel
sunt inclse posibilitatea de a influența rezultatele unei căutări, de a le sorta și clasifica,
schimbând modul în care acestea apar pe o pagină. Un exemplu relevant în configurația
standard SharePoint este reprezentată de listele de task-uri. O astfel de listă poate fi creată
în orice site SharePoint, și de cele mai multe ori o persoană poate să aibe task-uri
înregistrate pe mai multe site-uri. De cel mai multe ori, un utilizator nu va ști exact ce
task-uri are, sistemele de notificare ajungând să fie considerate SPAM, căutarea task-
urilor după numele persoanei căreia îi sunt desemnat rămânând unica opțiune. În pagina
rezultatelor utilizatorul poate vedea informații importante despre fiecare task, precum
titlul, data limită sau prioritatea. Utilizatorul poate manevra direct pe un task în această
pagină schimbându-i statutul sau modificându-i descrierea.
În centrul componentei de căutare SharePoint se află o componentă denumita
„Search Service Application” (SSA) ce este un serviciu web oferit pe fiecare server. Se
pot crea instanțe ale SSA ce pot fi împărțite pe mai multe servere precum orice altă
aplicație. Din zona de administrare centrală SSA-ul poate fi accesat prin selectarea
„Manage Service Applications” unde va exista un link către o pagină unde serviciul poate
fi configurat.
Figura 3.7.1 Pagina de administrare
47
În cadrul SSA sunt trei baze de date: SearchService, ManagedProperties și Crawl.
Primul reține configurările pentru SSA, al doilea conține definiții pentru proprietăți
administrate de serviciu, iar al treilea conține informații despre configurări referitoare la
datele ce trebuiesc indexate.
Procesul de indexare este responsabil pentru construirea unui fișier index ce
conține proprietăți referitoare la conținut, alături de date referitoare la permisiuni de acces
ce permit rezultatelor unei căutări să afișeze doar conținut asupra căruia utilizatorul are
drepturi. O sursă de conținut este un depozit pe care se fac căutări. Acestea pot fi site-uri,
fișiere externe, sau elemente din liste și biblioteci. Există o serie de filtre denumite
generic „IFilters” ce permit procesului de indexare accesul la conținutul unui element. De
exemplu, aceste filtre permit indexatorului accesul la conținutul unui document Microsoft
Office, astfel încât se poate realiza o căutare completă asupra textului. Filtrele ce țin de
documente Microsoft vin împreună cu SharePoint 2010 dar pentru alte tipuri de conținut,
precum documente PDF, acestea pot fi instalate pe serverul unde se produce instalarea de
la producătorii lor, în cazul pdf de la Adobe.
Odată creat fișierul de index, acesta poate fi folosit pentru a se crea cereri (Query)
asupra lor. O astfel de cerere începe atunci când un utilizator caută informații într-un
motor de căutare folosind unul sau mai multe cuvinte cheie. Cererea este trimisă către
server și sunt recuperate informații din baza de date cu configurări ce se referă de
exemplu la câmpuri dintr-o listă. Răspunsul serviciului de căutare este într-un format
XML. Serviciul de căutare poate trimite cereri și către alte servicii ce funcționează
independent comunicarea între acestea realizându-se conform unui protocol Open Search.
Sintaxa de căutare SharePoint. Deși utilizatorii sunt în general familiarizați cu
conceptul de chei de căutare, faptul ca SharePoint are o sintaxă specială prin care se pot
face căutări este mai puțin cunoscut. Sintaxa de căutare permite utilizatorilor introducerea
de cuvinte cheie, fraze și nume de proprietăți pentru a crea niște căutări mai rafinate.
Această sintaxă poate fi folosită și împreună cu wildcard-uri.
Cea mai simplă metodă de căutare o reprezintă introducerea unui singur termen,
fără spații sau elemente de punctuație(de exemplu Training). Astfel SharePoint va căuta
prin index și prin setările de metadate returnând fiecare rezultat ce corespunde. O căutare
mai rafinată include mai multe cuvinte cheie. Prin folosirea caracterelor (+) și (-) pot fi
definite cuvinte ce sunt în primul caz necesare, respectiv ce nu trebuie să fie conținute în
rezultate. De exemplu o căutare ce afișează rezultate cu cuvântul cheie „business” cu
excepția când este folosit în oricare din frazele următoare: „Busines Connectivity
Services” – „Business Intelligence”. Există și o serie de operatori ce pot fi folosiți
48
împreună cu termenii cheie. Avem astfel operatoriii logici AND, OR și operatorul *
pentru wildcarduri. Exemplu de căutare: „Busines Connectivity Services” OR „Business
Intelligence”.
Această sintaxă specifică de căutare poate fi folosită de către dezvoltatori în
soluțiile de search personalizate. Există o clasă KeywordQUery ce conține o serie de
proprietăți ce pregătesc execuția unei cereri și o metodă Execute ce execută cererea.
În aplicațiile personalizate SharePoint se poate folosi pentru căutări și un limbaj de
tip SQL, numit „Enterprise SQL Search Query syntax”. Următorul cod generează o
căutare ce afișează documentele ce au fost adăugate în ultima săptămână.
Figura 3.7.2 Exemplu cod SQL
3.8 Securitate Un aspect important în dezvoltarea sau implementarea unei aplicații SharePoint o
reprezintă securitatea. Nu se dorește ca un utilizator ce nu are drepturile necesare să
poată vedea și modifica pagini cu un conținut sensibil, elemente ale listelor sau
documente. De asemenea, trebuie să permitem celor ce au drepturi accesul la date. Deși
SharePoint incearcă să ofere o soluție ce permite administratorilor să configureze
drepturile de acces în cadrul unei colecții de site-uri, există și părți gestionate automat ce
pot fi extinse și modificate.
Autentificarea reprezintă procesul de determinare al identității unui utilizator.
Mecanismul cel mai întâlnit de autentificare este reprezentat de folosirea conturilor
Microsoft Windows ce sunt stocate într-un Active Directory Domain Services (AD DS).
Autentificarea are loc în momentul în care un utilizator deschide un computer pe un cont
ce determină recunoașterea acestuia pe o rețea. Dacă un utilizator este logat în Windows
pe un cont, folosind în limbajul C# zona System.Security se poate determina numele
acestuia. Autentificarea într-o aplicație web ASP.NET poate fi realizată folosind
mecanismul descris anterior, aceasta realizându-se în momentul în care un utilizator
accesează o pagină.
SharePoint reține un profil,o listă, de informații utilizator pentru cei autentificați la
nivelul unei colecții de site-uri. Acest profil al unui utilizator poate fi vizualizat și editat,
49
datele fiind reținute într-o listă ascunsă la nivelul colecției de site-uri denumite „User
Information List”. Fiind o listă standard SharePoint, aceasta poate fi accesată ca oricare
alta în cadrul unei aplicații dacă utilizatorul ce încearcă să facă această acțiune are
drepturile de acces necesare.
Există două tipuri de principii de securitate în cadrul SharePoint: utilizatori și
grupuri de utilizatori. Un utilizator aflat într-un grup moștenește toate permisiunile
grupului. Permisiunile sunt acordate la nivelul unei colecții de site-uri, ele fiind active
doar în colecția dată.
Figura 3.8 Panoul central de
administrare a securității
unei ferme SharePoint
50
Capitolul 4
Coduri de bare și recunoașterea lor
4.1 Ce sunt codurile bare? Un cod de bare reprezintă o variantă de afișare de date codificată și transpusă într-
o imagine pentru a fi citită pe o cale optică. Acestea sunt folosite pentru recunoaștere
rapidă a obiectelor fizice, identificarea lor și asocierea cu anumite informații ce sunt
înregistrate într-o bază de date. Un astfel de cod are aspectul unui șir de bare negre de
diverse grosimi pe un fundal alb. În general fiecare cifră sau literă se reprezintă printr-o
anumită combinație de 1 sau mai multe bare. Codurile de bare au fost introduse deoarece
mașinile (calculatoarele) în general nu citesc cu ușurință reprezentarea grafică normală a
cifrelo și literelor, pentru aceasta dezvoltându-se un domeniu specializat numit
„Recunoașterea optică a caracterelor” (în engleză „Optical Character Recognition,
OCR”).
Un cititor de coduri de bare folosește un senzor optic pentru a convertii codul bare
într-un impuls electric pe măsură ce fascicolul trece pe deasupra codului. Apoi cititorul
măsoară grosimile relative ale liniilor și spațiilor întâlnite, decodifică aceste secvențe le
transformă înapoi în caractere și le transmite la computer sau la un terminal portabil.
Fiecare tip de cod de bare începe cu un caracter special de start și se termină cu
unul similar de încheiere. Aceste caractere ajută cititorul să detecteze codul de bare și să
își dea seama din care parte este scanat. Unele coduri de bare pot să conțină caractere de
control poziționate chiar înainte de caracterul de stop. Acesta este calculat când codul de
bare este imprimat, aplicându-se o formulă asupra caracterelor conținute de codul de
bare. Cititorul în momentul citirii aplică aceași formulă și compară rezultatul cu caracteru
de control. Dacă cele două valori nu sunt identice, cititorul presupune că este greșit și reia
scanarea.
Controlul calității unui cod de bare are în vedere verificarea scanabilității acestuia
în conformitate cu un set de standarde impuse. Astfel există standarde ISO/IEC ce
determină anumite limite de verificare a unui cod de bare.
51
4.2 Code 128
Code 128 asigură o excelentă densitate a codurilor de bare pentru datele numerice
și o densitate bună pentru datele alfanumerice. Este ale în foarte multe cazuri pentru
aplicațiile noi în locului variantei vechi Code 39 datorită densității sale precum și datoriă
faptului că poate cofiica un set foarte mare de caractere. Poate cripta toate cele 128 de
caractere ASCII și, prin folosirea unui caracter de extensie (FNC4), caracterele Latin-1
definite în ISO/IEC 88591.
Codurile de bare sunt împărțite în trei subseturi, respectiv A, B, C. Există trei
coduri distince ce indică ce subset va fi folosit, în plus, pentru fiecare subset include
caractere de control ce permit trecerea către alt subset în mijlocul unui cod de bare.
Această împărțire ajută cititorul în orientarea mai rapidă și mai eficientă în momentul
scanării. Subsetul A include caracterele ASCII standard, cifre, litere mari și coduri de
control. Subsetul B include caracterele ASCII standard, cifre, litere mari și litere mici.
Subsetul C comprimă doi digiți numerici în fiecare caracter realizând astfel o densitate
excelentă pentru fiecare cod de bare.
Fiecare caracter este egal cu de 11 ori lățimea celei mai înguste linii, folosind o
lățime minimă a liniei de 0.010`` fiecare caracter va fi lat de 0.11``. Folosind
dimensiunea de 0.010``, 20 de caractere de date plus codul de start, digitul de control și
codul de stop vor avea lățimea de 2.55`` (codul de stop este de 13 ori mai lat decât cea
mai îngustă bară). Folosind subsetul C cu date exclusiv numerice se realizează o
comprimare de 2:1 a datelor însemând o lățime totală a codului de bare de 1.45``. (Calcul
realizat de http://www.coduridebare.com )
Există o sumă de verificare, fiecare caracter în simbologia Code 128 având o
valoare numerică cuprinsă între 0 și 102. În subsetul A și B, valoarea numerică a unui
caracter se calculează ca fiind codul său ASCII minus 32. De exemplu, spațiul (ASCII
32) are valoarea 0, semnul exclamării (ASCII 33) are valoarea 1.
Subsetul A permite imprimarea caracterelor de control ASCII, adică acelea cu
coduri ASCII cuprinse între 0 și 31. Pentru aceste caractere se adaugă 64 la codul ASCII
pentru a obține valoarea numerică. De exemplu, valoarea NUL (ASCII 0) este 64, SOH
(ASCII 1) este 65, STX(ASCII 2) este 66.
Subsetul C imprimă digiii numerici în perechi, iar valoarea caracterului folosit
pentru suma de control este valoarea numerică a perechii(00, 01, 02... 99).
52
Figura 4.2 Exemplu Code 128
4.3 Generarea și citirea codurilor de bare
4.3.1 Gen Code 128 Gen Code 128 este o bibliotecă simplă ce permite generarea de obiecte C# de tip
System.Drawing.Image pentru un cod de bare Code128. Această imagine poate fi folosită
ulterior pentru afișare și imprimare în cadrul unei aplicații Windows sau în cadrul unei
aplicații web ASP.NET. Această bibliotecă poate fi găsită pe :
http://www.codeproject.com/Articles/14409/GenCode128-A-Code128-Barcode-
Generator
Obiectivul dezvoltării acestei biblioteci a fost oferirea de suport gratuit în
generarea codurilor de bare 128, neexistând nici o altă alternativă open source la
momentul respectiv. De asemenea s-a dorit ca utilizatorul final să poată genera o imagine
dintr-o singură linie de cod precum este prezentat în figura următoare:
Figura 4.3.1 Gen Code 12[5].
Funcția de generare are trei parametrii:
Primul parametru reprezintă un șir de caractere ce se dorește a fi criptat
Al doilea parametru reprezintă o setare de bază a grosimii berilor
53
Al trilea parametru este un contor ce permite adăugarea sau nu a unei zone albe la
marginea imaginii generate
4.3.2 ABBYY FineReader 11 ABBYY FineReader OCR este o soluție software ce permite unui utilizator să
transforme forma scanată a unui document fizic, fișiere PDF și fotografii digitale într-un
format editabil și prin care se pot identifica sau căuta cu ușurință texte. Acuratețea
recunoașterii și capacitatea de conversie elimină nevoia de a rescrie și formata un
document ce există doar în format fizic. Oferă o experiență intuitivă ce permite generarea
de task-uri într-un singur click ce automatizează o serie de alte procese ce nu sunt vizibile
utilizatorului.
Deoarece optimizarea proceselor corporative pentru Microsoft SharePoint și
livrarea de documente și metadate pentur partajarea și accesarea acestora de către toate
persoanele dintr-o întreprindere a luat avânt în ultimii ani, ABBYY au creat o soluție de
transformare a documentelor scanate în documente editabile și recuperabile în urma unei
căutări. Organizațiile au trecut la platforme avansate precum Microsoft SharePoint pentru
a îmbunătăți schimbul de cunoștințe și de lucru colaborativ. Stocarea fișierelor digitale în
SharePoint este o sarcină ușoară, dar pentru a putea ca un angajat din administrație să
aibe acces pe deplin la aceste documente, trebuie ca aceastea să fie disponibile pentru
căutare electronică și recuperare.
ABBYY Recognition Server pentru Microsoft SharePoint permite gestionarea
ușoară și crearea unei soluții scalabile de capturare a documentelor care permite
utilizatorilor SharePoint în cadrul unei organizații scanarea eficientă ș indearea
documentelor. Documentele tipărite pot fi
ușor scanate, transformate în fișiere
electronice căutate, îmbogățite de meta-date
și salvate direct în bibliotecile
corespunzătoare de documente SharePoint.
Organizațiile beneficiază de manipularea
rapidă a documentelor, procese simplificate și
economii semnificative de costuri de personal
și de hârtie. Programul poate fi cumpărat de
pe www.abbyy.com. Nu există variante open
source sau neplătite.
Figura 4.3.2 ABBYY FineReader[6].
54
Capitolul 5
Aplicație de gestionare de documente „Document
Routing”
5.1 Cerințe generale Aplicația „Document Routing” este o aplicație Web intranet creată având la bază
SharePoint Foundation, ce se dorește a fi un mediu de stocare a metadatelor referitoare la
documentele fizice din cadrul unei companii. De asemenea în urma scanării
documentelor și trimiterea lor pe o adresă de e-mail (acțiune automatizată de către
anumite scannere) acestea vor ajunge într-un format Adobe Portable Document Format în
biblioteca aplicației, alături de metadatele ce sunt identificate cu fișierul scanat.
IQuest este o companie independentă de servicii IT, având un portofoliu avansat
de soluții software. Combinând expertiza tehnologică din domenii diferite cu un
management de proiect ce are o profundă înțelegere a industriei IT, compania are o
varietate largă de clienți și angajați provenind din diferite areale geografice îndepărtate.
Având sediul inițial în Frankfurt compania s-a extins în România (Cluj-Napoca, Brașov,
Sibiu și Craiova), Elveția (Zurich), Suedia (Gothenburg), California (Palo Alto) și
Ungaria (Budapesta) generând astfel o situație administrativă complexă, existând nevoia
dezvoltării unei platforme intranet de administrare al documentelor disponibil în fiecare
sediu.
În cadrul companiei IQuest s-a propus crearea unei aplicații ce va fi folosită pentru
gestiunea documentelor justificative, pe platforma SharePoint 2010 din companie, care va
respecta toate aspectele de metodologie ale unui proiect IQuest. Aplicația implică
automatizarea digitizării documentelor și introducerea lor pe portalul intranet al
companiei în locații specifice tipului lor. Pentru fiecare document procesat se va genera
un cod de bare ce va fi atașat documentului fizic pentru ca în urma scanării și trimiterii
documentului scanat pe adresa de email al bibliotecii SharePoint (proces automatizat de
scannerele moderne), acesta va fi identificat și adăugat în biblioteca corespunzătoare.
Această soluție personalizată SharePoint se dorește să poată identifica rapid un document,
și să existe opțiunea de ștergere automată din bibliotecă într-un interval de timp setat,
când acesta nu mai este considerat necesar sau relevant pentru companie. Prin acest
sistem se dorește un acces rapid la un document din orice agenție indiferent că vorbim
55
despre Brașov, Frankfurt sau California, un angajat din departamentul administrativ are
nevoie de un sistem central de gestionare al documentelor. Datorită faptului că IQuest are
angajați din diverse părți ale lumii s-a decis folosirea limbei engleze în cadrul aplicației.
Cerințele aplicației:
1. Să se dezvolte o aplicație capabilă să rețină informații (metadate) despre
documente justificative din cadrul unei companii.
2. Aplicația va fi dezvoltată pe platforma SharePoint 2010 prezentă în
companie, utilizându-se toate aspectele de metodologie ale unui proiect
IQuest.
3. Aplicația va fi independentă și configurabilă. Instalarea aplicației
realizându-se prin simpla activare a ei.
4. Se urmărește digitizarea documentelor și introducerea lor pe portalul
intranet al companiei în locații specifice tipului lor.
5. Se vor genera coduri de bare pentru documentele procesate. Se dorește
folosirea CODE 128.
6. Se va crea un sistem de primire a documentelor scanate și de recunoaștere a
lor prin OCR. Se va folosi o aplicație cu licență plătită de companie.
(ABBYY FineReader).
7. Redirectarea documentelor de la scanner înspre bibliotecile de documente
de pe intranet-ul companiei.
8. Stabilirea unor politici informaționale pentru documente (exemplu:
ștergere/mutare după o perioadă de timp, blocare în caz de litigii)
9. Crearea unei interfețe web de încărcare a metadatelor. Operații CRUD.
10. Trimiterea de notificări pentru persoanele interesate de procesul de
digitizare de documente.
11. Vizualizarea documentelor prin interfața SharePoint.
12. Folosirea JIRA pentru crearea de sarcini de lucru, rapoartarea și urmărirea
lor.
56
5.2 Mediul de lucru
Lucrul efectiv la aplicație a început prin configurarea unui server virtual VMware
cu resurse suficiente pentru instalarea serverului SharePoint 2010. Astfel avem un
Windows Server 2008 R2 Standard cu patru procesoare Intel(R) Xeon(R) CPU E5520
@2.27GHz 2.67MHz, memorie instalată 4GB RAM și un sistem de operare pe 64 de biți.
S-a optat pentru SharePoint 2010 deoarece se folosește deja în cadrul companiei în
alte scopuri, aplicația Documnt Routing fiind un feature în plus. Serverul rulează pe IIS
(Internet Information Services) versiunea 7.5.
De asemenea pentru configurarea unei adrese de email în intranetul companiei a
fost instalat programul HMailServer și s-a configurat un DNS ce este directat către
serverul virtual pe adresa SP2010.iquest.local.
Ca și unealtă de dezvoltare s-au folosit Visual Studio 2010 pentru aplicație și U2U
CAML Query Builder pentru generarea de cod XML CAML compatibil cu lista
SharePoint creată, fiind o unealtă folositoare pentru teste. Avem pentru Visual Studio
instalate și unelte specifice pentru lucrul cu SharePoint și interfețe web: Microsoft Visual
Studio SharePoint Developer Tools, Microsoft Visual Web Developer 2010 și
Community Kit for SharePoint: Development Tools Edition atât Foundation cât și Server.
Se folosește un sistem de versionare Subversion clientul ales fiind Tortoise SVN
1.6.8 versiunea de Subversion 1.6.11. Repository-ul Subversion este localizat la adresa:
https://box.iquestint.com/repos/IQDocumentRouting toate fișierele aplicației fiind
încărcate acolo.
5.3 Descrierea proceselor În continuare, vom descrie procesele prin care trece un utilizator al soluției
SharePoint create, pentru a realiza buna gestionare a unui document. În cele ce urmează o
sa utilizăm pseudonimul User pentru a numi un angajat din departamentul administrativ
al companiei, interfața web utilizată o vom denumi browser și vom descrie fiecare
activitate într-o ordine cronologică a ce va trebui să execute respectivul angajat.
57
Figura 5.2.1 Use Case-ul aplicației
1. Autentificare SharePoint. Precum se poate observa în figura anterioară,
prima interacțiune pe care un utilizator o are cu sistemul creat o reprezintă
autentificarea SharePoint. Aceasta se realizează automat atunci când se
folosește browser-ul Internet Explorer, iar în caz contrar se realizează prin
introducerea manuală a numelui de utilizator și a parolei. În cazul în care
acestea există și corespund, utilizatorului îî este permis să continue să
aceseze interfața SharePoint. Până în acest moment nu este accesată
aplicația IQuest Document Routing, ci doar interfața oferită de către
SharePoint Foundation. În cazul folosirii Internet Explorer numele
utilizatorului este reprezentat de către o combinație între numele
calculatorului folosit și salvat în sistemul de operare Windows și numele
utilizatorului curent înregistrat în sistemul de operare (exemplu:
SP2010/sp.sys)
58
2. În urma autentificării, dacă soluția SharePoint Document Routing este
activată, el poate accesa interfața printr-un URL predefinit în aplicație de
unde ajunge la pagina inițială, unde pe scurt sunt descrise procesele prin
care un document trece și este prezentat și un exemplu de cod de bare
generat de către aplicație. Pe fiecare pagină din cadrul aplicației avem un
meniu în partea superioară ce ne permite accesul către zona de adăugare a
metadatelor unui document, respectiv în zona de căutare, vizualizare și
editare al unui document deja introdus.
Figura 5.2.2 Pagina de primire
3. Zona de adăugare de metadate este constituită dintr-un formular având
câmpurile Titlu cu un caracter obligatoriu, Descriere, Origine cu un caracter
obligatoriu și Tip Document unde se poate alege dintr-o listă predefinită în
cadrul aplicației departamentul sau aria administrativă de care aparține un
document. În momentul în care se face click pe butonul Submit, aplicația
validează metadatele introduse, în cazul în care acestea sunt completate
corect, se crează o nouă intrare în biblioteca sistemului și este generat un
cod de bare pe ecran, în caz contrar afișându-se un mesaj de eroare. Pe
lângă aceste informații introduse, sistemul adaugă încă o serie de date
precum numele utilizatorului care a creat această nouă intrare în bibliotecă
sau data de procesare.
59
Figura 5.2.3 Pagina de adăugare metadate
4. Generarea codului de bare al unui document se realizează în urma pasului
de adăugare ca și mesaj de confirmare al faptului că metadatele introduse
sunt valide și au ajuns în bibliotecă. Pentru imprimarea acestui cod se vor
urma instrucțiunile afișate, adică printr-un click pe poza codului este
deschis meniul de imprimare al browserului folosit. În momentul în care se
face un click într-o zonă exterioară ferestrei în care a fost generat codul de
bare, aceasta dispare și este înlocuită de informații referitoare la metadatele
introduse.
Figura 5.2.4 Cod de bare generat de aplicație
60
5. Din momentul în care s-a imprimat codul de bare, documentul referitor la
metadatele introduse va fi etichetat (codul de bare este lipit pe document).
Ce va permite ulterior aplicației identificarea acestui document.
6. Dacă se dorește ca documentul să ajungă în format digitizat în biblioteca
aplicației, documentul având codul de bare lipit trebuie scanat și trimis
către adresa de e-mail al aplicației. Scannerele din cadrul companiei IQuest
automatizează acest pas, fiind necesar doar o scanare și selectarea adresei
unde va fi trimis documentul în format pdf.
7. Căutarea unui document se realizează prin interfața căutare în care se
ajunge printr-un click în meniu pe elementul aceași denumire. Avem în
acest moment opțiunile de căutare în funcție de metadatele Titlu, Origine și
Tip introduse în cadrul pasului de adăugare al unui document. În momentul
în care se tastează într-unul din cele două câmpuri sau este selectată o
valoare din cadrul metadatei Tip, motorul de căutare este acționat automat,
rezultatele fiind aduse într-un interval de câteva zecimi de secundă, nefiind
necesară părăsirea sau reîncărcarea paginii.
Figura 5.2.5 Pagina de căutare
61
Rezultatele unei căutari se pot observa în figura următoare:
Figura 5.2.6 Rezultatele unei căutări
8. Pentru accesul la informații mai detaliate despre un document, se va face
click pe cel dorit din zona de rezultate ale unei căutări. Se va deschide o
pagină unică pentru elementul respectiv ce poate fi salvată sau memorată în
cadrul browserului folosit. În această pagină metadatele Tip Document,
Descriere și Titlu pot fi modificate. În momentul în care unul din ele este
modificat, aplicația va salva automat atât timp cât modificările sunt valide,
nefiind necesară reîncărcarea paginii sau apăsarea unui buton de
confirmare. În cazul în care documentul a fost digitizat și încărcat în
aplicație pagina va conține un URL către adresa acestuia, fiind posibilă
descărcarea sau vizualizarea documentului. În caz contrar există un link
către un document generat automat în momentul adăugării ce conține
metadatele intrării în biblioteca SharePoint.
62
Figura 5.2.7 Descrierea detaliată a metadatelor
9. Scanarea documentului se referă la procesul în care un utilizator preia un
document fizic etichetat cu un cod de bare generat de aplicația IQuest
Document Routing și îl scanează trimițându-l ulterior (automatizat sau
manual) către adresa de email a bibliotecii sistemului.
63
Diagrama de activitate este reprezentată mai jos:
64
5.4 Stocarea datelor Document Routing se dorește a fi o aplicație independentă și instalabilă dintr-un
singur click și anume activarea feature-ului denumit asemeni aplicației. Date fiind aceste
cerințe generarea listei în care vor fi stocate atât metadatele cât și documentele este
realizată în momentul în care se instalează aplicația prin crearea unor configurări XML ce
sunt grupate în cadrul unui Feature.
Fișierul de configurare ce se află la baza listei de stocare a datelor este cel care
descrie câmpurile.
Figura 5.3.1 Fișierul ce descrie câmpurile unei liste
65
Avem descrise câmpurile:
Description de tipul Note, ce poate primi 2^30-1 caractere.
DocumentType de tipul Choice. Acest câmp ne permite sa alegem una
dintre valorile predefinite în lista Choices:
o Administration
o Information
o Facilities
o Operations
o Sales
o Marketing
ProcessingDate este de tip DateTime si primește predefinit valoarea
momentului în care este adăugată o intrare.
State de tipul Choice în care va fi reținută starea unui document:
o Registered
o Barcode Generated
o Uploaded
DocumentOrigin ce primește maxim 255 de caractere.
În urma lansării către serverul SharePoint al acestor câmpuri, ele sunt înregistrate
în mod unic după GUID. Acest XML este completat manual de către dezvoltator,
codurile unice fiind generate cu ajutorul a diverse unelte precum Visual Studio. Este de
menționat faptul că dacă se dorește modificarea unuia dintre ele sau adăugarea unui nou
câmp, există o zonă de cache între visual studio și serverul SharePoint și este recomandat
un restart al sistemului ce rulează aplicația.
66
Câmpurile prezentate anterior sunt definite special pentru aplicația noastră. În
generarea listei de date vom folosi un tip de conținut predefinit ce va avea câmpurile de
mai sus precum și alte câmpuri moștenite din tipul de bază. Definirea Content Type-ului
denumite IQuestDoc s-a realizat astfel:
Figura 5.3.2 IQuest Doc, un Content Type personalizat
Utilizându-se un Content Type se poate genera o listă ce va avea ca și câmpuri
elementele din Content Type precum și cele moștenite din părinte.
67
În figura următoare avem descrisă lista folosită în aplicația Document Routing:
Figura 5.3.3 Descrierea listei
În cadrul acestui tip special de listă se vor reține metadatele introduse în interfața
aplicației, precum și documentele scanate. Menționăm că este un caz aparte de listă
deoarce extinde tipul de date bibliotecă, ce permite păstrarea și editarea de documente.
Traseul unui document către baza de date este prezentat în figura următoare de la pasul
adăugării metadatelor, generării unui cod de bare și al scanării documentelor care ajung
în serverul SharePoint
Figura
5.3.4
Traseul
unui
document și
al
metadatelor
sale
68
5.5 Arhitectura aplicației Pentru această aplicație am optat pentru o arhitectură pe trei nivele (three-tier
architecture având un nivel de prezentare (Presentation Layer – PL), unul dedicat logicii
aplicației (Business Logic-BL) și unul dedicat accesului la date (Data Access Layer –
DAL).
Figura 5.4 Descrierea arhitecturii
69
Conform figurii 5.4, nivelul de prezentare se află în zona interfeței HTML, ce
acționează o zonă de controllere. În funcție de serviciul avut nevoie este chemat un
depozit (repository) de date ce asigură nivelul de business al aplicației. Prin acest
repository sunt chemate serviciile SharePoint ce aduc date sau le inserează în baza de
date Microsoft SQL Server.
5.5.1 Nivelul de acces la date Nivelul de acces la baza de date din aplicația Document Routing este reprezentat
de către SharePoint Foundation. Similar unei aplicații SOA (Service Oriented
Architecture), Document Routing trimite cereri într-un format XML către serviciile
SharePoint, ce se ocupă de recuperarea sau inserarea și actualizarea datelor din Microsoft
SQL Server.
Informațiile din liste pot fi accesate folosindu-se o sintaxă XML specifică
SharePoint, denumit CAML, ce conține diverși operatori precum cei prezentați în figura
de mai jos:
Figura 5.4.1.1 Operatori CAML[3]
70
Un element din lista SharePoint este transformat într-un obiect C# denumit
IQuestDocument. De asemenea denumirile de câmpuri, de tipuri de date sau de posibiliăți
de alegere în cadrul unui choice list au fost scrise într-o clasă de constante, fiind folosite
în toată aplicația. De exemplu pentru validarea unui câmp de tip select din interfața web
în acest document de constante se construiește o listă cu valorile permise.
Figura 5.4.1.2 Obiecte C# folosite pentru afișarea elementelor unei liste
71
5.5.2 Nivelul de logică al aplicației Este reprezentat de zona de Repository și într-o mult mai mică măsură în interfață,
unde există o serie de validări Javascript.
Figura 5.4.2.1
Descriere
nivel
Repository
72
Pentru o ușoară citire a codului și pentru a-i asigura scalabilitatea și ușurința
executării de modificări am ales încercat să abstractizez majoritatea operațiilor în clasa
AbstractRepository ce implementează interfața IRepository, unde sunt descrise operațiile
de bază pe care ar trebui să le execute orice Repository din cadrul aplicației. Zona
abstractizată oferă anumite funcționalități generale ce nu au necesitat mai mult de un id
de document, preluat dintr-o interfață IEntity ce este implementat de fiecare obiect legat
de o listă în cadrul aplicației.
Funcțiile ce sunt particulare unei liste sunt trecute în clasa proprie de Repository,
ele fiind abstracte în clasa comună. Astfel folosim funcții de transformare dintr-un
SPListItem într-un IEntity:
Figura 5.4.2.2 Transformare din SPListItem în Obiect C#
Figura 5.4.2.3 Transformare din Obiect C# în SPListItem pentru actualizarea acestuia
73
Motorul de căutare personalizat creat în aplicație construiește o cerere XML
CAML, folosind un șablon definit în zona de constante a Repository-ului, ce înlocuiește o
serie de placeholdere cu criterii trimise de utilizator din interfață.
1.
2. namespace DocumentRouting.Repository.Constants
3. {
4. public static class RepositoryConstants
5. {
6. private const string FIELD_NAME = "{{Name}}";
7. private const string FIELD_VALUE = "{{Value}}";
8. private const string FIELD_TYPE = "{{Type}}";
9. private const string FIELD_REF = "<FieldRef
Name='" + FIELD_NAME + "'/>" +
10. "<Value Type='" + FIELD_TYPE + "'>" + FIELD_VALUE + "</Value>";
11.
private const string FIELD_CONTAINS = "<Contains>"+FIELD_REF+"</Contains>";
12. private const string FIELD_EQUALS = "<Eq>"+FIELD_REF+"</Eq>";
13.
14. /**
15. * Receives the field name, field type and field value.
16. * Returns the query for a contains
17. */
18.
public static string ContainsQuery(string fieldName, string fieldType, strin
g fieldValue)
19. {
20. return Replace(fieldName,fieldType,fieldValue,FIELD_CONTAINS);
21. }
22. /**
23. * Receives the field name, field type and field value.
24. * Returns the query for a Equals
25. */
26.
public static string EqualsQuery(string fieldName, string fieldType, string
fieldValue)
27. {
28. return Replace(fieldName,fieldType,fieldValue,FIELD_EQUALS);
29. }
74
30.
private static string Replace(string fieldName, string fieldType, string fie
ldValue, string template){
31. template = template.Replace(FIELD_NAME, fieldName);
32. template = template.Replace(FIELD_VALUE, fieldValue);
33. template = template.Replace(FIELD_TYPE, fieldType);
34. return template;
35. }
36. }
37. }
38.
39.
40. namespace DocumentRouting.Repository
41. {
42. public class IQuestDocumentRepository : AbstractRepository
43. {
44.
45. public override IList<IEntity> Search(ICriteria criteria)
46. {
47. IList<IEntity> results = new List<IEntity>();
48. DocumentSearchCriteria
searchCriteria=(DocumentSearchCriteria) criteria;
49. using (SPWeb web = SPContext.Current.Web)
50. {
51. SPQuery query = new SPQuery();
52. /**
53. * Building a query based on the criteria. We need to know how
many active criterias we have
54. * in order to add the <And> .
55. */
56. int countCriteria = searchCriteria.CountCriterias();
57. StringBuilder queryBuilder=new StringBuilder();
58. queryBuilder.Append("<Where>");
59.
60.
if (searchCriteria.Type != null && searchCriteria.Type.Length > 0)
61. {
62. queryBuilder.Append("<And>");
63.
queryBuilder.Append(RepositoryConstants.EqualsQuery(IQuestDocumentConstants.FI
75
ELD_DOCUMENT_TYPE,IQuestDocumentConstants.TYPE_FIELD_DOCUMENT_TYPE,searchCrite
ria.Type));
64. }
65. if (searchCriteria.CountCriterias() > 1)
66. {
67. queryBuilder.Append("<Or>");
68. }
69.
70.
71.
if (searchCriteria.Title != null && searchCriteria.Title.Length > 0)
72. {
73.
queryBuilder.Append(RepositoryConstants.ContainsQuery(IQuestDocumentConstants.
FIELD_TITLE,IQuestDocumentConstants.TYPE_FIELD_TITLE,searchCriteria.Title));
74. }
75.
76.
if (searchCriteria.Origin != null && searchCriteria.Origin.Length > 0)
77. {
78.
queryBuilder.Append(RepositoryConstants.ContainsQuery(IQuestDocumentConstants.
FIELD_DOCUMENT_ORIGIN,IQuestDocumentConstants.TYPE_FIELD_DOCUMENT_ORIGIN,searc
hCriteria.Origin));
79. }
80. if (searchCriteria.CountCriterias() > 1)
81. {
82. queryBuilder.Append("</Or>");
83. }
84.
85.
86.
if (searchCriteria.Type != null && searchCriteria.Type.Length > 0)
87. {
88. queryBuilder.Append("</And>");
89. }
90. queryBuilder.Append("</Where>");
91.
92. String test = queryBuilder.ToString();
93.
94. query.Query = queryBuilder.ToString();
76
95. SPList list = web.Lists.TryGetList(this.ListName());
96. SPListItemCollection resultset = list.GetItems(query);
97. foreach (SPListItem item in resultset)
98. {
99. results.Add(ToEntity(item));
100. }
101.
102. }
103.
104. return results;
105. }
106. }
107. }
Algoritmul prezentat mai sus va returna din biblioteca de documente SharePoint
IQuest Document Routing o listă de entități C# ce conțin date ce sunt folosite și afișate în
cadrul aplicației în zona de interfață a utilizatorului.
5.5.3 Nivelul de prezentare Nivelul de prezentare este cel care se ocupă de afișarea interfețelor cu utilizator
prin intermediul cărora acesta interacționează cu aplicația. Acest nivel cuprinde toate
paginil web, care preiau informații de la utilizator și de la Business Logic Layer, cu care
utilizatorul poate interacționa direct sau indirect.
Utilizatorul interacționează în mod direct cu o singură pagină, șablon în care prin
intermediul cererilor Ajax sunt aduse în pagină cele cerute de către utilizator. Fiecare
pagină este în dosarul Layouts, care este înregistrat (mapat) în cadrul serverului
SharePoint, oferindu-se astfel acces către ele.
Nivelul de prezentare este exemplificat vizual în figura 5.5.3.
Teoretic, din punctul de vedere al unei arhitecturi MVP sau MVC corect construite
în nivelul de prezentare nu ar trebui să existe reguli de logică a aplicației, în aplicația
Document Routing există o serie de validări atât la nivel de Javascript cât și la nivel de
Controller, pentru a verifica validitatea și corectitudinea datelor introduse de un utilizator
fără a se executa cereri server-side.
77
Figura 5.5.3 Fișierele componente
nivelui de prezentare
78
5.5.4 Crearea interfeței utilizând jQuery Am dorit ca navigarea să se realizeze folosindu-se un număr minim de reîncărcări
de pagină, mult preferat pentru o posibilă utilizare mobile. Astfel am construit o serie de
funcții șablon ce le-am atașat obiectului jQuery ce este inițializat prin atașarea bibliotecii
cu aceași denumire. Navigarea prin paginile aplicației este administrată în totalitate prin
javascript, reușind să creez o arhitectură modularizată de prezentare a datelor, fiecare
modul fiind parte din conținutul unui șablon. Acest șablon cuprinde meniul de navigare,
și footer-ul aplicației, în rest conținutul venind dinspre un modul prin intermediul unei
cereri Ajax.
1. (function ($) {
2. var showError = "true";
3.
4. $.fn.switchPageContent = function (contentDiv, html) {
5. var isMSIE = /*@cc_on!@*/0;
6. if (isMSIE) {
7. try {
8. var iediv = contentDiv.substring(1);
9. document.getElementById("" + iediv).innerHTML = "" + html;
10. } catch (err) {
11. jQuery(contentDiv).html(html);
12. }
13.
14. jQuery().initPage();
15. } else {
16.
17. jQuery(contentDiv).children().toggle("fold");
18. setTimeout(function () {
19. jQuery(contentDiv).hide();
20. jQuery(contentDiv).html(html);
21. jQuery(contentDiv).fadeIn('slow');
22. jQuery().initPage();
23. }, 200);
24. }
25. }
26.
27. $.fn.bringData = function (properties) {
28. var defaults = {
29. sufix: '.aspx',
30. path: 'home',
79
31. content: '#documentRoutingContent',
32. data: {},
33. type: "GET",
34. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
35. dataType: 'html',
36. showError: "true"
37. };
38. var url = "";
39. (properties.path) ? url += properties.path : url += defaults.path;
40. (properties.sufix) ? sufix = properties.sufix : sufix = defaults.sufix
41. url += sufix;
42. (properties.data) ? data = properties.data : data = defaults.data;
43.
(properties.content) ? contentDiv = properties.content : contentDiv = defaults.conte
nt;
44. (properties.type) ? type = properties.type : type = defaults.type;
45.
(properties.contentType) ? contentType = properties.contentType : contentType =
defaults.contentType;
46.
(properties.dataType) ? dataType = properties.dataType : dataType = defaults.data
Type;
47.
(properties.showError) ? showError = properties.showError : showError = defaults.
showError;
48. $.ajax({
49. url: url,
50. type: type,
51. cache: true,
52. data: data,
53. contentType: contentType,
54. dataType: dataType,
55. showError: showError,
56. success: function (html) {
57. if (!properties.animate) {
58. jQuery(contentDiv).html(html);
59. } else {
60. properties.animate(contentDiv, html);
61. }
62. },
63. error: function (html) {
80
64. if (showError=="true") {
65. var message = new Messi('Failed to load page content ! ', {
66. autoclose: '2000',
67. width: '210px',
68. buttons: [{ id: 0, label: 'Close', val: 'X'}]
69. });
70. }
71. },
72. complete: function () {
73. }
74.
75. });
76. return false;
77. }
78.
79. $.fn.changePage = function (hash) {
80. if (!hash) {
81. if (window.location.hash) {
82. hash = window.location.hash.substring(1); //Puts hash in variable, and
removes the # character
83. } else {
84. hash = "home";
85. }
86. }
87. var queryString = window.location.search;
88. if (queryString != null && queryString.length > 0) {
89. } else {
90. queryString = "";
91. }
92.
93. console.log("ChangePage " + hash);
94. var properties = {
95. path: hash,
96. content: '#documentRoutingContent',
97. animate: jQuery().switchPageContent,
98. sufix: '.aspx' + queryString
99. };
100.
101. jQuery().bringData(properties);
102.
103. }
81
104.
105. $.fn.initPage = function () {
106. var slidedTiles = $('[data-role=tile-slider], .block-slider, .tile-slider');
107. slidedTiles.each(function (index, tile) {
108. var params = {};
109. tile = $(tile);
110. params.direction = tile.data('paramDirection');
111. params.duration = tile.data('paramDuration');
112. params.period = tile.data('paramPeriod');
113. tile.tileBlockSlider(params);
114. })
115. $('.tile').bind('mouseenter', function (e) {
116. $(this).effect("shake", {
117. times: 1,
118. distance: 5
119. }, 500);
120. })
121. .bind('mouseleave', function (e) {
122.
123. });
124.
125. /**
126. * Change Page on navigator link click;
127. */
128. jQuery(".navigator").click(function () {
129. var href = $(this).attr('href');
130. if (href) {
131. href = href.substring(1);
132. if (href.length == 0) {
133. href = "home";
134. }
135. } else {
136. href = "home";
137. }
138. $(this).changePage(href);
139. });
140.
141. jQuery("#SubmitDocument").click(function () {
142. jQuery().handleAddDocumentSubmitForm();
143. return false;
144. });
82
145.
146. }
147. /**
148. * Add content to page onLoad();
149. */
150. $(this).changePage();
151. $(this).initPage();
152.
153. })(window.jQuery);
Aceste funcții pot fi apelate din orice pagină datorită frameworkului jQuery.
De asemenea formularele sunt gestionate prin javascript, fiecare cerere de date ce
este realizată de utilizator fiind trimisă printr-un apel Ajax către un WEB METHOD C#.
83
5.6 Manual de instalare Instalarea aplicației IQuest Document Routing se face prin pasul de deployment
către o fermă SharePoint ce crează o nouă intrare în zona de „features” a consolei
centrale de administrare a fermei.
Figura 5.5 Panoul de activare al Document Routing
În momentul în care „feature-ul” SharePoint este activat, se crează o bibliotecă
pentru păstrarea documentelor și a metadatelor, iar URL-ul de acces al interfeței
aplicației poate fi accesat, acesta fiind disponibil pe oricare server din ferma unde a fost
instalată. Altfel spus, aplicația este gata de folosit.
Posibilități de dezvoltare
Aplicația este într-o continuă dezvoltare datorită faptului că din partea
administrației IQuest apar schimbări în cerințele privind metadatele ce se doresc a fi
stocate.
Datorită modului abstractizat și programatic în care a fost construită aplicația,
adăugarea de noi funcționalități se poate realiza cu ușurință prin adăugarea unei noi
pagini în dosarul Layouts și a unui url din cadrul aplicației de forma :
<a href=”#numePagină” class=”navigator”> Pagină </a> . Datorită selectorilor
jQuery, acest tip de URL va aduce în pagina șablon conținutul paginii aspx cu numele dat
84
în eticheta href. Dat fiind faptul că generarea listei în care vor fi stocate datele se
realizează dintr-un fișier de configurare XML, acesta poate fi ușor modificat, câmpuri noi
pot fi adăugate în aplicație sau cele vechi pot fi modificate. În cazul acesta este necesară
modificarea a doar trei fișiere C# și anume cel în care sunt definite constantele
IQuestDocumentConstants, zona de Model IQuestDocument și cel de repository
IQuestDocumentRepository.
În cazul în care se va decide că acest feature nu va mai fi modificat programatic
sau din fișierele de configurare se pot executa modificări asupra listei generate și din
interfața SharePoint, dar nu este recomandat.
După cum se poate observa din modul în care aplicația profită de toate avantajele
oferite de platforma SharePoint 2010 și anume stocare, vizualizare, editare de documente
și metadate, recunoaștere de coduri de bare prin ABBYY FineReader și posibilitatea de a
lega o bibliotecă de documente de o adresă de email, putem concluziona că această
soluție poate fi cea potrivită pentru rezolvarea problemei propusă în această lucrare, fără
a fi necesară „reinventarea roții”, folosindu-ne de aplicații existente și de modele de
dezvoltare ideale ce ne permit scrierea de cod puțin, structurat și lizibil.
85
Bibliografie
1. [3]Ted Pattison, Andrew Connell, Scot Hillier and David Mann. Inside
SharePoint 2010. Paperback, 2011.
2. [7]]Bart McDonough, Dave Milner and Paul Stork. Pro SharePoint 2010
Development for Office 365. Apress, 2012.
3. [8]Ruven Gotz. Practical SharePoint 2010 Information Architecture. Apress,
2012.
4. [9]Phil Duffy. Pro SharePoint with jQuery. Apress, 2012.
5. [10]Wictor Wilen. SharePoint 2010 Web Parts in Action. Manning Publications,
2011.
Referințe web
1. [1] Globalizare http://ro.wikipedia.org/wiki/Globalizare
2. [2] Articol: Ce ascunde noțiunea de managementul documentelor
http://www.dmsone.ro/Professional-articles/Ce-ascunde-no-iunea-de-managementul-
documentelor
3. [4] Cerințe hardware/software SharePoint 2010 : http://technet.microsoft.com/en-
us/library/cc262485(v=office.14).aspx
4. [5] Gen Code 128 http://www.codeproject.com/Articles/14409/GenCode128-A-
Code128-Barcode-Generator
5. [6]ABBYY FineReader www.abbyy.com
6. [11]Site-ul oficial Microsoft Office: http://office.microsoft.com
Recommended