Framework overview

Platforma ONE Framework este dezvoltată intern, și folosește tehnologii Java EE (Java Platform, Enterprise Edition) cu sistemul de modularitate OSGi. Diagrama următoare descrie componentele minimale ale soluției, interdependența acestora, granițele hardware ale sistemului și modul de intercomunicare a acestora.

Soluția este una robustă, modernă și complet parametrizabila, care include elemente de best-practices din domeniu. Aceasta este construită având la bază o arhitectura modulară, deschisa și va include toate componentele necesare funcționarii conform specificațiilor CS. Pentru modularitatea aplicației este folosită o implementare a standardului OSGi si anume Apache Karaf, un container modern performant, flexibil și extensibil.

Platformele folosite pentru implementare sunt .NET și Java ediția Enterprise, mai exact JDK 8. Astfel se oferă compatibilitate cu majoritatea sistemelor de operare existente și poate rula pe sistemele de operare: Windows, Linux și orice distribuție majoră de Linux (RedHat Enterprise Linux, Debian, CentOS, Fedora, Ubuntu), FreeBSD 9.x, 8.x AIX 5.x, 6.x, 7.x (architectura Power), Solaris 8, 9, 10, HP-UX, SGI Irix, MacOS X.

Soluția poate fi configurată cu conectori ce oferă suport pentru bazele de date MySQL (MariaDB), Microsoft SQL Server, Oracle, PostgreSQL. De asemenea exporta o interfață de programare (API) care permite extinderea acesteia cu noi module. Platforma nu necesita oprirea sau perturbarea mediului de lucru atunci când se modifica modulele existente, toate operațiunile de modificare a serviciilor exportate de module fiind efectuate automat.

Soluția ofertată este compusă din următoarele sisteme modulare:

●     Sistem backend

●     Sistem securitate

●     Sistem execuție fluxuri

●     Sistem de stocare

●     Sistem GUI Web

●     Sistem raportare

●     Sistem REST

Diagrama generală

Sistem backend

Sistemul backend (sau middleware) este componenta principală a sistemului. Acesta realizează următoarele funcționalități:

  • Gestionarea modulelor care compun aplicația. Exemple de modulele: management documente, financiar, contabil, resurse umane, clienți, achiztii, cheltuieli. Se vor putea efectua operațiuni de Căutare, Adăugare, Modificare, Ștergere. Toate datele prezente în aceste module pot fi introduse prin formulare definite, și pot fi extrase pentru raportare.
  • Gestionarea datelor comune a modulelor: cataloage, nomenclatoare, etc. Se vor putea efectua operațiuni de Căutare, Adăugare, Modificare, Ștergere. Toate datele prezente în aceste module pot fi introduse prin formulare definite, și pot fi extrase pentru raportare.
  • Gestionarea utilizatorilor și a drepturilor acestora – pentru varianta de sistem de securitate intern.
  • Gestionarea unităților organizaționale (categorii) și maparea acestora la utilizatori.
  • Gestionarea interfețelor de utilizator;
  • Gestionarea și accesarea rapoartelor;
  • Gestionarea și accesarea formularelor;

Sistem securitate

Se vor instala sisteme antivirus și va fi activat firewal-ul pe serverul de aplicație. Confidențialitatea și securitatea datelor este asigurata si de securitatea platformei, folosirea de canale criptate, necesitatea ca utilizatorii sa se autentifice pentru a putea vizualiza date și rolurile de acces bine definite. Astfel, securitatea platformei ONE ERP are în vedere bunele practici de securitate în domeniu:

  • Economy of mechanism - design cat mai simplu pentru o testare și validare ușoară
  • Fail-safe defaults - implicit, accesul va fi interzis, regulile se vor face pentru permisiuni de acces și nu pentru permisiuni de blocare
  • Complete mediation - orice acces va fi verificat complet, și nu se vor citi sau lua decizii pe baza unor date memorate anterior sau din cache
  • Open design - securitatea nu se va baza pe păstrarea secretă a mecanismelor (security through obscurity). Codul sursa permite ca mecanismele sa poată fi analizate pentru creșterea securității
  • Separation of privilege - pentru o robustețe ridicată a securității, un sistem nu ar trebui să permită accesul bazat doar pe o singura condiție, astfel se pot implementa mecanisme de autentificare în doi pași
  • Least privilege - fiecare utilizator, program sau serviciu operează cu setul de privilegii minim necesar pentru sarcina data
  • Defense în depth protecția se face pe mai multe niveluri de protecție (în adâncime)


