Nastanak
Inicijativom Dražena Komarice, osnivača neprofitne nevladine organizacije "Sudačka mreža", koji je kontaktirao Branka Sinkovića, jednog od osnivača i vlasnika firme Items d.o.o, Zagreb, krenulo se u osmišljavanje i izradu aplikacije. U to, pionirsko doba, znali smo kako je potrebno objaviti presude na Internetu.
Razvoj je počeo na Microsoft tehnologiji: Windows NT 4.0, IIS 4.0, SQL Server 7.0, IE 4.0, ali smo ubrzo prešli na novije Windows 2000 Server, IIS 5.0, SQL Server 2000 i IE 5.0.
Specifikacija nije postojala, pa se često dešavalo da pojedine dijelove napravim ispočetka ili potpuno odbacim. U prostorije Items-a, dolazili su (u to doba studenti) Danijel Kardum, Saša Augustin i nekolicina drugih (čija imena nisam zapamtio, pa im se ispričavam), te smo raspravom na temu koje karakteristike (engl. feature) bi bile korisne, a koje tehnološki možemo napraviti, postepeno ugrađivali nove opcije. U nekoliko navrata, dolazili su suci s općinskih sudova u Belom Manastiru, Sisku, Glini, Vinkovcima, Vukovaru ... (birani su sudovi iz ratom pogođenih krajeva, u kojima je bilo najviše problema), koji su dali svoje primjedbe i ideje o strukturi projekta. Prvi dokumenti, koje smo koristili kao početne podatke, dobiveni su iz tih sudova. Najaktivniji sudac (koji nam je najviše pomogao objašnjavajući pravnu praksu) bio je Mihael Kovačić iz Siska.
U to, pionirsko vrijeme, Items je dobrim dijelom sufinancirao izradu aplikacije, jer su državne strukture, manirama slona u staklarskoj radnji, uglavnom podmetale klipove u kotače projekta.
Razvoj
Dugo se raspravljalo se o načinu unosa dokumenata u bazu. Loša opremljenost sudova računalima, slabe ili nepostojeće veze na Internet, slabo poznavanje rada na računalima samo su neki od problema koji su utjecali na odluku da se, u prvo vrijeme, prikupljaju dokumenti u Zagrebu, obrađuju i unose na lokalnoj mreži. Ipak, znalo se kako, eventualnim uvođenjem u rad aplikacije, takav način rada nije praktičan. Dugoročno, unos dokumenata treba raditi na mjestu njihovog nastanka. Tako je odbačena ideja o izradi posebnog programa za unos, a prevladalo je mišljenje o unosu preko Web-a.
Organizacijski, unos je jedno vrijeme rađen u prostorijama Itemsa. Radi bolje efikasnosti, Branko Sinković preuzeo je najveći dio komunikacije s Draženom (Komaricom) i ostalima iz Sudačke mreže na sebe, filtrirajući nabacivane ideje u izvodive segmente posla. S druge strane, često smo on i ja raspravljali o praktičnoj izvedbi.
Prelazak na XML
Postepeno su dodavane nove vrste dokumenata (uz presude, dodana su mišljenja). Svaka vrsta dokumenata bila je drugačije formatirana, ovisno o razini suda s kojeg dolazi (općinski, županijski, pa sve do Europskog suda za ljudska prava) i vremenskom razdoblju (imali smo nekoliko primjera presuda iz doba Kraljevine Jugoslavije !). Ubrzo sam zaključio kako je najfleksibilnije sadržaj dokumenta spremiti u XML formatu te definirati XSLT transformacije za prikaz. Takva struktura traži dodavanje nove XSLT transformacije za novu vrstu suda (npr. trgovački sud) ili dokumenta. Osim toga, dokument u XML formatu je relativno lako formatirati za različite tipove prikaza, a može se indeksirati i pretraživati po riječima (engl. full text search) upotrebom Index Service-a. Radi pretraživanja, potrebno je preraditi pohranjene postupke (ovaj prijevod našao sam u rječničkoj bazi prof. Goran Igaly-ja; engl. stored procedure) SQL Server-a tako da složeni upit rastave, tekstualni dio pošalju Index Service-u, a ostale uvjete potraže u tablicama baze podataka.
Prelazak na XML tehnologiju donio je i probleme: IE5.x omogućava upotrebu editora (engl. editable region) za unos, ali tekst (string) koji stigne slanjem (engl. POST) forme serveru je mješavina HTML oznaka (engl. HTML tag soup) koje nije jednostavno preraditi u XML. Počeo sam pisanjem regularnih izraza (engl. regular expressions), ali se to ubrzo pokazalo nepraktičnim. Broj regularnih izraza je ubrzano rastao, usporavajući cijeli proces, i stalno su se pojavljivali rubni slučajevi koji su tražili nove i nove regexp-e. Tražeći rješenje problema naišao sam na Dave Ragett-ov tidy program, pronašao izvorni kod na mreži i napravio DLL koji sam mogao pozvati na serveru (iz VBScripta). Rezultat je bio XML koji je trebalo "propustiti" kroz nekolicinu regexp-a kako bi dobio zamišljeni format.
Količina podataka
Nisam mogao ni približno procijeniti o kojem broju Gb podataka se radi u maksimalnom slučaju (kod unosa svih dokumenata ikad napravljenih na sudovima) i kojim tempom (broj Gb godišnje) nastaju novi dokumenti. Na bazi od cca 1000 dokumenata (koji se ne mogu smatrati pravim predstavnikom populacije), moglo se zaključiti kako većina dokumenata nije velika (do 10 Kb) i kako postoji nekoliko većih (do 100 Kb). Usmenom predajom saznao sam kako nema propisanog ograničenja na veličinu dokumenta. Razmišljajući o najfleksibilnijem rješenju, zaključio sam kako moram sadržaj dokumenata "izvaditi" iz tablica SQL Server-a, smjestiti ih kao datoteke na diskove i zamisliti situaciju s SQL Server-om i poljem datotečnih poslužitelja (engl. file server). U takvoj konfiguraciji, u tablicama SQL server-a pamti se pozicija datoteke u polju file server-a, ne i sam sadržaj. U tablici parametara popisao sam sve pozicije gdje se nalaze dokumenti i poziciju za nove dokumente, dodjeljujući svakoj poziciji jedinstvenu oznaku, tako da se uz svaki dokument pamti samo ta oznaka pozicije.
Verzije dokumenata
Unos putem mreže i nesavršenost ulaznih dokumenata ponekad traže prekid unosa dokumenta dok se ne saznaju detaljnije informacije. Također, pojedini dokument treba svrstati u odgovarajuće grane prava, dodijeliti mu institute (predefinirane ključne riječi) i napraviti niz predradnji prije nego što bude spreman za objavu. Taj dugački proces u praksi se često lomi na manje dijelove, koje mogu obavljati osobe različitog znanja, iskustva i tolerancije pogrešaka. Pokazuje se, kako je potrebno dozvoliti cijeli niz predradnji, nakon kojih slijedi verifikacija, prije objave dokumenta. Interno, mi smo govorili kako se dokumenti (za to vrijeme) nalaze u špajzi (smočnici).
Radi potpune transparentnosti, ugrađena je i opcija (može se isključiti parametrom) arhiviranja. To omogućava praćenje kompletne povijesti izmjena rađenih na dokumentu. Isključivanje opcije može biti nužno u slučaju manjka mjesta na diskovnom prostoru ili zbog brzine rada sustava. Diskovni prostor za arhivu organiziran je isto kao i diskovni prostor za dokumente (polje datotečnih poslužitelja).
Vremenska domena
Cijelo vrijeme razmišljao sam o vremenskoj domeni, odnosno o promjenama koje mogu nastati u praksi protjecanjem vremena. U tablicama baza podataka ugrađena su od/do polja, koja omogućavaju označavanje perioda u kojem je neki podatak (događaj) bio relevantan. Tako su zapisivani podaci o sucima i njihova "pripadnost" sudu (sudac može mijenjati sudove ili "otići na ispomoć" u drugi sud tijekom izrazito različitog opterećenja u radu sudova).
Predstavljanjem vremenske domene u UI svijetu (na stranicama za unos ili pretraživanje podataka) nisam bio zadovoljan. Ali taj problem je uvijek ostajao za neku slijedeću verziju.
Pravni propisi
Za što praktičniji rad, korisno je imati "pri ruci" pravne propise koji se spominju u dokumentu. Tijekom razvoja aplikacije, Narodne Novine, koje su držale tekstove zakona i propisa na svom serveru, počele su mijenjati politiku pristupa zakonima. Nakon nekoliko promjena uvjeta, dozvolili su pristup tekstovima zakona, ali bez pretraživanja (što je naknadno napravila nevladina udruga Gong). Zbog takvih igranja sa živcima korisinika (od strane NN), kao i zbog nepotpune građe (nedostajali su zakoni iz ranijeg razdoblja te međunarodni zakoni i propisi) i nepraktičnog prikaza, zaključeno je kako Sudačka mreža treba imati "ugrađene" sve članke svih zakona koji se spominju u dokumentima. Slično strukturi dokumenata, postavljena je struktura pravnih propisa na datotečnom sustavu. Ispod korjenskog (engl. root) direktorija, postavljaju se direktoriji zakona i propisa (po njihovim jedinstvenim oznakama, najčešće kraticama kao npr. KZ <=> Kazneni Zakon), unutar kojih je jedna datoteka za jedan članak zakona. Analizom pravnih propisa zaključeno je da se tekstovi (u bazi sudačke mreže) pravnih propisa sastoje iz tri dijela:
- Pozitivni pravni propis (pozitiv)
- Izmjene (izmjene)
- Izvorni tekst pravnog propisa (izvor)
pa je format XML datoteke u kojoj se čuva pravni propis:
<?xml version="1.0" encoding="windows-1250"?> <contents> <pozitiv></pozitiv> <izmjene></izmjene> <izvor></izvor> </contents>
Ovaj dio rađen je u jesen 2002. godine.
Korisnici i prava
Razlikujemo prava na sučelje i prava na sadržaj. Prava na sučelje definiramo kao prava koje grupa korisnika ima na pojedinom sučelju (www stranici). Prava na sadržaj zapravo finije razlažu što je korisniku dozvoljeno: nakon što mu je preko prava na sučelje dano pravo "G" (gledanja) za pristup stranici s rezultatima pretraživanja, potrebno je imati pravo na sadržaj definirano drugim(2) bitom da bi se vidjeli tajni dokumenti. Za mijenjanje podataka o sudovima korisniku može biti dano pravo editiranja podataka koji se prikazuju na javnim stranicama, a istovremeno mu se može zabraniti mijenjanje npr. naziva suda. Za takve i slične finije razrade potrebna su nam prava na sadržaj. Dodatno, pravima na sadržaj definiraju se prava administratorima sustava gdje treba omogućiti lokalnom administratoru (na nivou suda ili županije) mijenjanje podataka o korisnicima za jedinicu (sud,županiju...) za koju je nadležan.
Ukupna prava (zasebno na sučelje, zasebno na sadržaj) dobivaju se ILI operacijom nad pravima grupa kojima korisnik pripada. Drugim riječima, korisnik ima sva prava koja ima bilo koja od grupa kojih je on član.
Prava na sučelje
| BitmapPos | Pravo | Opis |
|---|---|---|
| 1 | G | Gledanja |
| 2 | D | Dodavanja novih (zapisa) |
| 3 | M | Mijenjanja vlastitih (zapisa) |
| 4 | B | Brisanja vlastitih (zapisa) |
| 5 | E | Mijenjanja tuđih zapisa |
| 6 | X | Brisanja tuđih zapisa |
Prava na sadržaj
| BitmapPos | Opis |
|---|---|
| 1 | Gledanje dokumenata općenito |
| 2 | Gledanje tajnih dokumenata |
| 3 | Davanje komentara na dokumente |
| 4 | Unos novih sadržaja (do špajze) i editiranje dok je u špajzi |
| 5 | Publiciranje novih sadržaja (pregled špajze i objava ako je OK) |
| 6 | Editiranje novih sadržaja (pregled špajze, edit i objava) |
| 7 | Prebacivanje objavljenih sadržaja u špajzu |
| 8 | Editiranje objavljenih sadržaja (vlastitih) |
| 9 | Brisanje objavljenih sadržaja |
| 10 | Unos novih sadržaja direktno (bez špajze) |
| 11 | Editiranje objavljenih sadržaja |
| 12 | Može editirati šifarnike (grane prava, sudovi, ...) |
| 13 | Editiranje public podataka o sudovima za koje je nadležan |
| 24 | Unos novih korisnika |
| 25 | Promjena podataka o korisnicima koje je sam unio |
| 26 | Brisanje korisnika koje je sam unio |
| 27 | Promjena podataka o korisnicima (svima) |
| 28 | Brisanje korisnika |
| 29 | Pregled konfiguracije |
| 30 | Promjena konfiguracije |
| 31 | RESERVED FOR FUTURE USE |
Prestanak mog angažmana na projektu
Zadnje izmjene na stranicama radio sam u siječnju/veljači 2003- će godine. Nakon toga, u trećem mjesecu radio sam na "čišćenju" podataka (pronalaženju nesuvislosti; pronalaženju pravnih propisa koji se spominju u dokumentima, a nisu uneseni u bazu; pronalaženju "krivo" formatiranih dokumenata i slično). U tu svrhu napisao sam nekolicinu Perl script-i koje su pročešljavale datotečnu strukturu dokumenata i popisivale "nepodopštine". Kako Sudačka Mreža i dalje nije ispunjavala financijske obveze prema Itemsu, tako je i moj angažman na projektu prestao.