Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICEN
Aplicaie mobil pentru planificarea traseelor pentru livrarea
comenzilor unei firme
Coordonator:
Prof. univ. dr. Paul Pocatilu
Absolvent:
Mazilu Oana Teodora
- Bucureti, 2016 -
Cuprins
1.
Introducere................................................................................................................................3
2.
Descrierea problemei......................................................................................................6
2.2.
2.3.
2.4.
Diagrame UML.............................................................................................................13
3.
4.
Tehnologii utilizate........................................................................................................28
4.2.
Arhitectura aplicaiei....................................................................................................35
4.3.
5.
6.
Concluzii................................................................................................................................53
Bibliografie....................................................................................................................................54
Anexa Lista de abrevieri.............................................................................................................55
1. Introducere
Timpul este una dintre cele mai importante resurse de care dispunem si care trebuie
valorificate, att pentru binele nostru, ct i pentru binele societii. Lund n considerare faptul
c timpul este un bun rar, limitat i c acesta nu poate fi cumprat, stocat sau pus de o parte,
putem afirma c pentru o via mplinit i organizat, gestionarea eficient a timpului reprezint
un punct esenial.
O aplicaie informatic n domeniul gestionrii eficiente a timpului i a resurselor alocate
presupune integrarea tehnologiilor web n scopul informatizrii si optimizrii proceselor ce stau
la baza activitii unei firme ce distribuie ap plat, determinnd reducerea costurilor,
planificarea optim a resurselor i accesul rapid la informaii.
ntruct n zilele noastre traficul este o alt problem major prezent n societate, acesta
fiind din ce n ce mai aglomerat, iar timpul petrecut n trafic crete considerabil, n cazul firmelor
ce se ocup de curierat apare problema gestionrii cu atenie a timpului alocat fiecrei livrri,
scopul acestora fiind acela de a livra cu succes ct mai multe comenzi ntr-un timp ct mai scurt.
Apare astfel necesitatea de a gestiona planificarea optim a traseelor efectuate de un ofer,
sarcin ce nu poate fi pus in responsabilitatea unei singure persoane i duce la dezvoltatea unui
software specializat.
Datorit evoluiei rapide a tehnologiei, telefoanele smart i dispozitivele mobile sunt
omniprezente, astfel o aplicaie mobila faciliteaz accesul la date, fiind uor de utilizat in orice
circumstan. Studiile arat c la nivel mondial mai mult de un miliard din telefoanele mobile
sunt smartphone-uri, iar utilizatorii de internet de pe mobil sunt din ce in ce mai mul i. Se poate
explica, astfel, necesitatea i valoarea aplicaiilor mobile pentru bussiness. Un alt avantaj al unei
aplicaii mobile este faptul c aceasta premite o localizare precis, lucru foarte util in acest
context.
Aplicaiile concepute pentru a gestiona planificarea de rute i trasee n cazul firmelor ce
ditribuie diferite produse au rolul de a eficientiza munca angajailor i interaciunea cu clientul,
oferindu-le acestora o gam larg de funcionaliti. Printre acestea se numr introducerea cu
uurin a clienilor n sistem, datele acestora fiind pstrate ntr-o baz de date, prezentarea
3
2.1.
Descrierea problemei
2.2.
Efectund o analiz asupra pieei, se pot remarca trei companii mari ce se ocup cu
livrarea de ap plat la domiciliu: BeviAqua, Aquatulip i Doraqua. Acestea sunt companii de
servicii n domeniul aprovizionrii cu ap plat pentru firme sau uz casnic, totodat oferind i
produse suplimentare pentru protocolul companiilor. Fiecare dintre cele trei companii ofer
clienilor posibilitatea de a vizualiza o gam variat de produse i de a comanda online cantitatea
de ap dorit, mbuteliat n diferite recipiente. Firmele dispun de un site web, unde clien ii pot
face comanda fr s fie obligai sa aib un contract semnat cu firma. Fie c este vorba de o
persoan fizic sau juridic, aceasta poate comanda ap ncepnd de la cantiti mici, pn la
cantiti industriale. Companiile menionate livreaz apa direct la domiciliu, ncasnd banii la
efecutarea livrrii sau prin intermediul cardului. Acestea ofer clientului posibilitatea de a
comanda ap online, cu ajutorul unui formular de comand disponibil pe site, unde clientul i
completeaz datele personale, adresa, cantitatea de ap pe care dorete sa o achiziioneze i
recipientele n care aceasta va fi mbuteliat conform standardelor de calitate. Cele trei firme
ofer utilizatorului o interfa prietenoas, punndu-i n eviden ofertele i promoiile de care
dispun printr-o strategie bun de marketing.
Aadar, la o prim cercetare asupra firmelor ce activeaz n acest domeniu, se poate
observa cu uurin calitatea superioar a produselor, faptul c acestea sunt menite s satisfac
cerinele consumatorilor, ns plasarea unei comenzi nu este efectuat prin cea mai practic
metod, ntruct aceasta este realizat prin intermediul unui site web. Fiind in secolul vitezei,
oamenii tind ctre alegerea celei mai simple soluii atunci cnd vine vorba de orice, n special
cnd au de ales ntre numeroase opiuni. Astfel, o aplicaie mobil uureaz considerabil procesul
7
de plasare al unei comenzi, chiar dac este vorba despre ap plat. Majoritatea companiilor ce se
ocup cu vnzarea de produse sau prestarea de servicii, fie acestea din domeniul culinar,
vestimentar, cri, cosmetice, etc., le ofer utilizatorilor aplicaii mobile menite sa faciliteze
accesul la informaii i efectuarea unei comenzi. Inclusiv n activitatea de taximetrie, s-a dovedit
faptul c unei persoane i este mult mai uor sa comande un taxi de pe o aplica ie mobil, dect
prin intermediul apelului telefonic. n acelai timp, aplicaia reprezint un beneficiu i pentru cei
care presteaz serviciul, acetia gestionnd mai uor numeroasele comenzi primite, interac iunea
client furnizor devenind mult mai accesibil i mai organizat.
Putem afirma, astfel, c datorit faptului c smartphone-ul a devenit rapid unul dintre cele
mai iubite gadget-uri ale generaiei actuale, o aplicaie mobil este benefic oricrei companii,
aceasta reuind chiar s creasc numrul de clieni ai firmei i n acela i timp profitul. Oamenii
sunt ntr-o continu micare, smartphone-ul fiind cel mai rapid i accesibil mod de a afla
informaiile de care au nevoie.
Pe de alt parte, aplicaia dezolvat nu este destinat doar clienilor, ci i personalului
firmei. Pe lng utilitatea pe care aceasta o ofer utilizatorului n procesul de vizualizare, alegere
i comandare a produselor, are, de asemenea, o deosebit funcionalitate pentru persoanele care
se ocup de livrarea comenzilor. n acest sens, se poate remarca asemnarea dintre aceast parte
a aplicaiei i o firm de curierat, ambele bazndu-se pe gestionarea eficient a comenzilor i
ctigarea respectului clientului prin promptitudine i punctualitate. Dup cum am menionat, o
problem frecvent n acest domeniu o reprezint lipsa de profesionalism, ce poate fi chiar o
cauz a soft-ului pe care firma l folosete pentru efectuarea livrrilor i care poate produce
ntrzieri n acest proces. Chiar dac accept sau nu acest lucru, oamenii i formeaz o impresie
nc de la nceput despre persoanele cu care interacioneaz, produsele pe care le achiziioneaz
sau serviciile pe care le ateapt. Dac acestea sunt satisfctoare nc din prima clip, atunci vor
tinde, n mod subcontient, s mai apeleze nc o dat la acelai lucru atunci cnd vor avea
nevoie. Pe de alt parte, dac prima lor impresie este dezagreabil, cu siguran nu vor face
aceeai greeal de dou ori. n ceea ce privete firmele de curierat existente de pia n
momentul actual, firme cu care aplicaia dezvoltat poate fi comparat prin prisma faptului c
printre funcionalitile acesteia se numr i livrarea de comenzi, se fac remarcate Fan Curier,
Sprint Curier, Global Curier Express, Cargus, etc. Dei activitatea unei firme de curierat nu este
8
aceei cu activitatea de a livra la domiciu produse specifice unui domeniu concret (n acest caz
livrarea de ap plat), putem afirma c scopul este acelai : satisfacerea clientului prin livrarea
unei comenzi n stare perfect i n timp util. Cu siguran capacitatea unui curier/ ofer de a tii
cum s comunice cu clientul, de a fi un bun conductor auto i de a reu i s interac ioneze n
mod plcut cu oamenii din jur reprezint un bonus pentru firmele care dispun de asemenea
persoane, ns n acelai timp i sistemele informatice utilizate n aceast activitate au un rol
extrem de important.
n ultima vreme piaa serviciilor de curierat este pe o linie ascendent, nregistrndu-se o
cretere semnificativ a numrului de furnizori de astfel de servicii. Din pcate, odat cu aceast
dezvoltare s-au fcut remarcai i clienii nemulumii, majoritatea din cauza ntrzierilor n
livrarea coletelor, ce pot varia ntre cteva ore i cteva zile. Acest lucru este o problem i
pentru firme, acestea devenind contiente de dificultile pe care le ntmpin i n majoritatea
cazurilor dnd vina pe programul informatic cu care lucreaz i incapacitatea acestuia de a
planifica traseele pentru curieri i a organiza ordinea n care comenzile sunt livrate. Astfel, att
clientul ct i furnizorul pierd bani i timp preios.
Evoluia vieii sociale se bazeaz din ce n ce mai mult pe calitatea dobndit din diferite
procese, n orice domeniu al dezvoltrii economice i sociale. n cazul firmelor din domeniul
dezbtut, aceasta const n primul rnd n calitatea comercial a unui produs i capacitatea unui
serviciu de a satisface cerinele consumatorilor. Necesitatea unui software specializat pe
planificarea traseelor i gestionarea drumului parcurs de un ofer se remarc att la nivelul
firmelor ce livreaz produse, ct i n firmele de taximetrie. Putem spune, astfel, c aplica ia
dezvoltat poate fi comparat i cu acest domeniu, ntruct oferii de taxi folosesc diferite
produse informatice pentru calculul rutei ce trebuie parcurs pn la destinaie, al timpului alocat
unei curse, etc. La ora actual n acest domeniu exist deja aplica ii mobile prin intermediul
crora un client poate comanda un taxi, poate vizualiza timpul n care acesta va sosi, i poate
transmite diferite mesaje oferului, obinndu-se astfel o interaciune sporit ntre cele doua pr i
implicate. Exemple de astfel de aplicaii sunt Speed Taxi, Meridian Taxi, Clever Taxi, etc., care,
asemntor aplicaiei prezentate n lucrare, menin o relaie strns pe parcursul schimbului de
servicii ntre furnizor i beneficiar. S-a dovedit c odat cu apariia acestor aplica ii procesul de a
comanda un taxi a devenit mult mai facil att pentru client, care nu mai are obliga ia de a efectua
9
un apel telefonic i a atepta rspuns, ct i pentru companie, care gestioneaz comenzile primite
mult mai eficient.
Concluzia tras n urma analizrii problemelor ce apar la nivelul firmelor ce se ocup cu
livrarea de produse este aceea c pe msura creterii i dezvoltrii pieei, preten iile
consumatorilor se mresc i gradul de satisfacere a acestora este esen ial pentru o firm ce vrea
s se menin pe pia. Principalii factori care duc la creterea productivitii sunt capacitatea
personalului de a-i face datoria n mod corespunztor, dar i produsele software pe care acesta le
are la dispoziie.
2.3.
n urma analizei efectuate, problemele ce apar din cauza utilizrii unui software
necorespunztor pot fi rezolvate prin soluia prezentat n aceast lucrare, solu ie ce i propune
oferirea unui avantaj la nivelul firmelor existente deja pe pia prin mbunt irea prii
operaionale i adugarea de servicii noi. Spre deosebire de produsele software deja utilizate de
oferii companiilor, produse ce nu au capacitatea de a le optimiza i eficientiza munca, prezenta
aplicaie aduce inovaia prin simplul fapt c acesta este destinat dispozitivelor mobile cu sistem
de operare Android, fiind uor de folosit n orice context. Astfel, oferii firmei vor avea
posibilitatea de a urma traseul de livrare generat de aplicaie n timp real, nemaiavnd nevoie de
GPS sau de indicaii despre drum. Totodat, acestora le este permis expedierea instantanee de
notificri, confirmri sau alte evenimente ce pot aprea n legtura cu statusul unei comenzi. n
acest fel este meninut continuu interaciunea dintre client i furnizor, posibilele nelmuriri sau
nemulumiri putnd fi rezolvate pe loc.
Un management eficient pentru firmele ce se ocup de comer online i livrare la
domiciliu presupune att planificarea ntr-un mod optim a rutelor de distribuie ce va cre te
productivitatea companiei, ct i satisfacerea clienilor, care caracterizeaz o astfel de companie
prin respectarea intervalelor orare stabilite i primirea coletelor nedeteriorate. Exista o perioad
n care furnizorii de mrfuri i cei care se ocupau cu transportul acestora erau nevoii sa apeleze
10
12
2.4.
Diagrame UML
13
n urma analizei aciunilor pe care le pot ntreprinde cele dou pri implicate n utilizarea
aplicaiei, se pot identifica urmtoarele cazuri de utilizare:
15
16
Una dintre cele mai importante diagrame n cadrul analizei i proiectrii este diagrama
de clase, avnd rolul de a structura natura static a claselor.
Din diagrama de clase (Fig. 2.3) se poate observa c:
Efectund o analiz aspura aciunilor ntreprinse de actorii din lumea real (client i
ofer) ce utilizeaz aplicaia, se observ faptul c aciunile descrise n diagrama de clase respect
cu exactitate comportamentul acestora.
17
Pentru a face o analiz a modului n care obiectele comunic ntre ele i a eviden ia astfel
interaciunea dintre ele se va folosi diagrama de secven, ce conine obiectele i mesajele
schimbate ntre acestea. ns, pentru ca acestea s poat fi determinate, se va descrie cazul de
utilizare pentru a vedea ce obiecte sunt necesare n implementarea soluiei. Diagrama de secven
are rolul se a uura ntelegerea ordinii n care se desfoar evenimentele.
Pe parcursul dezvoltrii aplicaiei s-a utilizat o diagram de secven (Fig. 2.4) pentru a
evidenia paii parcuri de un ofer n procesul de livrare a unei comenzi. n mod normal acesta
se autentific n aplicaie folosindu-i credenialele personale, urmnd ca sistemul s valideze
datele introduse. Dac datele au fost corecte oferul recep ioneaz confirmarea de logare i
primete acces la comenzile ce i sunt repartizate. Acesta solicit calcularea traseului i l
urmeaz, astfel ncepnd livrarea. De asemenea, ii poate trimite clientului o notificare in ceea ce
18
priveste statusul comenzii. Cnd ajunge la destinaie genereaz un raport pdf ce conine detaliile
comenzii i semntura destinatarului.
19
20
eficient reprezint un aspect important pe parcursul dezvoltrii i utilizrii aplica iei. Pentru
eliminarea diverselor anomalii ce pot aprea n utilizarea unei baze de date i asigurarea
performanei acesteia se va recurge, n prim faza, la etapa de proiectare a bazei de date. Avnd
n vedere faptul c n utilizarea aplicaiei WaterFlow se folosesc date dintr-o baz existent,
dac acestea nu sunt stocate conform normelor pot aprea numeroase probleme n momentul
prelucrrilor efectuate de sistem. De exemplu duplicarea datelor sau pierderea de informa ii pot
duce la planificarea unei rute greite pentru ofer, fenomen ce va genera nemulumirea clienilor
i irosirea resurselor companiei.
n procesul de proiectare a bazei de date se va analiza scopul aplicaiei i modul n care
aceasta va fi utilizat. Astfel, n aceast etap se vor identifica actorii participani i ac iunile
ntreprinse de acetia, rezultnd tabelele i cmpurile coloanelor din baza de date.
Folosindu-se de diagramele UML i datele obinute n urma efecturii etapei de analiz a
sistemului informatic, proiectarea bazei de date se va realiza prin proiectarea componentei
conceptuale, logice i fizice.
Proiectarea conceptual reprezint crearea unui model al datelor ce vor fi folosite n
aplicaie n aa fel n ct acesta s nu depind de resursele fizice ale sistemului. Aceasta are mai
multe etape: se vor identifica entitile i relaiile dintre acestea i se vor determina atributele,
cmpurile, cheile, etc.
Identificarea entitilor
Efectund o analiz asupra activitilor ce definesc aplicaia se poate remarca faptul c
principalele instane utilizate sunt reprezentate de ofer, client, comanda ce asigur interac iunea
ntre cei doi i adresa destinatarului, ntotmindu-se astfel traseul pentru ofer. n asa fel se vor
identifica entitile din baza de date, afiate in Fig. 3.2.
21
n baza de date vor exista i entiti ale cror instane nu depind de existena altor
instane, acestea numindu-se entiti independente. n Fig. 3.2 acestea sunt reprezentate cu
culoarea verde, n timp ce entitile dependente sunt galbene.
22
23
nu
conin
restricii
de
integritate,
tabelele
ADRESA_CLIENT
SECTOR_SOFER sunt tabele independente. Schema logic aferent aplicaiei este ilustrat n
Fig. 3.4.
24
aplicaia. n acest fel, aplicaia i propune definirea unei interfee uor de nteles att pentru
utilizatorii ce dispun de cunotine tehnice, ct i pentru cei care nu au o pregtire profesional n
acest domeniu. Ea folosete imagini sugestive i un vocabular adecvat, modul de utilizare al
acesteia fiind uor de intuit.
n procesul de proiectare a interfeelor, n afar de cunoaterea aciunilor pe care la va
ntreprinde aplicaia este necesar ca proiectantul s tie foarte bine contextul n care va fi utilizat
25
26
27
Tehnologii utilizate
28
o Android Studio
IDE-urile folosite la ora actual pe pia pentru dezvoltarea de aplicaii Android sunt
numeroase, ns dintre acestea de fac remarcate Android Studio i Eclipse IDE.
Pentru aplicaia WaterFlow am ales utilizarea IDE-ului Android Studio, ntruct acesta
dispune de mai multe faciliti pentru performana sistemului, code refactoring i instalarea
mediului n care se va lucra, fiind IDE-ul oficial pentru crearea de aplicaii mobile. Un alt avantaj
al acestuia este c poate rula pe mai multe sisteme de operare, existnd cte o versiune pentru
Windows, Mac, Linux, dezvoltarea de aplicaii mobile Android devenind astfel accesibil tuturor
programatorilor. Pentru ca Android Studio s poat fi utilizat este necesar instalarea n prealabil
pe sistemul de calcul a Java Development Kit (JDK).
29
o MySQL Workbench
30
31
n figura de mai sus, este inclus n proiect framework-ul Jersey, folosit pentru a dezvolta
servicii web n Java. Acesta conine mai multe componente, printre care Core Server (utilizat
pentru a crea servicii Rest folosind adnotri), Core Client, suport JAXB i JSON.
Datele obinute prin servicii Rest sunt folosite n continuare n Android pentru
dezvoltarea funcionalitilor aplicaiei, accesul la acestea obinndu-se prin apelul serviciilor
Rest create n Java. Apelul unui serviciu este efectuat printr-un URI (Uniform Resource
Identifier), care este un string de caractere folosit pentru a identifica o resurs. Forma cea mai
comuna a unui URI este un URL (Uniform Resource Locator), asemntor Fig. 4.3.
Clientul i server web comunic ntre ei prin mesaje. Clien ii fac o cerere de
identificare a resurselor ctre server, acesta o proceseaz i i trimite napoi un rspuns.
32
Odat ce resursa a fost identificat, aceasta poate fi evideniat n sistem sub forma unor
formate. Cele mai utilizate formate sunt XML i JSON, primul dintre ele fiind folosit pentru
reprezentarea unor resurse mai complexe. n cazul de fa am recurs la JSON (JavaScript Object
Notation) pentru manipularea datelor din aplicaie, acesta fiind o alternativ mai uoar de folosit
dect XML. Formatul JSON este identic din punct de vedere sintactic cu codul utilizat pentru
crearea obiectelor JavaScript.
REST i solicit fiecrei resurse sa aib cel puin un URI, a crui sarcin este s identifice
resursa sau colecia de resurse. n exemplul din Fig. 4.3 resursa este reprezentat de comand, iar
parametrul sector=6 are rolul de a aplica o constrngere interogrii ce ruleaz n spatele
serviciului, i anume de a afia toate comenzile a cror adres se afl n sectorul ase. Astfel, n
funcie de sectorul n care este alocat oferul ce utilizeaz aplicaia, acestuia i vor fi repartizate
comenzile de care se va ocupa n ziua respectiv.
Serviciile REST utilizate n aplicaie vor rula cu ajutorului server-ului Apache Tomcat, un
server web ce implementeaz mai multe specificaii Java EE (Enterprise Edition) printre care
WebSocket, Java Servlet, JavaServer Pages, etc. Tomcat este adesea utilizat n dezvoltarea
aplicaiilor web Java.
33
enumer Google Maps Distance Matrix API, Google Maps Geocoding API i Google Maps
Directions API.
API-ul Distance Matrix este utilizat pentru estimarea timpului i a distanei folosite
pentru evidena activitii unui ofer. Acestea sunt calculate n funcie de ruta care trebuie
parcurs. Api-ul permite, de asemenea, specificarea modului de transport pentru care se dore te
calcularea indicatorilor: se poate alege modul de transport n comun, cu autoturismul sau
pietonal.
API-ul Directions este folosit pentru a gsi cea mai bun rut necesar oferului n
drumul ce trebuie parcurs pentru a livra fiecare comand. Calcularei rutei este efectuat pe baza
punctelor de destinaie ce reprezint adresele clienilor. Folosind acest Api, rutele se pot calcula
din punct de vedere al ofatului, plimbatului sau mersului cu bicicleta. Pentru calcularea acestora
este necesar efectuarea unui request http ctre server i ateptarea rspunsului, ce va avea un
format JSON din care vor fi extrase datele necesare. Url-ul request-ului este un string ce poate
conine mai muli parametri, printre care punctul de origine al plecrii, punctul de destina ie,
punctele intermediare, modul de mers, etc. La aplicaia WaterFlow este utilizat parametrul
optimize:true, ce optimizeaz traseul astfel nct oferul s ajung la fiecare adres o singur dat
i suprafaa parcurs s fie minim.
API-ul Geocoding se ocup cu convertirea adreselor (oras, strad, numr) n coordonate
geografice. Avnd n vedere faptul c n cazul aplicaiei WaterFlow adresele sunt reprezentate
n baza de date exact aa cum sunt introduse de ctre clieni, respectiv prin Ora, Strada,
Numr, este necesar transformarea acestora n coordonate geografice i astfel apare utilitatea
api-ului Geocoding.
Spring pentru Android
n Android, Spring este un framework ce ofer aplicaiilor mobile numeroase
funcionaliti. n cazul de fa acesta este folosit pentru consumarea serviciilor Rest ce
returneaz un JSON. Framework-ul ofer posibilitatea parsrii json-ului i maparea direct a
cmpurilor acestuia pe clasele corespunztoare existente n proiect. Spring furnizeaz o clas
template denumit RestTemplate ca are rolul de a mapa rspunsul json-ului pe un obiect Java,
34
fiind printre cele mai importante clase ale acestei biblioteci. Aceasta utilizeaz o bibliotec
specific Android HTTP client pentru request-urile http pe care le efectueaz. nglobeaz, de
asemenea, mai multe obiecte ce faciliteaz prelucrarea datelor obinute. [5]
Butter Knife
Butter Knife este o bibliotec ce poate fi folosit n Android pentru a instan ia mai u or
view-urile existente n aplicaie. Pentru a nu mai fi nevoit sa foloseasc ntotdeauna metoda
findViewById() specific acestei operaii, un utilizator poate recurge la utilizarea acestei
biblioteci. Prin intermediul adnotrilor aceasta uureaz considerabil munca unui programator
prin evitarea repetiiei de cod i economisirea de timp.
4.2.
Arhitectura aplicaiei
preluarea datelor comenzilor plasate de client i asigurarea corect a interaciunii dintre aplicaie
i utilizator. Totodat, sunt implementate metode ce descriu regulile afacerii i modul n care
trebuie sa reacioneze aplicaia n diferite situaii.
n ceea ce privete calculatorul server, el este reprezentat de sistemul de pe care a fost
dezvoltat aplicaia, ocupndu-se de gestionarea accesului la baza de date. Pe parcursul folosirii
aplicaiei, un utilizator are nevoie de anumite date, poate introduce n sistem informa ii proprii
sau poate modifica date deja existente, lucruri ce se afl n responsabilitatea pr ii server a
sistemului.
O imagine de ansamblu a noiunii de arhitectur client/server este evideniat n Fig. 4.4.
4.3.
Metoda prezentat returneaz un obiect de tip Statement ce va fi mai apoi utilizat pentru a
executa integorri pe baza de date. De fiecare dat cnd este necesar utilizarea datelor din baz
se cere n prealabil conexiunea la aceasta.
Acest modul al aplicaiei are scopul de a gestiona schimbul de date dintre aplicaie i
baza de date, lucru realizat prin intermediul serviciilor web de tip Rest. De exemplu, n cazul
prelurii tuturor comenzilor destinate unui ofer n funcie de sectorul de care acesta este
37
responsabil, serviciul web va face un apel ctre baza de date pentru obinerea acestora printr-o
metod de tip GET. Serviciul va fi apelat de ctre aplicaie dup logarea oferului, n momentul
n care acestuia i vor fi prezentate comenzile din ziua respectiv.
return ComandaDAO.getComenzi(rs);
} catch (SQLException se) {
se.printStackTrace();
} catch (NamingException ne) {
ne.printStackTrace();
}
return new ArrayList<Comanda>();
Dup cum se poate observa, serviciul returneaz o list de comenzi, fiecare comand
coninnd datele corespunztoare acesteia ce au fost preluate din baza de date printr-o interogare
SQL. Lista va fi returnat n format JSON, astfel nct atunci cnd clientul va apela serviciul va
putea parsa acest format pentru a beneficia de informaiile dorite. S-a ales utilizarea serviciilor
Rest pentru a asigura interaciunea aplicaiei cu baza de date ntruct acestea sporesc performana
sistemului i faciliteaz manipularea datelor.
Prin intermediul adnotrii @QueryParam serviciul prezentat folosete parametrul sector
pentru a aplica o restricie n procesul de selectare a comenzilor, i anume faptul c se vor
recupera doar comenzile aflate n acelai sector cu oferul. Se pot remarca, de asemenea,
adnotrile specifice framework-ului Jersey, ele oferind funcionalitate serviciului.
38
39
configurarea sistemului, stabilind versiunea de Sdk1 utilizat, pachetele din cadrul proiectelor i
bibliotecile ce pot fi incluse. Gradle este un sistem folosit n dezvoltarea proiectelor n Android
Studio, bazat pe Java Virtual Machine (JVM) ce permite scrierea propriului cod n Java i
utilizarea acestuia n Android Studio. Unul dintre punctele forte ale acestui sistem este faptul c
acesta permite adugarea de biblioteci surs ntr-un proiect deja existent. Astfel, dac un
utilizator dispune de o bibliotec ce ar putea s l ajute la implementarea anumitor func ionalit i
n Android, acesta o poate include n proiect prin intermediul fiierului build.gradle. Acesta
definete un proiect i funcionalitatea acestuia i totodat se ocup de compilarea codului surs.
Pentru dezvoltarea aplicaiei WaterFlow au fost incluse n proiect biblioteci precum
Butter Knife, iText, Rest Template, Http Components, Google Play Services, Jackson.
o Butter Knife i uureaz utilizatorului procesul de instaniere a view-urilor
existente n proiect bazndu-se pe utilizarea de adnotri. Un exemplu al folosirii
acestuia este:
@InjectView(R.id.input_email) EditText emailText;
n acest fel este instaniat un control de tip EditText utilizat de ctre client n
momentul logrii, pentru a-i introduce email-ul.
o iText este o bibliotec ce permite realizarea i manipularea fiierelor Pdf. Ea este
utilizat pentru generarea de rapoarte privind detaliile unei comenzi, astfel:
Document doc = new Document();
try {
String path =
Environment.getExternalStorageDirectory().getAbsolutePath() +
"/droidText";
File dir = new File(path);
if(!dir.exists())
dir.mkdirs();
File file = new File(dir, "raport.pdf");
FileOutputStream fOut = new FileOutputStream(file);
PdfWriter.getInstance(doc, fOut);
//open the document
doc.open();
1 Sdk (Software Development Kit): permite dezvoltatorilor crearea aplicaiilor pentru platforma
Android
40
41
utilizatorul interacioneaz cu aplicaia este implementat prin diverse metode din cadrul
aciunilor.
Aplicaia se deschide prin rularea unei activiti ce are rolul de a-i oferi oferului
opiunile prin care poate accesa modulul dorit: partea destinat oferului sau partea destinat
clientului. Astfel, n funcie de alegerea acestuia, asigurarea continuitii ntre activiti este
implementat prin utilizarea unui obiect de tip Intent, astfel:
Intent intent = new Intent(getApplicationContext(), ClientActivity.class);
startActivity(intent);
Controalele prin care este declanat aciunea de trecere la activitatea urmtoare sunt
reprezentate de dou imagini sugestive, una destinat oferului iar cealalt clientului. Pentru
modul ofer primul lucru care este prezentat este autentificarea utilizatorului. Un ofer nu
poate avea acces la aplicaie dect dup ce acesta s-a logat n contul su ce este stocat n baza de
date. Aadar acestuia i este prezentat un formular de autentificare ce i solicit completarea
email-ului i a parolei. Procesul de verificare a credenialelor introduse de utilizator i acordarea
accesului la aplicaie se realizeaz prin apelarea unui serviciu web creat n prealabil n partea de
server a aplicaiei. Acesta va prelua datele introduse i va verifica dac acestea exist n baza de
date, returnnd astfel true sau false. Dac rspunsul acestuia este pozitiv (true) oferul va putea
continua utilizarea aplicaiei, avnd acces la comenzile primite. n caz contrar acesta va primi un
mesaj prin care va fi noticat n privina posibilitii de a fi introdus gresit datele pentru conectare.
Implementarea acestei funcionaliti s-a realizat astfel:
public void invokeLoginWS(RequestParams params){
progressDialog.show();
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://192.168.1.5:8080/RestServicesLicenta/rest/user/check", params,
new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode,
org.apache.http.Header[] headers,
String response) {
progressDialog.hide();
try {
// JSON Object
JSONObject object = new JSONObject(response);
if (object.get("status") == true) {
sectorSofer = object.getInt("sector");
Toast.makeText(getApplicationContext(), "Succes login!",
Toast.LENGTH_LONG).show();
42
// il va trimite la harta
Intent intent = new Intent(getApplicationContext(),
MapsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
else {
Toast.makeText(getApplicationContext(), "Username sau parola
incorecte!", Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "Error Occured [Server's JSON
response might be invalid]!", Toast.LENGTH_LONG).show() }
43
}
}
String url = getMapsApiDirectionsUrl();
ReadTask downloadTask = new ReadTask();
downloadTask.execute(url);
LatLng currentLocation = new LatLng(location.getLatitude(),
location.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLocation, 19));
addMarkers();}
});
La rndul ei, aceast metod apeleaz alte funcii ce i ofer oferului instrumentul
necesar pentru desfurarea activitii. oferul va putea vizualiza distana i timpul estimat
pentru livrarea tuturor comenzilor. Acest lucru este efectuat prin metoda setKmNumber(), care
face o cerere http ctre serverul ce furnizeaz informaii specifice Google Maps. Url-ul prin care
este efectuat cererea conine ca parametri suplimentari punctul de plecare i punctul de sosire al
oferului. Drept punct de plecare este luat locaia curent, iar la sfritul activitii acesta se va
ntoarce la depozit, destiaia fiind astfel reprezentat de adresa depozitului. Server-ul va trimite
un rspuns ntr-un format JSON, din care vor fi extrase timpul i distana total.
Comenzile sunt preluate printr-un serviciu web asemntor celui prezentat, care va
primi ca parametru sectorul pe care este repartizat oferul. De data aceasta rspunsul oferit de
server va fi parsat cu ajutorul obiectului bibliotecii RestTemplate astfel:
final String url = "http://192.168.1.5:8080/RestServicesLicenta/rest/comanda/list?
sector=" + LoginCompanyActivity.sectorSofer;
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Comanda[] comanda = restTemplate.getForObject(url, Comanda[].class);
Se poate remarca utilizatea acestei biblioteci, care tie sa asocieze informa iile primite
din baza de date cu o clasa Java Comanda ce conine ca atribute aceleai atribute ca tabela
comanda din baza de date.
n acest fel adresele comenzilor recepionate vor deveni destinaiile oferilor, acestea
fiind transformate n coordonate geografice, pentru a fi prelucrate n continuare. Pentru aceast
operaie s-a utilizat un obiect LatLng ce stocheaz dou variabile, respectiv latitudinea i
longitudinea unui punct. Acestea vor fi utilizate pentru planificarea traseului, proces ce se
realizeaz tot prin iniierea unei cereri ctre serverul Google Maps. Acesta va conine punctul de
44
origine, destinaia, dar i punctele intermediare reprezentate de adresele clienilor. Ruta ob inut
va fi desenat pe hart cu ajutorul unui obiect PolyLineOptions ce este gestionat de o clas
separat ce se ocup cu parsarea obiectului Json. Urmnd indicaiile de pe hart un ofer va putea
ncepe livrarea comenzilor, acesta avnd posibiliatatea ca de fiecare dat cnd d click pe
butonul de ncepere a livrrii s beneficieze de replanificarea traseului, avnd ca punct de origine
locaia curent a oferului.
Meniul disponibil pentru ofer este unul particularizat, realizat prin folosirea unui
Adapter i crearea separat a unei clase necesare stocrii informaiilor despre un element din
meniu (clasa ItemSlideMenu). Acesta poate fi accesat din activitatea pe care se afl i harta, prin
micarea de tragere a ecranului ctre partea dreapt.
Din acest meniu oferul va avea posibilitatea de a alege opiunea de vizualizare a
comenzilor de care este responsabil n ziua respectiv. n momentul n care acesta selectez o
variant din meniu, se va declana automat o alt activitate corespunztoare acesteia. Astfel, la
atingerea butonului Comenzi utilizatorul va fi redirecionat ctre o alt pagin unde va putea
vedea o list cu comenzile primite. Pe fiecare rnd al acesteia se afl detalii privind adresa
clientului, cantitatea de ap comandat i o imagine corespunztoare comenzii. Aceste informa ii
sunt gestionate prin intermediul unei clase Java denumit ItemListRow, ce va permite
implementarea listei.
Pentru a obine informaii suplimentare despre o comand oferul o va selecta din list,
astfel deschizndu-se o alt activitate, denumit ComandaDetaliiActivity. Pe lng detaliile unei
comenzi, aceasta i ofer utilizatorului i posibilitatea de a genera un raport n format Pdf cu date
referitoare la livrare, raport ce va fi semnat de ctre client. Macheta realizat pentru crearea
ecranului acestei activiti este ilustrat n Fig. 4.6. Prin cele trei butoane prezente oferul va
putea recepiona semntura unui client, va putea genera documentul cu informa iile livrrii sau l
va putea vizualiza. Astfel, la declanrea evenimentului de onClick() asupra controlului Button ce
are scopul de a prelua semntura se va folosi o clas denumit Semnatura prezent n activitatea
despre detaliile comenzii. Prin intermediul acestei clase se va implementa un obiect de tip
Canvas ce i va oferi clientului posibilitatea de a se semna cu ajutorul degetului pe ecranul
dispozitivului, operaiune implementat prin suprascrierea metodelor onTouchEvent() i
onDraw().
45
46
Pentru a spori performana sistemului serviciile web utilizate au fost apelate prin
intermediul unor clase proprii ce extind clasa abstract AsyncTask. Aceasta permite folosirea n
mod eficient a firelor de execuie prin efectuarea n background a unor operaii i publicarea
rezultatelor pe firul principal de execuie. Un task asincron este definit n patru pai, i anume
metodele onPreExecute(), doInBackground(), onProgressUpdate() i onPostExecute(). n cazul
de fa partea ce ine de apelul unui serviciu web este implementat prin suprascrierea metodei
doInBackground() iar folosirea datelor oferite de acesta este realizat prin metoda
onPostExecute(). S-a ales utilizarea task-urilor asincrone deoarece astfel se va reduce timpul de
ateptare al utilizatorului, iar performanele aplicaiei vor crete.
n ceea ce privete clientul, dup selectarea modulului aferent acestuia din pagina de
deschidere a aplicaiei se va iniia o nou activitate. Prin intermediul imaginilor reprezentative i
a diferitelor controale oferite de Android Studio pentru decorarea interfeelor s-a creat un design
prietenos ce i prezint clientului produsele i ofertele firmei. n cazul n care utilizatorul dorete
achiziionarea unor produse va putea plasa comand, la apsarea butonului Plaseaz comanda.
n acest fel va fi redirecionat ctre pagina de logare, ntruct un utilizator va putea plasa o
comand numai dup ce se va autentifica n aplicaie. n cazul n care acesta nu are cont de
utilizator, i va putea crea unul prin intermediul opiunii de nregistrare disponibile n pagina de
login. Implementarea acestor procere se realizeaz tot prin intermediul serviciilor web Rest,
pentru partea de verificrii a email-ului i parolei introduse fiind utilizat un serviciu de tip GET
identic celui din modului pentru ofer i pentru partea de nregistrare un serviciu de tip POST ce
va stoca datele introduse se utilizator n baza de date.
Dupa efectuarea autentificrii un client va accesa un formular de plasare a comenzii
stilizat prin controale de tip EditText particularizate, ce au rolul de a permite utilizatorului
completarea datelor. Dup atingerea butonului de plasare a comenzii, datele identificare se vor
salva n baza de date prin apelarea unui serciu web de tip POST i vor putea fi gestionate n
modulul ofer.
47
48
49
Dup ce s-a conectat, oferul va vizualiza pe hart locaia n care se afl i meniul ce i
permite efectuarea mai multor aciuni. n acest fel va accesa comenzile ce i sunt alocate pentru
ziua respectiv i va ncepe livrarea acestora. Butonul ncepe Livrarea (Fig. 5.4) solicit
aplicaiei calcularea celui mai bun traseu, ce ulterior va fi desenat pe hart. Astfel, oferul va
putea ncepe livrarea comenzilor prin urmrirea indicaiilor de pe hart. Dup efectuarea unei
livrri acesta poate solicita replanificarea traseului, proces realizat prin intermediul aceluiai
buton. Att adresele clienilor, ct i destinaia final a oferului sunt reprezentate prin imagini
specifice, indicaiile de drum fiind astfel uor de urmat pentru orice utilizator.
50
51
Aadar, prin intermediul interfeelor folosite se poate remarca uurina cu care aplicaia
poate fi folosit de ctre orice tip de utilizator i utilitatea acesteia pe pia a companiilor ce se
ocup cu comercializarea i livrarea de produse.
52
6. Concluzii
Dezvoltarea aplicaiei mobile WaterFlow a presupus utilizarea noiunilor i
cunotinelor de programare obiect, de creare i gestionare a bazelor de date n limbajul SQL, ct
i de dezvoltare a aplicaiilor mobile ce ruleaz pe sistemul de operare Android. Att efectuarea
proceselor de analiz i proiectare a sistemui informatic ce constituie etape importante pe
parcursul realizrii aplicaiei, ct i implementarea produsului final au nsemnat aprofundarea i
nelegea detaliat a cunotinelor de programare necesare dezvoltrii unei aplicaii mobile i a
interaciunii acesteia cu o baz de date extern.
Realizarea aplicaiei a constituit un proces complex de integrare a mai multor concepte,
fiind gestionate probleme de natur tehnic n ceea ce privete programarea acesteia i aspecte ce
in de partea grafic aferent interfeelor utilizator. Funcionalitatea aplicaiei este dezvoltat n
aa fel nct s faciliteze interaciunea utilizatorului cu aplicaia i modul n care aceasta
rspunde cerinelor beneficiarilor.
Concretizarea funcionalitilor propuse pentru optimizarea procesului de comand i
livrare a produselor a condus la dezvoltarea unui instrument ce i propune a fi util principalilor
actori implicai: clienii i personalul firmei. Planificarea optim a traseelor disponibile pentru
oferi pe parcursul efecturii livrrilor i reducerea timpului alocat plasrii i recepionrii unei
comenzi reprezint beneficii majore oferite de prezenta aplicaie. Totodat, aceasta a permis
realizarea unui context rapid i eficient pentru accesul la date i informaii.
Orice versiune a unei aplicaii mobile permite mbuntiri, n cazul de fa acestea
reprezentnd o serie de funcionaliti suplimentare adugate entitilor participante. n cadrul
propunerilor de dezvoltare ulterioar se pot regsi: oferirea de informaii suplimentare destinate
oferilor, cum ar fi detalii despre starea efectiv a strzilor, pentru a le putea evita pe cele foarte
avariate sau aflate n lucrri de construcie. De asemenea, s-ar putea mbunti timpul de
rspuns al aplicaiei dup plasarea unei comenzi on the fly, prin oferirea unui modul ce va
permite calcularea instantanee a resurselor i timpului necesar livrrii acesteia i trimiterea ei
ctre oferul ce dispune de aceste resurse.
53
Bibliografie
[1]
[2]
%20arhitecturii%20s.pdf
Wikipedia, MySQL, https://ro.wikipedia.org/wiki/MySQL
[3]
[4]
[5]
Spring
for
Android,
RestTemplate
Module,
Disponibil:
http://docs.spring.io/autorepo/docs/spring-android/1.0.x/reference/html/rest[6]
template.html
P. Pocatilu, I. Ivan (2015), Programarea aplicaiilor Android, Bucureti: Editura
ASE
[7]
54
API
IDE
SDK
JDK
REST
HTTP
JAXB
JSON
URI
URL
XML
JVM
SQL
UML
ERD
55