Sistemul de securitate inclus realizează funcțiile de autentificare și autorizare.

  • autentificare: identificarea utilizatorului și maparea acestuia la un ROL.
  • autorizare: utilizatorul odată identificat are sau nu dreptul sa realizeze o anumită acțiune.


Administratorul poate defini drepturi pentru fiecare categorie de utilizatori, direct din interfața aplicației.

Utilizatorii vor avea acces la sistem doar după ce se vor autentifica pe baza unui nume de utilizator și parola. În funcție de categoria în care este încadrat un utilizator acesta va putea accesa doar datele, formularele și rapoartele disponibile acelei categorii.

Sistemul de securitate precum și modulele acestuia sunt concepute cu un model avansat de securitate și control (se poate ajunge la o granularitate de nivel de câmp) care permite stocarea în siguranță a datelor și asigura ca datele vor fi vizualizate doar de persoanele care au acest drept, și unele informații pot fi ascunse dacă acest lucru este dorit.

Utilizatorilor li se poate asigna un rol, iar accesul acestora la date va fi restricționat atât de drepturile individuale cât și de drepturile rolului. Aplicarea drepturilor se realizează în felul următor: restricționările au prioritate maximă la nivel de utilizator apoi la nivel de rol. Exemplu: dacă utilizatorul popescu are restricționată editarea documentelor nu poate edita documente chiar dacă rolul său îi permite acest lucru. Accesul la module poate fi astfel administrat într-un mod optim.

De asemenea sistemul de securitate implementează un set de adaptoare care îi permit sa fie conectat la o serie de baze de date de autorizare. Implicit sistemul vine cu doua adaptoare: intern – gestionarea se utilizatorilor se face intern și LDAP – gestionarea utilizatorilor este internalizată într-un director LDAP (ex.: Active Directory, OpenLDAP, Apache DS etc).

Din punct de vedere al protocoalelor de comunicație platforma folosește protocolul TCP/IP la pentru comunicarea client/server. Acesta asigura integritatea comunicațiilor la nivel de baza iar peste acest protocol se va folosi HTTPS pentru comunicarea în siguranță cu clienții. Certificatele folosite pentru HTTPS vor fi semnate de Let’s Encrypt.

Sistem fluxuri și execuție fluxuri

Este un sistem generalizat care permite proiectarea, configurarea și executarea oricărui flux de lucru. Un flux de lucru are în componență un set de acțiuni și modul de interconectare al acestora. Astfel se va permite modelarea în format electronic a pașilor prin care trece informația (înregistrare sau document), de-a lungul vieții acesteia.

Un flux poate rula pe o perioada îndelungată de timp (zile, luni, ani) de aceea este necesar un sistem specializat pentru gestionarea execuției fluxurilor.

Sistemul gestionează fluxurile pe toata durata de existenta a acestora și:

  • Oferă informații cu privire la starea lor de execuție;
  • Permite pornirea, oprirea, reluarea și resetarea fluxurilor;

Pentru fiecare pas prin care trece un flux se vor putea configura:

  • Alocarea (cui îi va fi alocată informația în acel pas)
  • Permisiuni (cine va putea vizualiza/ modifica informația în acel pas)
  • Notificări (cine va fi notificat despre existența informației în acel pas)
  • Pre și post condiții (ce condiții trebuie să îndeplinească informația pentru a ajunge în acel pas și ce condiții trebuie să îndeplinească pentru a trece în alt pas al fluxului)
  • Deadline (intervalul de timp maxim acceptat ca informația să rămână în acel pas)
  • Permisiuni efectuare tranziție (cine are dreptul să mute informația în alt pas)
  • Trigger automat tranziție (care este evenimentul care poate să mute automat informația în alt pas)


