licenta sharepoint 2010

85
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ă

Upload: miki-brv

Post on 01-Dec-2015

135 views

Category:

Documents


2 download

DESCRIPTION

Licenta SharePoint 2010by Miklos CSere

TRANSCRIPT

Page 1: Licenta SharePoint 2010

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ă

Page 2: Licenta SharePoint 2010

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ă

Page 3: Licenta SharePoint 2010

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

Page 4: Licenta SharePoint 2010

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

Page 5: Licenta SharePoint 2010

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]

Page 6: Licenta SharePoint 2010

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.

Page 7: Licenta SharePoint 2010

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 )

Page 8: Licenta SharePoint 2010

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

Page 9: Licenta SharePoint 2010

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ță.

Page 10: Licenta SharePoint 2010

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.

Page 11: Licenta SharePoint 2010

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.

Page 12: Licenta SharePoint 2010

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.

Page 13: Licenta SharePoint 2010

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

Page 14: Licenta SharePoint 2010

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

Page 15: Licenta SharePoint 2010

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

Page 16: Licenta SharePoint 2010

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

Page 17: Licenta SharePoint 2010

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.

Page 18: Licenta SharePoint 2010

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.

Page 19: Licenta SharePoint 2010

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.

Page 20: Licenta SharePoint 2010

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:

Page 21: Licenta SharePoint 2010

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ă

Page 22: Licenta SharePoint 2010

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)

Page 23: Licenta SharePoint 2010

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.

Page 24: Licenta SharePoint 2010

24

Figura 2.5.3 Exemplu fermă SharePoint (http://office.microsoft.com)

Page 25: Licenta SharePoint 2010

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" -

Page 26: Licenta SharePoint 2010

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!'

Page 27: Licenta SharePoint 2010

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!'

Page 28: Licenta SharePoint 2010

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

Page 29: Licenta SharePoint 2010

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”.

Page 30: Licenta SharePoint 2010

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

Page 31: Licenta SharePoint 2010

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

Page 32: Licenta SharePoint 2010

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.

Page 33: Licenta SharePoint 2010

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.

Page 34: Licenta SharePoint 2010

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

Page 35: Licenta SharePoint 2010

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.

Page 36: Licenta SharePoint 2010

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.

Page 37: Licenta SharePoint 2010

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

Page 38: Licenta SharePoint 2010

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:

Page 39: Licenta SharePoint 2010

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:

Page 40: Licenta SharePoint 2010

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>

Page 41: Licenta SharePoint 2010

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.

Page 42: Licenta SharePoint 2010

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

Page 43: Licenta SharePoint 2010

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.

Page 44: Licenta SharePoint 2010

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

Page 45: Licenta SharePoint 2010

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.

Page 46: Licenta SharePoint 2010

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

Page 47: Licenta SharePoint 2010

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

Page 48: Licenta SharePoint 2010

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,

Page 49: Licenta SharePoint 2010

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

Page 50: Licenta SharePoint 2010

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.

Page 51: Licenta SharePoint 2010

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).

Page 52: Licenta SharePoint 2010

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

Page 53: Licenta SharePoint 2010

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].

Page 54: Licenta SharePoint 2010

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

Page 55: Licenta SharePoint 2010

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.

Page 56: Licenta SharePoint 2010

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.

Page 57: Licenta SharePoint 2010

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)

Page 58: Licenta SharePoint 2010

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.

Page 59: Licenta SharePoint 2010

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

Page 60: Licenta SharePoint 2010

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

Page 61: Licenta SharePoint 2010

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.

Page 62: Licenta SharePoint 2010

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.

Page 63: Licenta SharePoint 2010

63

Diagrama de activitate este reprezentată mai jos:

Page 64: Licenta SharePoint 2010

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

Page 65: Licenta SharePoint 2010

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.

Page 66: Licenta SharePoint 2010

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.

Page 67: Licenta SharePoint 2010

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

Page 68: Licenta SharePoint 2010

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

Page 69: Licenta SharePoint 2010

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]

Page 70: Licenta SharePoint 2010

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

Page 71: Licenta SharePoint 2010

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

Page 72: Licenta SharePoint 2010

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

Page 73: Licenta SharePoint 2010

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. }

Page 74: Licenta SharePoint 2010

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

Page 75: Licenta SharePoint 2010

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();

Page 76: Licenta SharePoint 2010

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.

Page 77: Licenta SharePoint 2010

77

Figura 5.5.3 Fișierele componente

nivelui de prezentare

Page 78: Licenta SharePoint 2010

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',

Page 79: Licenta SharePoint 2010

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) {

Page 80: Licenta SharePoint 2010

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. }

Page 81: Licenta SharePoint 2010

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. });

Page 82: Licenta SharePoint 2010

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#.

Page 83: Licenta SharePoint 2010

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

Page 84: Licenta SharePoint 2010

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.

Page 85: Licenta SharePoint 2010

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