În primul episod al acestei serii scriam despre versiunile de SharePoint care suportă personalizarea formularelor de introducere a datelor în SharePoint. În acest articol voi prezenta câteva detalii despre modul de stocare a datelor în SharePoint și modul în care luăm decizia pentru o formă de implementare sau alta.
Puțină teorie
Fiecare proces economic poate fi abstractizat: date de intrare + prelucrări + date de ieșire. În cadrul companiilor majoritatea proceselor economice sunt standardizate, fapt care permite automatizarea acestora prin utilizarea aplicațiilor financiar-contabile și nu numai.
De exemplu, la nivel simplificat procesul economic de vânzare poate fi: primim comanda de la client, livram marfa cu factura sau aviz, încasăm banii. Asta înseamnă că o aplicație trebuie să permită introducerea de date într-un formular de comandă, maparea cu o altă aplicație sau modul sau tabelă de stocuri, completarea câmpurilor de pe un formular de factură, scăderea automată a stocului, înregistrarea creanței, stingerea creanței. Pentru aceste tipuri de procese există foarte multe soluții pe piață, de la aplicații stand-alone la aplicații ERP de tip client-server sau web-based. În funcție de furnizor sau de modulele comandate, scopul aplicațiilor ERP este de a automatiza fiecare proces economic din cadrul companiei, inclusiv pentru modulele de Marketing, HR, Clienți etc. Fiind produse foarte scumpe, multe companii preferă să cumpere module esențiale sau doar module fără personalizări ale produsului pentru adaptarea la specificul proceselor de business locale.
În urma acestor decizii, apar o serie de procese economice și funcționale care nu sunt automatizate și care se derulează în modul clasic pe documente de hârtie (paper based) sau documente Office atașate în e-mailuri. SharePoint-ul și alte produse de document management oferă funcționalități avansate pentru gestionarea documentelor electronice, sau pentru documentele paper based scanate și încărcate electronic în aceste sisteme, cu scopul partajării, aprobării sau arhivării.
Dintr-un document Office sau PDF nu pot fi extrase informații sau date pentru realizarea rapoartelor de sinteză, de aceea, scopul prezentului articol este de a identifica metode și a propune forme electronice de înregistrare a datelor cu scopul de a obține rapoarte.
Specificul stocării datelor: liste vs formulare
Pentru a se putea instala un SharePoint are nevoie de o bază de date. Chiar dacă sunt multe articole care descriu modul de lucru al SharePoint-ului cu alte tipuri de baze de date, rămâne preferată de majoritatea implementatorilor utilizarea SQL Server cu diferitele sale variante. Trebuie să menționăm că în versiunea SharePoint 2016 nu va mai fi disponibilă versiunea de SharePoint Foundation (ediție gratuită), iar instalarea SharePoint Server pe mediile de producție folosind SQL Server Express nu este recomandată. Toate tipurile de documente (Office și PDF) sunt stocate in format hexazecimal direct în câmpuri ale bazei de date în tabela DocStreams. În Office 365 modul și locul de stocare a fișierelor este transparent față de administratori și utilizatorii finali.
Date din liste sunt stocate în mod netransparent în SharePoint dar pot fi folosite ca surse de date pentru alte liste și librării. Crearea unei liste presupune crearea structurii tabelare asemănător tabelelor din bazele de date prin definirea numelui, tipului de câmp și eventualele formatări, restricții și validări.