Sistem de stocare

Sistemul de stocare reprezintă o abstractizare a modului de acces la fișiere, în acest fel se poate schimba cu ușurința între stocarea clasică (pe hard-diskul serverului sau al unității de storage) și cea distribuită (exemplu: Apache Hadoop FS) sau direct în baza de date.

Sistemul de stocare la actualizarea fișierelor păstrează istoricul acestora prin adăugare de versiuni noi cu păstrarea celor vechi și permite prin API-ul său extragerea tuturor versiunilor anterioare.

Sistem GUI Web

Interfața utilizator a ONE Framework este organizată ca interfață principal-detaliu (master-detail).

În proiectarea interfeței cu utilizatorul computerului, o interfață principal-detaliu afișează o listă principală și detaliile pentru elementul selectat în prezent. Motivația inițială pentru detaliile principale a fost că un astfel de tabel de vizualizare pe vechiul tabel de 80 de caractere din anii 1980- Afișajele largi ar putea afișa confortabil doar aproximativ patru coloane pe ecran deodată, în timp ce o entitate de date tipică va avea aproximativ douăzeci de câmpuri. Soluția este că detaliul arată toate cele douăzeci de câmpuri, iar masterul arată doar cele trei până la cinci recunoscute în mod obișnuit care se potrivesc pe ecran într-un rând fără derulare.

O zonă principală poate fi un formular, o listă sau un arbore de articole, iar o zonă de detaliu poate fi un formular, o listă sau un arbore de articole plasate de obicei fie sub, fie lângă zona principală. Selectarea unei elementul din lista principală face ca detaliile acelui articol să fie populate în zona de detalii.

De aici încolo vom numi interfața principală cea de vizualizare (search view) și interfața de detalii vizualizarea de editare.

ONE ERP nu aderă perfect la interfața master-detaliu. Vizualizarea de căutare afișează datele într-un tabel cu funcții pentru adăugarea, editarea, ștergerea și filtrarea (căutarea) datelor. Vizualizarea de căutare afișează un subset de proprietăți ale unei entități și proprietăți străine ale altor entități înrudite pe baza unei interogări FETCH. În timp ce operațiunile de adăugare și editare sunt pornite din vizualizarea de căutare, acestea sunt de fapt efectuate folosind vizualizarea de editare. Vizualizarea de editare afișează toate proprietățile entității, permițând utilizatorului să le editeze și să le vizualizeze.

Astfel, sistemul GUI este o componenta care înglobează, într-o interfață web (GUI), toate funcționalitățile sistemului.

Utilizatori vor folosi aceasta componenta ca sa își desfășoare activitățile curente, să vizualizeze rapoarte sau sa își analizeze rezultatele (indicatorii de performanta).

Acest sistem are o interfață ușor de utilizat, intuitivă, atât pentru utilizatorii normali cât și pentru utilizatorii cu rol de administrator. În fapt, se va folosi aceeași interfață pentru ambele tipuri de utilizatori, interfață fiind dinamica putându-se adapta la drepturile fiecărui utilizator (spre exemplu utilizatorii cu drept de administrare vor putea vedea și accesa secțiuni ale aplicației care nu sunt disponibile utilizatorilor normali).

Se vor folosi elemente grafice ușor de înțeles si reperat când se lucrează cu aceasta interfață. Se folosesc sisteme AJAX pentru comunicarea cu serverul si afișarea datelor, având la bază biblioteca GWT, care oferă o experiență similara indiferent de platforma si/sau browserul folosit.

Pentru lucrul cu date se folosesc elemente standard de interfață web (liste web, checkbox-uri, input box-uri) pentru a compune interfața web a aplicației. Toate modulele au la bază același stil vizual, așezare în pagină (depinde și de datele prezentate) și stil de lucru, în acest fel construind interfața grafică consistentă.

