Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Implementacija master-detail veze kod web aplikacije - problem

[es] :: Java :: Implementacija master-detail veze kod web aplikacije - problem

[ Pregleda: 1804 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dragon.mi

Član broj: 146873
Poruke: 25
*.home.otenet.gr.



Profil

icon Implementacija master-detail veze kod web aplikacije - problem09.09.2008. u 17:34 - pre 190 meseci
Imam jedno pitanje, a vezano je za master-detail vezu kod web aplikacije napisane u Javi (JSF(Richfaces) - Hibernate):

Imam prikaz dokumenata na jednoj strani uz razne kriterijume za pronalazenje dokumenata. Kada zelim da editujem neki dokument otvaram novu stranu i tu mogu da menjam podatke o dokumentu i njegovim stavkama. Stavke dokumenta menjam i dodajem pomocu modalnog prozora u okviru strane za editovanje dokumenta i tu nema problema. Na strani za editovanje dokumenta imam opcije i za dodavanje novog dokumenta i pronalazenja nekog drugog dokumenta po kriterijumu koji ga jednoznacno odredjuje i kasnije njegovog editovanja tako da ne mora da se prelazi na pocetnu stranu gde se nalazi pregled dokumenata.

Sve podatke koji se odnose na dokument i njegove stavke smestam u promenjivu koja ime opseg sesije i sve to funkcionise dobro dok nisam sebi postavio sledece pitanje:
Sta se dogadja kada korisnik otvori novi tab ili prozor u okviru iste sesije i opet ode na stranu za editovanje dokumenta, a onda se posle odredjenog vremena vrati na pocetni tab(prozor) gde su editovani podaci o drugom, pocetnom dokumentu i npr. krene da menja stavku ili neke podatke o dokumentu. Ocigledno je da podaci koje vidi na ekranu nisu uskladjeni sa stanjem sesije korisnika i tu mogu da nastupe problemi!

Interesuje me kakva su Vasa iskustva sa ovim problemom i kako ga Vi resavate? Ako nista, kako da ogranicim korisnika da ne sme da otvara nove tabove i nove prozore ili bar da registrujem da to radi i da ga nateram da sve radi u okviru jednog prozora? Imajte u vidu da koristim JSF kao view layer u svojoj aplikaciji.
 
Odgovor na temu

dragon.mi

Član broj: 146873
Poruke: 25
*.home.otenet.gr.



Profil

icon Re: Implementacija master-detail veze kod web aplikacije - problem10.09.2008. u 17:29 - pre 190 meseci
Evo da postaknem raspravu o ovoj temi, koga zanima moze da pogleda ovaj link koji se time bavi:

http://www.nabble.com/JSF:-Mul...--Same-session-td19094409.html
 
Odgovor na temu

mgifos
Nikola Petkov
Software engineer, InSite
Novi Sad

Član broj: 190574
Poruke: 15
*.ADSL.neobee.net.

Sajt: www.insite.rs


Profil

icon Re: Implementacija master-detail veze kod web aplikacije - problem11.09.2008. u 23:19 - pre 190 meseci
Cao,

Nisam bas siguran da sam u potpunosti shvatio problem, ali mi jako lici na concurrency control problem koji mozda i ne treba na prvom mestu resavati na View strani. Hocu da kazem da mi lici kao da nije reseno lock-ovanje dokumenta, jer ako jedan korisnik edituje dokument i desi se da sam sa sobom ima problem, zasto onda i neki drugi korisnik koji recimo krene malo nakon da edituje isti dokument (obojica drze dokument u edit modu), ne bi imao problem sa prvim korisnikom.

Ako je u pitanju slicna situacija, resavao sam je standardno primenom metode optimistickog lokovanja tj. ko pre devojci :) - ko prvi sacuva dokument - njegove promene ce biti sacuvane, a drugi korisnik mora biti obavesten o tome da je prvi izmenio u medjuvremenu nesto u vezi sa dokumentom (da li onog momenta kad ucini akciju "Save" ili ce neki observer istog momenta da ga obavesti, to je stvar implementacije, ali mora biti obavesten).

Znaci jos jednom kazem, nisam siguran da sam 100% shvatio o cemu se radi, pa mi se ucinilo da je problem u ovome i ako je tako predlazem:

http://en.wikipedia.org/wiki/Optimistic_concurrency_control

Standardno se koristi neki row id u tabeli iz baze (dodatna kolona koja oznacava verziju sloga). Row id moze biti timestamp ili bilo kakav version number gde ces uporedjivati verziju sloga svaki put kad se nesto promeni prilikom korisnikove akcije (znaci kad uzmes slog i posle kad zelis a ga update-ujes). Hibernate ima integrisanu podrsku za ovakve situacije:

http://www.hibernate.org/hib_d...ence/en/html/transactions.html (potpoglavlje 11.3.)


Ovo resenje je backend orijentisano, ukoliko nisam dobro shvatio i ako je problem striktno vezan za frontend - necu ti moci pomoci, jer sam tanak sa JSF-om (vise JSP, Tapestry, Struts, GWT) :(

Ali mi lici da to moze pomoci :)








 
Odgovor na temu

dragon.mi

Član broj: 146873
Poruke: 25
*.home.otenet.gr.



Profil

icon Re: Implementacija master-detail veze kod web aplikacije - problem12.09.2008. u 17:09 - pre 190 meseci
Jasno mi je na sta mislis, ali problem koji sam izlozio je striktno vezan za frontend i mozda samo na JSF (tj. moj nacin njegovog koriscenja koji sam pronasao u vise guide-ova i koji dosta ubrzava razvoj aplikacija, ali koji cu ipak morati malo da modifikujem). Ne znam kakva je situacija sa ostalim framework-ovima. U svakom slucaju hvala.

 
Odgovor na temu