În cadrul unei liste se pot înregistra doar structuri de date normalizate, interconectarea entităților sau dinamica unor înregistrări constând în utilizarea mai multor liste. Etapa de adăugare a unei înregistrări într-o listă presupune scrierea unei singure linii, nefiind posibilă adăugarea simultană de înregistrări în mai multe liste. Folosind tehnica fluxurilor de lucru, o înregistrare creată într-o listă poate declanșa crearea unor înregistrări automate în alte liste. Pe lângă problema înregistrării dinamice a datelor, în cazul proceselor complexe listele pot avea un număr mare de coloane (maximum 276). Normal că în momentul în care se stabilește un număr de coloane atât de mare este greu de crezut că cineva se va apuca să le creeze manual. De aceea, în urmă cu ceva timp am încercat să dezvolt un script de creare a coloanelor unei liste bazându-mă pe descrierea CAML a unei liste. Puteți descărca și utiliza for free produsul CAML Creator de pe Technet. Pentru detalii de utilizare și execuție folosiți referința de pe Youtube.
Exemplu de formular pentru o cerere de avans pentru deplasare sau decontare în funcție de necesități:

Fiecare din câmpurile din dreapta este o coloană separată în lista asimilată de SharePoint. Modul de funcționare al acestui formular îl voi prezenta într-un episod următor.
În partea de deconturi un angajat trebuie să completeze o serie de documente justificative.

În derularea procesului efectiv nu avem de unde să știm câte facturi poate aduce un om dintr-o deplasare, de aceea cel mai corect din punct de vedere al afacerii este ca aceștia să poată introduce o linie nouă pentru fiecare document justificativ. Utilizând liste de date nu putem construi linii dinamice, așa cum spuneam anterior. Dar angajatul poate trece cu virgulă sau alt separator toate facturile dintr-o categorie în același câmp și valoarea cumulată a acestora pe coloana de valoare.
Bibliotecile de formulare stochează diferit informațiile, permițând dezvoltatorului crearea unor formulare cu un număr dinamic de înregistrări. În mare parte dezavantajul acestui format este că datele nu sunt normalizate și nu pot fi văzute în SharePoint asemănător unei liste, valorile de pe linii multiple beneficiind totuși de o serie de funcții de numărare, sumă sau se pot face operațiuni de cumulare (merge).
Chiar dacă pot fi completate prin browser sau prin InfoPath Filler, stocarea datelor introduse se realizează prin intermediul fișierelor XML, a căror structură depinde de fiecare tip de aplicație în parte.
Exemplu de formular InfoPath cu completare în Browser:

Tipul acesta de formulare suportă un număr variabil de linii, pe baza regulilor de publicare fișierul având nume în funcție de câmpurile selectate.
Stocarea în format XML (vezi imagine) poate provoca probleme de centralizare a datelor, fiind necesară crearea unor servicii Web dedicate extragerii datelor din fișiere multiple.

Personal, pentru centralizare prefer o metodă semiautomată: maparea schemei XML într-un fișier Excel și importul mai multor fișiere nenormalizate în Excel.
Alte aspecte
Listele precum și formularele InfoPath suportă atașarea de fișiere pentru justificarea anumitor acțiuni în cadrul unui proces. În liste fișierele atașate vor putea fi ulterior descărcate în format Windows Explorer, în formulare, fișierele fiind reprezentate în format binar în conținutul fișierului XML final. Personal nu recomand utilizarea excesivă a fișierelor atașate pe liste sau formulare pentru că apare avantajul lipsei de acces direct la fișier. Ele pot fi indexate și regăsite ulterior prin funcțiile de search.
Semnarea electronică am explicat-o în articolul cu Fișa de lichidare. Listele nu suportă semnare electronică. Formularele permit inclusiv în browser semnarea electronică. Trebuie doar să amintesc faptul că în momentul modificării unui formular care conține semnături electronice se invalidează toate semnăturile deja aplicate pe documentele din Biblioteca de formulare.
Sursele de date pentru forlularele personalizate trebuie să aibă o dimensiune cât mai redusă cu putință. În momentul în care o sursă de date conține un număr semnificativ de înregistrări (100+), procesul de conversie al formularului în pagină web va consuma o perioadă însemnată de timp pentru a putea reprezenta toate opțiunile posibile din drop-down-urile dintr-un formular renderizat.
Cam atât pentru moment. Voi reveni într-un episod următor cu elemente de business logics, fluxurile de aprobare și un exemplu concret de formular pentru avansuri și deconturi.
O zi bună!