Din punct de vedere al clienților de tip browser, soluția este compatibila si afișează informațiile similar pe toate browserele web moderne, inclusiv cele mobile (Google Chrome, Internet Explorer, Mozilla Firefox, Opera). Acest lucru este posibil deoarece se generează fișiere HTML ce corespund standardului XHTML 1.1. Codul HTML generat va fi valid conform W3C (World Wide Web Consortium). Stilurile folosite pentru formatarea elementelor de pe pagina sunt de asemenea conforme CSS 3.0 (compatibilitate înapoi CSS 2.0 pentru browserele vechi).

Prezentăm mai jos câteva din elementele principale de lucru cu interfață, folosite la o aplicație de test.

Conectarea la aplicație

Se face cu ajutorul unui browser de web (Google Chrome, Mozilla Firefox, Internet Explorer).

Se introduce adresa server-ului pe care a fost instalată aplicația și se apasă butonul Enter.

Se completează datele necesare conexiunii: numele utilizatorului și parola. Utilizatorii sunt introduși de către administratori în secțiunea SYSTEM a aplicației, sau sunt preluați dintr-un serviciu extern de autentificare.

Introducerea datelor

Introducerea datelor în sistem se realizează prin completarea unor câmpuri. Fiecare introducere de date este însoțită de o etapa de validare a acestora. Dacă informațiile introduse nu îndeplinesc criteriile de validare, datele nu sunt salvate. Operațiunile eșuate sunt însoțite de mesaje de informare aferente.

Legenda:

  1. Zona selecție pagini
  2. Câmpurile de date
  3. Câmp aferent introducerii datelor calendaristice
  4. Câmp aferent documentelor
  5. Câmp de selecție a datelor
  6. Buton de anulare
  7. Buton de salvare

Căutarea datelor

Fiecare aplicație/listă de vizualizare date are încorporată o secțiune de căutare, care este situată în partea stângă a paginii, sub denumirea aplicației respective. Căutările se realizează în funcție de criteriile de căutare alese de utilizator. Dacă nu sunt alese criteriile de căutare sunt luate în considerare toate datele introduse în aplicația respectivă. Datele rezultate în urma căutării sunt afișate pe coloane.

Legenda:

  1. Secțiunea de căutare
  2. Filtre de căutare
  3. Buton de căutare
  4. Secțiune de afișare a datelor rezultate în urma căutării


Exemple controale folosite pentru manipularea datelor în cadrul interfeței web

Control de tip text care poate fi folosit atât pentru introducerea de text cat si pentru introducerea de numere. La definirea controlului se specifica tipul acestuia iar pentru fiecare tip se vor efectua operațiuni de validare diferite la salvare. Spre exemplu conținutul unui control de tip Număr nu va putea fi validat dacă acesta nu este un număr.

Control de tip checkbox, pentru introducerea de date booleene (Da/Nu)


Control pentru introducerea unei date


Control pentru introducerea unei date și a unei ore si minut (datetime):



Aplicația permite de asemenea catalogarea unor câmpuri în nomenclatoare pentru a face mai ușor găsirea datelor ce trebuie completate. Spre exemplu, pentru câmpul Marca autovehicul se poate defini un catalog, se pot defini mărcile fie inițial, fie când se va introduce fiecare acumulator, iar dacă o marca a fost deja introdusă în catalog, aceasta se poate selecta dintr-o lista ușor accesibilă, în doua moduri, în funcție de dimensiunea listei fie ca lista normala, fie ca lista de tip autocomplete, unde în funcție de textul introdus se vor filtra și arată doar rezultatele relevante.

Exemplu lista normala:

Exemplu lista autocomplete:

Toate controalele pot fi introduse si în dialoguri care permit accesul rapid la datele din catalog/nomenclatoare (datele se pot adăuga/edita în place, fără a fi nevoie navigarea la secțiunea corespunzătoare). Spre exemplu dacă este nevoie de crearea unui task, dar nu ne aflăm în secțiunea de task-uri, acest lucru se poate face direct din interfața aplicației curente, nu trebuie sa intrăm în secțiunea de task-uri.