dragon.mi

Član broj: 146873
Poruke: 25
212.200.239.*



Profil

icon Re: Implementacija master-detail veze kod web aplikacije - problem17.09.2008. u 11:16 - pre 190 meseci
Kao dopunu prethodnog naveo bih i konkretan slucaj (da pokusam da budem malo jasniji):

Na strani za editovanje dokumenta kada je dokument u rezimu PROMENE imam i dugme Dodaj novi dokument ... ,a koje NIJE VIDLJIVO kada je dokument u rezimu DODAVANJA (jednostavno sam koristio atribut rendered).

Prilikom testiranja otvaram tabove i u okviru svakog od njih je prikazana strana za editovanje(dodavanje) dokumenta i u aktivnom tabu sam u rezimu DODAVANJA i kada predjem na prethodno otvoreni tab gde je dokument u rezimu PROMENE i kliknem na dugme "Promeni" uopste se ne izvrsava action metoda tog dugmeta (verovatno zato sto JSF na osnovu stanja component tree-a zakljucuje da ovo dugme i nije dostupno i ne uradi nista)! Isti rezultat je kada podesim da dugme Dodaj novi dokument ... bude disable-ovano ako je dokument vec u rezimu DODAVANJA.

Ocigledan je problem sto sve cuvam u okviru sesije, i to sam mogao da ublazim malo koriscenjem <h:inputHidden/> komponente ali strana za editovanje dokumenta ima i stavke i jos logike tipa sta se desava sa stavkama kada se promeni vrsta dokumenta itd. pa nimalo nije jednostavno drzati sve pod kontrolom pod pretpostavkom da korisnik moze istovremeno otvoriti vise tabova(prozora) u okviru iste sesije. Pritom dosta koristim i Ajax koji bi izgubio svrhu ako bi prilikom svakog klika na dugme morao da brinem o milion stvari i da predvidim da je u nekim slucajevima moguce da se promeni i sadrzaj cele strane.

Problem resava koriscenje JBoss Seam-a koji ima conversation scope ali morao bih sve iz pocetka da radim, a pritom bih voleo da ovaj problem resim.

Razmisljam da probam da koristim request scope sto je moguce vise i da vidim kako ce se ponasati aplikacija.

Takodje, posto bi ovo bila intranet aplikacija koju bi koristio mali broj korisnika (ali i jako medju sobom udaljenih kod kojih ne bih mogao da dodjem i npr. rucno podesim browser) dovoljno bi bilo da imam neki "ogoljeni" Firefox Mozilla Browser kao neki klijentski deo (u njemu ubedljivo najbrze radi aplikacija) i koji ne bi imao nista drugo do deo za prikaz sadrzaja (i bez mogucnosti da korisnik KASNIJE ukljuci menu bar, navigation bar, toolbar, ...).



 
Odgovor na temu

dragon.mi

Član broj: 146873
Poruke: 25
212.200.239.*



Profil

icon Re: Implementacija master-detail veze kod web aplikacije - problem17.09.2008. u 12:17 - pre 190 meseci
Pronasao sam i ovaj link koji moze da bude interesantan u odredjivanju kada koristiti request scope, a kada session scope pa cu u skladu sa njim probati da redizajniram svoju aplikaciju:

http://forums.sun.com/thread.j...D=546252&messageID=2660279
 
Odgovor na temu

dragon.mi

Član broj: 146873
Poruke: 25
80.93.227.*



Profil

icon Re: Implementacija master-detail veze kod web aplikacije - problem17.09.2008. u 13:23 - pre 190 meseci
Medjutim, ono sto odmah mogu da vidim je da ne mogu da bean(ove) koji se odnose na master-detail vezu dokument-stavke smestim u request scope (posto otvaram novu stranu za editovanje u okviru koje vrsim dalja azuriranja i neki delovi te veze moraju da mi budu stalno na raspolaganju dok editujem odredjeni dokument) tako da problem ostaje kada otvorim vise tabova(prozora) u okviru sesije!
 
Odgovor na temu

dragon.mi

Član broj: 146873
Poruke: 25
*.jprb-kolubara.co.yu.



Profil

icon Re: Implementacija master-detail veze kod web aplikacije - problem18.09.2008. u 12:19 - pre 190 meseci
U potpunosti sam resio problem koji sam imao! Sada korisnik moze da otvara koliko hoce tabova i sve ce funkcionisati kako treba i to bez nekog dodatnog programiranja! Odusevljen sam kako sve dobro funkcionise.

Sada sam za prikaz dokumenta i njegovih stavki definisao promenjivu dokumentForm koja ima request scope ali sam na strani za editovanje dokumenta dodao i tag <a4j:keepAlive beanName="dokumentForm" ajaxOnly="false" />. dokumentForm promenjiva je sada vidljiva i izmedju dva request-a, ali nije raspoloziva drugim stranama u okviru iste sesije! Dakle ona ima slican karakter kao i session promenjiva - ima svoje stanje, ali ono nije dostupno svim stranama u okviru sesije vec samo odredjenoj strani tj. instanci(pojavljivanju) te strane sto resava sve moje probleme!


Koga zanima moze da pogleda link: http://jboss.com/index.html?mo...&op=viewtopic&t=104989
 
Odgovor na temu

[es] :: Java :: Implementacija master-detail veze kod web aplikacije - problem

[ Pregleda: 1804 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.