Nota: Informațiile afișate și paletele de culori folosite în imaginile expuse nu sunt finale, sunt configurabile și evidențiază posibilitățile de personalizare ale aplicației.

Sistem imprimare

Imprimantele care au conectivitate LAN sau cele conectate direct la dispozitivele utilizatorilor și sunt configurate corect vor putea fi folosite pentru scoaterea pe suport fizic a rapoartelor sau graficelor prezente afișate în aplicație. De asemenea se poate folosi și comanda print pentru imprimare locală, direct pe imprimanta conectata la sistemul utilizatorului.

Sistem REST

Soluția expune un API accesibil prin servicii web REST pentru a permite integrarea cu alte sisteme externe. Aceste servicii vor fi prezentate în documentație urmând ca beneficiarul sa le poată folosi cum crede de cuviință. Accesul la serviciile REST se vor face pe baza de nume de utilizator/parola.

Serviciul REST permite realizarea operațiunilor CRUD (Create, Retrieve, Update, Delete) pentru date cat si a operațiunilor de interogare a acestor date. Documentația completa pentru acest serviciu va fi livrata odată cu documentația aplicației.

Performanță

Soluția este rapidă și prelucrează datele optim, astfel încât operațiile care pot fi rulate în background (fundal) nu vor îngreuna interfața cu utilizatorul.

Datorită serverului web rapid și al sistemului de gestiune de baze de date, soluția poate susține mii de conexiuni simultane, cererile venite pe aceste conexiuni având timp de răspuns de la câteva zeci de milisecunde pana la câteva secunde, în funcție de tipul cererii, spre exemplu un raport complex poate dura și 5-10 secunde, pe când o pagina simpla cu puține date poate fi servită în câteva milisecunde).

De asemenea numărul conexiunilor poate crește odată cu schimbările hardware. Din punct de vedere al arhitecturii software, soluția nu este limitata la un număr de conexiuni sau utilizatori.

Aplicația web în sine care va genera răspunsul cererilor împreună cu platforma sunt scrise având două concepte la baza: securitate și viteza. Scripturile sunt împărțite pentru a face lucruri cat mai puține și cât mai repede (compartimentalizare). În cele mai multe locuri unde s-a putut am introdus o arhitectura de tip non-blocking I/O (operații asincrone care nu blochează sistemul). Astfel timpul de execuție va fi mic iar concurenta mare. Query-urile pentru extragerea datelor din baza de date sunt atent formate și optimizate având în vedere coloanele index și folosirea acestora acolo unde este cazul. Fișierele statice precum imaginile sau conținutul de tip CSS vor fi servite utilizatorului din cache, nefiind necesara citirea acestora din dispozitivul de stocare fiecare data când se face o cerere de acest gen.

Spre finalul perioadei de implementare se vor efectua testele de acceptanta și performanță a întregului sistem. Astfel, dacă va fi nevoie, vom opera modificări asupra sistemului software pentru a corecta defecte, pentru a extinde setul de funcționalități oferite de acesta, pentru a implementa optimizări de natură să îmbunătățească performanța sistemului și calitatea serviciilor oferite utilizatorilor.

Configuration management

SaltStack, combinat cu ONE Framework automatizeaza procesul de confguration management. SaltStack este unic in ceea ce privește oferirea automatizării conduse de evenimente, pentru configurarea scalabila și eficiența și controlul computațional, al stocării și complexității rețelei. SaltStack este specializat in abordarea infrastructurii omniprezente, aflată in evoluție permanenta, dar și in abordarea mediilor software, inclusiv in ceea ce privește suportul pentru cloud, virtualizare, OS, container, sistem sau dispozitiv conectat. Acesta reprezintă un ajutor oferit constructorilor de cloud, operatorilor de centre de date și companiilor IT, ca sa-și automatizeze cele mai dificile și complexe sarcini de management de cloud, cu rapiditatea și fexibilitatea cerute de cele mai avansate medii computationale existente.