28
UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET „MIHAJLO PUPIN” ZRENJANIN SEMINARSKI RAD Iz predmeta: Distribuirani informacioni sistemi Tema: Veb aplikacija za Kadrovsku evidenciju

1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

UNIVERZITET U NOVOM SADUTEHNIČKI FAKULTET „MIHAJLO PUPIN”

ZRENJANIN

SEMINARSKI RADIz predmeta: Distribuirani informacioni sistemiTema: Veb aplikacija za Kadrovsku evidenciju

Profesor: Student:Doc. dr Ljubica Kazi Jelena Adamov MIT 22/19

Zrenjanin, 2020.

Page 2: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

Sadržaj1. Opis poslovnog procesa.................................................................................................22. UML modeli u okviru dizajna sistema..........................................................................3

2.1 Use case dijagram....................................................................................................32.2 Dijagram komonenti................................................................................................32.3 Dijagram razmeštaja................................................................................................4

3. Korisničko uputstvo.......................................................................................................54. Implementacija..............................................................................................................7

4. 1 Opis primenjene tehnologije i alata........................................................................74. 2 Karakteristični delovi programskog koda sa objašnjenjima...................................7

4. 2. 1 Prvi deo – Distribucija podataka....................................................................74. 2. 2 Drugi deo – Distribucija procesiranja...........................................................15

5. Zaključak.....................................................................................................................206. Literatura.....................................................................................................................21

1

Page 3: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

1. Opis poslovnog procesa

U ovom radu prikazan je razvoj veb aplikacije za praktičnu evidenciju zaposlenih – Kadrovska evidencija. Ova aplikacija nam omogućava evidentiranje podataka o svakom zaposlenom, kao što su: lični podaci (JMBG, prezime, ime, broj lične karte, telefon), podaci o obrazovanju (stepen stručne spreme i završena škola), radno mesto, kao i podaci o stanovanju (opština stanovanja, mesto i adresa). Ove podatke moguće je unositi, tabelarno prikazivati i raditi proveru vertikalno i horizontalno particionisanih baza podataka u kojima su isti smešteni.

2

Page 4: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

2. UML modeli u okviru dizajna sistema

2.1 Use case dijagram

Use case dijagram (dijagram slučajeva korišćenja) prikazuje skup slučajeva korišćenja i aktera. Koristi se da specificira neku funkcionalnost i ponašanje nekog subjekta. On vizualizuje ponašanje sistema. Služi korisniku da razume šta sistem radi, a verifikatoru da proveri funkcionisanje. [1]

Slika 1. Use Case dijagram

2.2 Dijagram komonenti

Komponenta je zamenljivi deo sistema. Dijagram komponenti prikazuje organizaciju i zavisnosti između komponenata. Namenjen je prikazu strukturne relacije između softverskih komponenti sistema. On ilustruje delove softvera, ugrađene kontrolere i slično, i ima veći stepen apstrakcije od dijagrama klasa. [1]

3

Page 5: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

Slika 2. Dijagram komponenti

2.3 Dijagram razmeštaja

Dijagram razmeštaja prikazuje statički pogled run-time hardverske konfiguracije i softverskih komponenti koje se izvršavaju na tim čvorovima. Dijagram razmeštaja prikazuje hardver sistema, softver koji je instaliran na tom sistemu i srednji sloj koji se koristi za povezivanje međusobno razdvojenih mašina. [1]

Slika 3. Dijagram razmeštaja

4

Page 6: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

3. Korisničko uputstvo

Nakon pokretanja veb aplikacije Kadrovska evidencija, pojavljuje se sledeći ekran:

Slika 4. Početna strana aplikacije

Aplikacija omogućava unos podataka o novom zaposlenom. Na sledećoj slici prikazana je stranica za unos:

Slika 5. Unos podataka

Nakon toga, podatke je moguće pregledati tabelarno i izvršiti proveru istih, kako bi se utvrdilo da li su podaci usaglašeni u horizontalno particionisanim i u vertikalno

5

Page 7: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

particionisanim bazama podataka. Ukoliko to nije slučaj, dobićemo izveštaj sličan ovom:

Slika 6. Provera usklađenosti baza podataka

Ukoliko je došlo do neke greške, vrši se oporavak baza. Nakon toga, na stranici za proveru podataka dobijamo izveštaj da su sve baze usaglašene:

Slika 7. Izveštaj nakon oporavka baza podataka

6

Page 8: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

4. Implementacija

4. 1 Opis primenjene tehnologije i alata

U ovom seminarskom radu korišćen je Visual Studio .NET 2010 i Microsoft SQL Server 2008 R2. U okviru realizacije programskog koda:

- Korisnički interfejs predstavljaju ASPX Web forme,- Klase za rad sa podacima sa korisničkog interfejsa i baze podataka su iz

standardnog paketa klasa za rad sa SQL serverom (SQLClient),- KlasePodataka, PrezentacionLogika su sopstvene klase,- WebServis služi za podršku interfejsu putem web protokola.

4. 2 Karakteristični delovi programskog koda sa objašnjenjima

4. 2. 1 Prvi deo – Distribucija podataka

Kreirana je osnovna baza podataka, a po ugledu na nju horizontalno particionisane baze, kao i vertikalno particionisane baze podataka. Imamo dve horizontalno particionisane baze - zaposleni sa visokom stručnom spremom, odnosno srednjom stručnom spremom. Kod vertikalno particionisanih baza podataka imamo četiri baze – lični podaci, obrazovanje, radno mesto i stanovanje zaposlenog. Kreiran je i katalog, koji predstavlja bazu podataka i sadrži podatke o baznim relacijama. [2]

U Visual Studio-u su kreirane klase clsZaposleni i clsZaposleniSaTimeStamp, i forme za unos podataka, tabelarni prikaz, i proveru i oporavak baza podataka. Najvažniji delovi koda programskog rešenja dati su u listingu ispod.

Unos podataka// metoda sa preuzimanje podataka sa korisničkog interfejsaprivate clsZaposleni PreuzimiPodatkeSaKI() { clsZaposleni objZaposleni = new clsZaposleni(); // preuzimanje vrednosti sa korisnickog interfejsa // u atribute objekta klase objZaposleni.JMBG = txbJMBG.Text; objZaposleni.Prezime = txbPrezime.Text; objZaposleni.Ime = txbIme.Text; objZaposleni.BrojLicneKarte = txbBrojLicneKarte.Text; objZaposleni.Telefon = txbTelefon.Text; objZaposleni.OpstinaStanovanja = txbOpstinaStanovanja.Text; objZaposleni.MestoStanovanja = txbMestoStanovanja.Text; objZaposleni.AdresaStanovanja = txbAdresaStanovanja.Text; objZaposleni.ZavrsenaSkola = txbZavrsenaSkola.Text; objZaposleni.RadnoMesto = ddlRadnoMesto.Text;

// za bool bool StrucnaSprema = cbStrucnaSprema.Checked; if (StrucnaSprema) { objZaposleni.StrucnaSprema = "1"; } else { objZaposleni.StrucnaSprema = "0"; }

return objZaposleni; }

// metoda za formiranje upita za unos u baze podataka

7

Page 9: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

private string FormirajUpit(string ModalitetRada, clsZaposleni objZaposleni, Int64 intVrednostTimeStamp) { string Upit = "";

switch (ModalitetRada) { case "osnovna": Upit = "INSERT INTO Zaposleni VALUES (" + objZaposleni.JMBG + ", '" + objZaposleni.Prezime + "','" + objZaposleni.Ime + "','" + objZaposleni.BrojLicneKarte + "','" + objZaposleni.Telefon + "'," + objZaposleni.OpstinaStanovanja + ", '" + objZaposleni.MestoStanovanja + "'," + objZaposleni.AdresaStanovanja + ",'" + objZaposleni.StrucnaSprema + "','" + objZaposleni.ZavrsenaSkola + "'," + objZaposleni.RadnoMesto + "',DEFAULT)"; break; case "horizontalna": Upit = "INSERT INTO Zaposleni VALUES (" + objZaposleni.JMBG + ", '" + objZaposleni.Prezime + "','" + objZaposleni.Ime + "','" + objZaposleni.BrojLicneKarte + "','" + objZaposleni.Telefon + "'," + objZaposleni.OpstinaStanovanja + ", '" + objZaposleni.MestoStanovanja + "'," + objZaposleni.AdresaStanovanja + ",'" + objZaposleni.StrucnaSprema + "','" + objZaposleni.ZavrsenaSkola + "'," + objZaposleni.RadnoMesto + "'," + intVrednostTimeStamp.ToString() + ")"; break; case "licni": Upit = "INSERT INTO Zaposleni VALUES (" + objZaposleni.JMBG + ", '" + objZaposleni.Prezime + "','" + objZaposleni.Ime + "','" + objZaposleni.BrojLicneKarte + "','" + objZaposleni.Telefon + "'," + intVrednostTimeStamp.ToString() + ")"; break; case "obrazovanje": Upit = "INSERT INTO Zaposleni VALUES (" + objZaposleni.JMBG + ", '" + objZaposleni.StrucnaSprema + "','" + objZaposleni.ZavrsenaSkola + "," + intVrednostTimeStamp.ToString() + ")"; break; case "radno": Upit = "INSERT INTO Zaposleni VALUES (" + objZaposleni.JMBG + ", '" + objZaposleni.RadnoMesto + "'," + intVrednostTimeStamp.ToString() + ")"; break; case "stanovanje": Upit = "INSERT INTO Zaposleni VALUES (" + objZaposleni.JMBG + ", '" + objZaposleni.OpstinaStanovanja + ", '" + objZaposleni.MestoStanovanja + "'," + objZaposleni.AdresaStanovanja + "'," + intVrednostTimeStamp.ToString() + ")"; break; }

return Upit; }

// metoda za upis podatakaprivate string IzvrsiUpisPodataka(string NazivStringaKonekcijeIzWebConfig, string ModalitetRada, clsZaposleni objZaposleni, Int64 noviIntTimeStamp) { string PorukaUspehaSnimanja = ""; // konektovanje na bp objKonekcija.StringKonekcije = ConfigurationManager.ConnectionStrings[NazivStringaKonekcijeIzWebConfig].ConnectionString; bool UspehKonektovanja = objKonekcija.OtvoriKonekciju();

// izvrsavanje upita objTabela = new clsSqlTabela(objKonekcija, "Zaposleni"); string SQLUpit = this.FormirajUpit(ModalitetRada, objZaposleni, noviIntTimeStamp); bool UspehAzuriranja = objTabela.IzvrsiAzuriranje(SQLUpit);

PorukaUspehaSnimanja = SQLUpit; if (UspehAzuriranja) { PorukaUspehaSnimanja = PorukaUspehaSnimanja + "USPESNO SNIMANJE NOVIH PODATAKA!"; } else { PorukaUspehaSnimanja = PorukaUspehaSnimanja + "Greska!"; } // uspeh

8

Page 10: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

return PorukaUspehaSnimanja; }

Tabelarni prikaz podataka// metoda za učitavanje katalogaprivate DataSet UcitajKatalog(string PutanjaXML) { DataSet dsKatalog = new DataSet(); dsKatalog.ReadXml(PutanjaXML); return dsKatalog; }

// metoda za učitavanje podataka iz baze podatakaprivate DataSet UcitajSve(string NazivStringaKonekcije) { DataSet dsPodaci = new DataSet();

// konekcija na bazu clsSqlKonekcija objKonekcija; objKonekcija = new clsSqlKonekcija(); objKonekcija.StringKonekcije = ConfigurationManager.ConnectionStrings[NazivStringaKonekcije].ConnectionString; bool UspehKonektovanja = objKonekcija.OtvoriKonekciju();

// preuzimanje podataka clsSqlTabela objTabela = new clsSqlTabela(objKonekcija, "Zaposleni"); string SQLUpit = "select * from Zaposleni"; dsPodaci = objTabela.DajPodatke(SQLUpit);

return dsPodaci; }

// metoda za pripremu podataka za prikaz u grid-uprivate DataSet PripremiPodatkeZaPrikaz(DataSet dsKatalog) { DataSet dsObjedinjeniPodaci = new DataSet(); DataRow[] drFullBP = dsKatalog.Tables[0].Select("ModalitetRada='horizontalna'"); foreach (DataRow dr in drFullBP) { if (!dr.ItemArray[0].ToString().Equals("OSNOVNA")) { //za svaki bazu iz filtriranog kataloga ucitati podatke u ds string NazivStringaKonekcijeIzKataloga = dr.ItemArray[1].ToString(); DataSet dsPodaciBazePod = UcitajSve(NazivStringaKonekcijeIzKataloga); // spojiti dobijen ds sa centralnim ds dsObjedinjeniPodaci = SpojPodatke(dsPodaciBazePod, dsObjedinjeniPodaci); } } return dsObjedinjeniPodaci; }

Provera podataka// metoda za dobijanje ukupnog broja zaposlenihprivate int DajUkupanBrojZaposlenih(string NazivStringaKonekcije) { DataSet dsPodaci = new DataSet(); int brojZaposlenih = 0;

// konekcija na bazu clsSqlKonekcija objKonekcija; objKonekcija = new clsSqlKonekcija(); objKonekcija.StringKonekcije = ConfigurationManager.ConnectionStrings[NazivStringaKonekcije].ConnectionString; bool UspehKonektovanja = objKonekcija.OtvoriKonekciju();

// preuzimanje podataka

9

Page 11: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

clsSqlTabela objTabela = new clsSqlTabela(objKonekcija, "Zaposleni"); string SQLUpit = "select count (JMBG) as ukupnoZaposlenih from Zaposleni"; dsPodaci = objTabela.DajPodatke(SQLUpit);

try { brojZaposlenih = int.Parse(dsPodaci.Tables[0].Rows[0].ItemArray[0].ToString()); } catch (Exception greska) { brojZaposlenih = 0; }

return brojZaposlenih; }

// metoda za dobijanje broja zaposlenih prema stručnoj spremiprivate int DajUkupanBrojZaposlenihPremaSS(string NazivStringaKonekcije, bool ZaposleniSSS) { DataSet dsPodaci = new DataSet(); int brojZaposlenih = 0;

// konekcija na bazu clsSqlKonekcija objKonekcija; objKonekcija = new clsSqlKonekcija(); objKonekcija.StringKonekcije = ConfigurationManager.ConnectionStrings[NazivStringaKonekcije].ConnectionString; bool UspehKonektovanja = objKonekcija.OtvoriKonekciju();

// preuzimanje podataka clsSqlTabela objTabela = new clsSqlTabela(objKonekcija, "Zaposleni"); string SQLUpit = ""; if (ZaposleniSSS) { SQLUpit = "select count (JMBG) as ukupnoZaposlenih from Zaposleni where StrucnaSprema=0"; } else //VSS { SQLUpit = "select count (JMBG) as ukupnoZaposlenih from Zaposleni where StrucnaSprema=1"; } dsPodaci = objTabela.DajPodatke(SQLUpit);

try { brojZaposlenih = int.Parse(dsPodaci.Tables[0].Rows[0].ItemArray[0].ToString()); } catch (Exception greska) { brojZaposlenih = 0; }

return brojZaposlenih; }

// formiranje liste zaposlenihprivate List<clsZaposleniSaTimeStamp> DajListuObjekataZaposleni(DataSet dsPodaciZaListu) { // promenljive clsZaposleniSaTimeStamp objZaposleniSaTimeStamp; List<clsZaposleniSaTimeStamp> objListaObjekataZaposlenih = new List<clsZaposleniSaTimeStamp>(); int ukupnoZapisaZaListu = dsPodaciZaListu.Tables[0].Rows.Count; string strStrucnaSprema = "";

for (int brojacZapisa = 0; brojacZapisa < ukupnoZapisaZaListu; brojacZapisa++) { // priprema elementa liste

10

Page 12: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

objZaposleniSaTimeStamp = new clsZaposleniSaTimeStamp(); objZaposleniSaTimeStamp.JMBG = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[0].ToString(); objZaposleniSaTimeStamp.Prezime = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[1].ToString(); objZaposleniSaTimeStamp.Ime = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[2].ToString(); objZaposleniSaTimeStamp.BrojLicneKarte = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[3].ToString(); objZaposleniSaTimeStamp.Telefon = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[4].ToString(); objZaposleniSaTimeStamp.OpstinaStanovanja = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[5].ToString(); objZaposleniSaTimeStamp.MestoStanovanja = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[6].ToString(); objZaposleniSaTimeStamp.AdresaStanovanja = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[7].ToString();

if ((dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[8].ToString().Equals("true")) || (dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[8].ToString().Equals("1"))) { strStrucnaSprema = "1"; } else { strStrucnaSprema = "0"; } objZaposleniSaTimeStamp.StrucnaSprema = strStrucnaSprema;

objZaposleniSaTimeStamp.ZavrsenaSkola = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[9].ToString(); objZaposleniSaTimeStamp.RadnoMesto = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[10].ToString(); objZaposleniSaTimeStamp.IntTimeStamp = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[11].ToString(); // dodavanje elemenat na listu objListaObjekataZaposlenih.Add(objZaposleniSaTimeStamp); }

return objListaObjekataZaposlenih; }

// unos nedostajućih podataka u baze podataka (ukoliko postoji)private string UpisiUBazuPodatakaNedostajuceZapise(string NazivStringaKonekcije, List<string> lstStringoviUpita) { //zajednicke promenljive string porukaUspehaSnimanja = ""; bool UspehAzuriranja = false;

// konekcija na bazu podataka clsSqlKonekcija objKonekcija = new clsSqlKonekcija(); objKonekcija.StringKonekcije = ConfigurationManager.ConnectionStrings[NazivStringaKonekcije].ConnectionString; bool UspehKonektovanja = objKonekcija.OtvoriKonekciju();

// izvrsavanje upita clsSqlTabela objTabela = new clsSqlTabela(objKonekcija, "Zaposleni");

try { UspehAzuriranja = objTabela.IzvrsiAzuriranje(lstStringoviUpita); if (UspehAzuriranja) { porukaUspehaSnimanja = "Uspeh snimanja! Snimljeno ukupno:" + lstStringoviUpita.Count.ToString() + " zapisa!"; } else { porukaUspehaSnimanja = "Neuspeh snimanja!"; } } catch (Exception greska)

11

Page 13: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

{ porukaUspehaSnimanja = "Greska:" + greska.Message; }

return porukaUspehaSnimanja; }

// provera usklađenosti svih bazaprotected void btnProveriUskladjenostPodataka_Click(object sender, EventArgs e) { // zajednicke promenljive DataSet dsZapisiOsnovneNakonTimeStampa = new DataSet(); List<string> lstStringoviUpita = new List<string>(); string strModalitetRadaSaBP = ""; string IzvestajODodavanjuZapisa = ""; string tekstIzvestajaStatusaBP=""; string dodatniTekst = ""; List<clsZaposleniSaTimeStamp> lstListaObjekataZaposleniSaTimeStamp = new List<clsZaposleniSaTimeStamp>();

// 1. prebrojavanje broja zapisa za centralnu bazu podataka int ukupnoOsnovna = DajUkupanBrojZaposlenih("KonekcijaZaposleniOsnovna"); txbIzvestaj.Text = "Osnovna baza podataka - broj zapisa:" + ukupnoOsnovna.ToString() + System.Environment.NewLine; // izdvajanje poslednje time stamp vrednosti, radi uporedjivanja sta nedostaje Int64 poslednjiTimeStampOsnovna = DajPoslednjiTimeStamp("KonekcijaZaposleniOsnovna", true);

txbIzvestaj.Text = txbIzvestaj.Text + " " + System.Environment.NewLine; // 2. PROVERA ZA VERTIKALNO PARTICIONISANE BAZE PODATAKA txbIzvestaj.Text = txbIzvestaj.Text + "PROVERA VERTIKALNO PARTICIONISANIH BAZA PODATAKA"; txbIzvestaj.Text = txbIzvestaj.Text + " " + System.Environment.NewLine;

int ukupnoVertikalna = 0; string statusUskladjenostiVertikalna = ""; Int64 poslednjiTimeStampVertikalna = 0;

DataRow[] drVertikalneBP = dsKatalog.Tables[0].Select("ModalitetRada<>'horizontalna'"); foreach (DataRow dr in drVertikalneBP) { strModalitetRadaSaBP=dr.ItemArray[2].ToString(); if (!strModalitetRadaSaBP.Equals("osnovna")) { //za svaki bazu iz filtriranog kataloga ucitati podatke u ds string NazivStringaKonekcijeIzKataloga = dr.ItemArray[1].ToString(); ukupnoVertikalna = DajUkupanBrojZaposlenih(NazivStringaKonekcijeIzKataloga); if (ukupnoOsnovna == ukupnoVertikalna) { statusUskladjenostiVertikalna = "Ima sve zapise!"; tekstIzvestajaStatusaBP =txbIzvestaj.Text + " BP:" + NazivStringaKonekcijeIzKataloga + " - broj zapisa:" + ukupnoVertikalna.ToString() + " =" + statusUskladjenostiVertikalna + System.Environment.NewLine; } else { statusUskladjenostiVertikalna = "Nema sve zapise!"; // izdvajanje poslednje time stamp vrednosti poslednjiTimeStampVertikalna = DajPoslednjiTimeStamp(NazivStringaKonekcijeIzKataloga, false);

// izdvajanje koji zapisi nedostaju u odnosu na time stamp dsZapisiOsnovneNakonTimeStampa = DajZapiseOsnovneBazePodatakaNakonTimeStampa("KonekcijaZaposleniOsnovna", poslednjiTimeStampVertikalna);

// prebacujemo sadrzaj data seta u listu objekata klase clsZaposleniSaTimeStamp lstListaObjekataZaposleniSaTimeStamp =

12

Page 14: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

DajListuObjekataZaposleni(dsZapisiOsnovneNakonTimeStampa);

// formiranje niza stringova sa insert into sa nedostajucim lstStringoviUpita = DajListuStringovaUpita(strModalitetRadaSaBP, lstListaObjekataZaposleniSaTimeStamp);

// poziv objTabela.IzvrsiAzuriranje (lista stringova insert into upita) koji radi sa transakcijom IzvestajODodavanjuZapisa = UpisiUBazuPodatakaNedostajuceZapise(NazivStringaKonekcijeIzKataloga, lstStringoviUpita);

// IZVESTAJ O URADJENOM: dodatniTekst = "Broj nedostajucih zapisa:" + dsZapisiOsnovneNakonTimeStampa.Tables[0].Rows.Count.ToString() + " Izvestaj dodavanje:" + IzvestajODodavanjuZapisa; tekstIzvestajaStatusaBP =txbIzvestaj.Text + " BP:" + NazivStringaKonekcijeIzKataloga + " - broj zapisa:" + ukupnoVertikalna.ToString() + " =" + statusUskladjenostiVertikalna + dodatniTekst + System.Environment.NewLine; } txbIzvestaj.Text = tekstIzvestajaStatusaBP; } }

// PROVERA ZA HORIZONTALNO PARTICIONISANE BAZE PODATAKA txbIzvestaj.Text = txbIzvestaj.Text + " " + System.Environment.NewLine; txbIzvestaj.Text = txbIzvestaj.Text + "PROVERA HORIZONTALNO PARTICIONISANIH BAZA PODATAKA"; txbIzvestaj.Text = txbIzvestaj.Text + " " + System.Environment.NewLine;

// ******************* osnovna int ukupnoZaposlenihSSS = DajUkupanBrojZaposlenihPremaSS("KonekcijaZaposleniOsnovna", true); txbIzvestaj.Text = txbIzvestaj.Text + " " + "Osnovna baza podataka - broj zaposlenih SSS:" + ukupnoZaposlenihSSS.ToString() + System.Environment.NewLine; int ukupnoZaposlenihVSS = DajUkupanBrojZaposlenihPremaSS("KonekcijaZaposleniOsnovna", false); txbIzvestaj.Text = txbIzvestaj.Text + " " + "Osnovna baza podataka - broj zaposlenih VSS:" + ukupnoZaposlenihVSS.ToString() + System.Environment.NewLine;

// ******************* horizontalno particionisane strModalitetRadaSaBP = "horizontalna"; // vazi za sve horizontalne (SSS i VSS)

// ******************** SSS int ukupnoZaposlenihUSSSBP = DajUkupanBrojZaposlenih("KonekcijaZaposleniSSS"); string statusUskladjenostiSSS = ""; Int64 poslednjiTimeStampSSS = 0;

// if (ukupnoZaposlenihSSS == ukupnoZaposlenihUSSSBP) { statusUskladjenostiSSS = "Ima sve zapise!"; tekstIzvestajaStatusaBP = txbIzvestaj.Text + " BP:" + "KonekcijaZaposleniSSS" + " - broj zapisa:" + ukupnoZaposlenihSSS.ToString() + " =" + statusUskladjenostiSSS + System.Environment.NewLine;

} else { statusUskladjenostiSSS = "Nema sve zapise!"; // izdvajanje poslednje time stamp vrednosti poslednjiTimeStampSSS = DajPoslednjiTimeStamp("KonekcijaZaposleniSSS", false);

// izdvajanje koji zapisi nedostaju u odnosu na time stamp dsZapisiOsnovneNakonTimeStampa = DajZapiseOsnovneBazePodatakaNakonTimeStampa("KonekcijaZaposleniOsnovna", poslednjiTimeStampSSS);

// prebacujemo sadrzaj data seta u listu objekata klase clsZaposleniSaTimeStamp lstListaObjekataZaposleniSaTimeStamp =

13

Page 15: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

DajListuObjekataZaposleni(dsZapisiOsnovneNakonTimeStampa);

// formiranje niza stringova sa insert into sa nedostajucim lstStringoviUpita = DajListuStringovaUpita(strModalitetRadaSaBP, lstListaObjekataZaposleniSaTimeStamp);

// poziv objTabela.IzvrsiAzuriranje (lista stringova insert into upita) koji radi sa transakcijom IzvestajODodavanjuZapisa = UpisiUBazuPodatakaNedostajuceZapise("KonekcijaZaposleniSSS", lstStringoviUpita);

// IZVESTAJ O URADJENOM: dodatniTekst = "Broj nedostajucih zapisa:" + dsZapisiOsnovneNakonTimeStampa.Tables[0].Rows.Count.ToString() + " Izvestaj dodavanje:" + IzvestajODodavanjuZapisa; tekstIzvestajaStatusaBP = txbIzvestaj.Text + " BP:" + "KonekcijaZaposleniSSS" + " - broj zapisa:" + ukupnoVertikalna.ToString() + " =" + statusUskladjenostiSSS + dodatniTekst + System.Environment.NewLine; } txbIzvestaj.Text = tekstIzvestajaStatusaBP;

// ************************ VSS int ukupnoZaposlenihUVSSBP = DajUkupanBrojZaposlenih("KonekcijaZaposleniVSS"); string statusUskladjenostiVSS = ""; Int64 poslednjiTimeStampVSS = 0;

// if (ukupnoZaposlenihVSS == ukupnoZaposlenihUVSSBP) { statusUskladjenostiVSS = "Ima sve zapise!"; tekstIzvestajaStatusaBP = txbIzvestaj.Text + " BP:" + "KonekcijaZaposleniVSS" + " - broj zapisa:" + ukupnoZaposlenihVSS.ToString() + " =" + statusUskladjenostiVSS + System.Environment.NewLine; } else { statusUskladjenostiVSS = "Nema sve zapise!"; // izdvajanje poslednje time stamp vrednosti poslednjiTimeStampVSS = DajPoslednjiTimeStamp("KonekcijaZaposleniVSS", false);

// izdvajanje koji zapisi nedostaju u odnosu na time stamp dsZapisiOsnovneNakonTimeStampa = DajZapiseOsnovneBazePodatakaNakonTimeStampa("KonekcijaZaposleniOsnovna", poslednjiTimeStampVSS);

// prebacujemo sadrzaj data seta u listu objekata klase clsZaposleniSaTimeStamp lstListaObjekataZaposleniSaTimeStamp = DajListuObjekataZaposleni(dsZapisiOsnovneNakonTimeStampa);

// formiranje niza stringova sa insert into sa nedostajucim lstStringoviUpita = DajListuStringovaUpita(strModalitetRadaSaBP, lstListaObjekataZaposleniSaTimeStamp);

// poziv objTabela.IzvrsiAzuriranje (lista stringova insert into upita) koji radi sa transakcijom IzvestajODodavanjuZapisa = UpisiUBazuPodatakaNedostajuceZapise("KonekcijaZaposleniVSS", lstStringoviUpita);

// IZVESTAJ O URADJENOM: dodatniTekst = "Broj nedostajucih zapisa:" + dsZapisiOsnovneNakonTimeStampa.Tables[0].Rows.Count.ToString() + " Izvestaj dodavanje:" + IzvestajODodavanjuZapisa; tekstIzvestajaStatusaBP = txbIzvestaj.Text + " BP:" + "KonekcijaZaposleniVSS" + " - broj zapisa:" + ukupnoVertikalna.ToString() + " =" + statusUskladjenostiVSS + dodatniTekst + System.Environment.NewLine;

} txbIzvestaj.Text = tekstIzvestajaStatusaBP; }

Katalog

14

Page 16: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

// Katalog.xml<SpisakBazaPodataka> <BazaPodataka> <OpisBaze>OSNOVNA</OpisBaze> <NazivKonekcije>KonekcijaZaposleniOsnovna</NazivKonekcije> <ModalitetRada>osnovna</ModalitetRada> </BazaPodataka> <BazaPodataka> <OpisBaze>Horiz-VSS Zaposleni</OpisBaze> <NazivKonekcije>KonekcijaZaposleniVSS</NazivKonekcije> <ModalitetRada>horizontalna</ModalitetRada> </BazaPodataka> <BazaPodataka> <OpisBaze>Horiz-SSS Zaposleni</OpisBaze> <NazivKonekcije>KonekcijaZaposleniSSS</NazivKonekcije> <ModalitetRada>horizontalna</ModalitetRada> </BazaPodataka> <BazaPodataka> <OpisBaze>Vert-Licni</OpisBaze> <NazivKonekcije>KonekcijaZaposleniLicniPodaci</NazivKonekcije> <ModalitetRada>licni</ModalitetRada> </BazaPodataka> <BazaPodataka> <OpisBaze>Vert-Obrazovanje</OpisBaze> <NazivKonekcije>KonekcijaZaposleniObrazovanje</NazivKonekcije> <ModalitetRada>obrazovanje</ModalitetRada> </BazaPodataka> <BazaPodataka> <OpisBaze>Vert-Radno mesto</OpisBaze> <NazivKonekcije>KonekcijaZaposleniRadnoMesto</NazivKonekcije> <ModalitetRada>radno</ModalitetRada> </BazaPodataka> <BazaPodataka> <OpisBaze>Vert-Stanovanje</OpisBaze> <NazivKonekcije>KonekcijaZaposleniStanovanje</NazivKonekcije> <ModalitetRada>stanovanje</ModalitetRada> </BazaPodataka></SpisakBazaPodataka>

Listing 1. Delovi programskog koda rešenja – distribucija podataka

4. 2. 2 Drugi deo – Distribucija procesiranja

U ovom delu seminarskog rada kreirana je veb aplikacija za Kadrovsku evidenciju primenom višeslojnosti. U okviru slojeva se nalaze:

- sloj za rad sa podacima - clsZaposleni, clsZaposleniSaTimeStamp, clsZaposleniDB, clsListaZaposleniSaTimeStamp, clsKatalog;

- sloj poslovne logike - clsPoslovnoPravilo, u okviru koje se određuje da li za određeno radno mesto ima slobodnih mesta za zapošljavanje;

- sloj servisa - čita podatke iz XML fajla o maksimalnom broju zaposlenih za svako radno mesto i koristi se u okviru poslovne logike;

- prezentacioni sloj - sastoji se iz Korisničkog interfejsa i Prezentacione logike. U okviru Korisničkog interfejsa imamo metode za prikupljanje podataka sa korisničkog interfejsa i prikaz istih. U Prezentacionoj logici najvažnije je napomenuti metode vezane za validaciju podataka.

Sloj za rad sa podacima// u okviru klasa clsZaposleni i clsZaposleniSaTimeStamp postoje set i get metode// klasa clsZaposleniDB koristi SqlDBUtils zbog realizacije osnovnih CRUD operacija // metoda za učitavanje svih zaposlenih private DataSet UcitajSve(string NazivStringaKonekcije) { DataSet dsPodaci = new DataSet();

15

Page 17: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

// konekcija na bazu clsSqlKonekcija objKonekcija; objKonekcija = new clsSqlKonekcija(); objKonekcija.StringKonekcije = ConfigurationManager.ConnectionStrings[NazivStringaKonekcije].ConnectionString; bool UspehKonektovanja = objKonekcija.OtvoriKonekciju();

// preuzimanje podataka clsSqlTabela objTabela = new clsSqlTabela(objKonekcija, "Zaposleni"); string SQLUpit = "select * from Zaposleni"; dsPodaci = objTabela.DajPodatke(SQLUpit);

return dsPodaci; }

// metoda za broj zaposlenih prema stručnoj spremi private int DajUkupanBrojZaposlenihPremaSS(string NazivStringaKonekcije, bool ZaposleniSSS) { DataSet dsPodaci = new DataSet(); int brojZaposlenih = 0;

// konekcija na bazu clsSqlKonekcija objKonekcija; objKonekcija = new clsSqlKonekcija(); objKonekcija.StringKonekcije = ConfigurationManager.ConnectionStrings[NazivStringaKonekcije].ConnectionString; bool UspehKonektovanja = objKonekcija.OtvoriKonekciju();

// preuzimanje podataka clsSqlTabela objTabela = new clsSqlTabela(objKonekcija, "Zaposleni"); string SQLUpit = ""; if (ZaposleniSSS) { SQLUpit = "select count (JMBG) as ukupnoZaposlenih from Zaposleni where StrucnaSprema=0"; } else //VSS { SQLUpit = "select count (JMBG) as ukupnoZaposlenih from Zaposleni where StrucnaSprema=1"; } dsPodaci = objTabela.DajPodatke(SQLUpit);

try { brojZaposlenih = int.Parse(dsPodaci.Tables[0].Rows[0].ItemArray[0].ToString()); } catch (Exception greska) { brojZaposlenih = 0; }

return brojZaposlenih; }

// pronalazak zaposlenog po JMBG-u public DataSet DajZaposlenogPoJMBG(int JMBG) { DataSet dsPodaci = new DataSet();

SqlConnection Veza = new SqlConnection(pStringKonekcije); Veza.Open(); SqlCommand Komanda = new SqlCommand("DajZaposlenogPoJMBG", Veza); Komanda.CommandType = CommandType.StoredProcedure; Komanda.Parameters.Add("@JMBG", SqlDbType.Int).Value = JMBG; SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = Komanda; da.Fill(dsPodaci); Veza.Close(); Veza.Dispose();

16

Page 18: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

return dsPodaci; }

// klasa clsListaZaposleniSaTimeStamp // lista zaposlenih private List<clsZaposleniSaTimeStamp> DajListuObjekataZaposleni(DataSet dsPodaciZaListu) { // promenljive clsZaposleniSaTimeStamp objZaposleniSaTimeStamp; // samo deklarisemo, a instanciramo vise puta u for ciklusu List<clsZaposleniSaTimeStamp> objListaObjekataZaposlenih = new List<clsZaposleniSaTimeStamp>(); int ukupnoZapisaZaListu = dsPodaciZaListu.Tables[0].Rows.Count; string strStrucnaSprema = "";

for (int brojacZapisa = 0; brojacZapisa < ukupnoZapisaZaListu; brojacZapisa++) { // priprema elementa liste objZaposleniSaTimeStamp = new clsZaposleniSaTimeStamp(); objZaposleniSaTimeStamp.JMBG = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[0].ToString(); objZaposleniSaTimeStamp.Prezime = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[1].ToString(); objZaposleniSaTimeStamp.Ime = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[2].ToString(); objZaposleniSaTimeStamp.BrojLicneKarte = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[3].ToString(); objZaposleniSaTimeStamp.Telefon = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[4].ToString(); objZaposleniSaTimeStamp.OpstinaStanovanja = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[5].ToString(); objZaposleniSaTimeStamp.MestoStanovanja = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[6].ToString(); objZaposleniSaTimeStamp.AdresaStanovanja = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[7].ToString();

if ((dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[8].ToString().Equals("true")) || (dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[8].ToString().Equals("1"))) { strStrucnaSprema = "1"; } else { strStrucnaSprema = "0"; } objZaposleniSaTimeStamp.StrucnaSprema = strStrucnaSprema;

objZaposleniSaTimeStamp.ZavrsenaSkola = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[9].ToString(); objZaposleniSaTimeStamp.RadnoMesto = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[10].ToString(); objZaposleniSaTimeStamp.IntTimeStamp = dsPodaciZaListu.Tables[0].Rows[brojacZapisa].ItemArray[11].ToString(); // dodavanje elemenat na listu objListaObjekataZaposlenih.Add(objZaposleniSaTimeStamp); }

return objListaObjekataZaposlenih; }

Sloj poslovne logike// metoda za proveru slobodnih mesta za zapošljavanjepublic bool DaLiImaMestaZaZaposljavanje(string RadnoMestoIzBazePodataka) { // pravilo za maxBrZaposlenih bool imaMesta = false;

int UkupnoZaposlenih = 0; clsZaposleniDB objZaposleniDB = new clsZaposleniDB(pStringKonekcije);

17

Page 19: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

UkupnoZaposlenih = objZaposleniDB.DajUkupnoZaposlenihZaRadnoMesto(RadnoMestoIzBazePodataka);

string RadnoMestoWS = ""; KadrovskiPodaci.Service1 objOgranicenja = new KadrovskiPodaci.Service1(); int MaxBrojZaposlenih = objOgranicenja.DajMaxBrojZaposlenih(RadnoMestoWS);

if (UkupnoZaposlenih < MaxBrojZaposlenih) { imaMesta = true; } else { imaMesta = false; }

return imaMesta; }

Sloj servisa// metode za iščitavanje svih ograničenja, kao i pojedinačnih za svako radno mesto[WebMethod] public DataSet DajSvaOgranjcenja() { DataSet dsOgranicenja = new DataSet(); dsOgranicenja.ReadXml(Server.MapPath("~/") + "XML/Ogranicenja.xml");

return dsOgranicenja; }

[WebMethod] public int DajMaxBrojZaposlenih(string pomRadnoMesto) { int MaxBrojZaposlenih = 0; DataSet dsOgranicenja = new DataSet(); dsOgranicenja.ReadXml(Server.MapPath("~/") + "XML/Ogranicenja.xml"); // filtriranje dataset-a DataRow[] result = dsOgranicenja.Tables[0].Select("RadnoMesto='" + pomRadnoMesto + "'"); MaxBrojZaposlenih = int.Parse(result[0].ItemArray[1].ToString());

return MaxBrojZaposlenih; }

// Ogranicenja.xml<SpisakOgranicenja> <OgranicenjeRadnogMesta> <RadnoMesto>racunovodja</RadnoMesto> <MaxBrZaposlenih>2</MaxBrZaposlenih> </OgranicenjeRadnogMesta> <OgranicenjeRadnogMesta> <RadnoMesto>administrativni radnik</RadnoMesto> <MaxBrZaposlenih>3</MaxBrZaposlenih> </OgranicenjeRadnogMesta> <OgranicenjeRadnogMesta> <RadnoMesto>sekretar</RadnoMesto> <MaxBrZaposlenih>2</MaxBrZaposlenih> </OgranicenjeRadnogMesta></SpisakOgranicenja>

Prezentacioni sloj (sastoji se iz korisničkog interfejsa i prezentacione logike) Korisnički interfejs// preuzimanje podataka sa korisničkog interfejsaprivate void PreuzmiPodatkeSaKI()

18

Page 20: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

{ // preuzimanje vrednosti sa korisnickog interfejsa u atribute prezentacione logike objFormaZaposleniUnos.JMBG = txbJMBG.Text; objFormaZaposleniUnos.Prezime = txbPrezime.Text; objFormaZaposleniUnos.Ime = txbIme.Text; objFormaZaposleniUnos.BrojLicneKarte = txbBrojLicneKarte.Text; objFormaZaposleniUnos.Telefon = txbTelefon.Text; objFormaZaposleniUnos.OpstinaStanovanja = txbOpstinaStanovanja.Text; objFormaZaposleniUnos.MestoStanovanja = txbMestoStanovanja.Text; objFormaZaposleniUnos.AdresaStanovanja = txbAdresaStanovanja.Text; objFormaZaposleniUnos.StrucnaSprema = cbStrucnaSprema.Checked; objFormaZaposleniUnos.ZavrsenaSkola = txbZavrsenaSkola.Text; objFormaZaposleniUnos.RadnoMesto = ddlRadnoMesto.Text; }

// prikaz podatakaprivate void PrikaziPodatke(GridView gv, DataTable TabelaPodataka) { gv.DataSource = TabelaPodataka; gv.DataBind(); }

Prezentaciona logika// provera da li su popunjena sva poljapublic bool DaLiJeSvePopunjeno() { bool SvePopunjeno = false;

if ((pJMBG.Length > 0) && (pPrezime.Length > 0) && (pIme.Length > 0) && (pBrojLicneKarte.Length > 0) && (pTelefon.Length > 0) && (pOpstinaStanovanja.Length > 0) && (pMestoStanovanja.Length > 0) && (pAdresaStanovanja.Length > 0) && (pMestoStanovanja.Length > 0) && (pStrucnaSprema.Length > 0) && (pZavrsenaSkola.Length > 0) && (!pRadnoMesto.Equals("Izaberite..."))) { SvePopunjeno = true; } else { SvePopunjeno = false; }

return SvePopunjeno; }

// provera jedinstvenosti zapisapublic bool DaLiJeJedinstvenZapis() { bool JedinstvenZapis = false; DataSet dsPodaci = new DataSet(); clsZaposleniDB objZaposleniDB = new clsZaposleniDB(pStringKonekcije); dsPodaci = objZaposleniDB.DajZaposlenogPoJMBG(int.Parse(pJMBG));

if (dsPodaci.Tables[0].Rows.Count == 0) { JedinstvenZapis = true; } else { JedinstvenZapis = false; }

return JedinstvenZapis; }

// provera usklađenosti sa poslovnim pravilimapublic bool DaLiSuPodaciUskladjeniSaPoslovnimPravilima() { // odnosi se na maxBrZaposlenih bool UskladjeniPodaci = false;

19

Page 21: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

clsPoslovnaPravila objPoslovnaPravila = new clsPoslovnaPravila(pStringKonekcije); clsZaposleniDB objZaposleniDB = new clsZaposleniDB(pStringKonekcije); string RadnoMesto = objZaposleniDB.DajUkupnoZaposlenihZaRadnoMesto(pRadnoMesto);

UskladjeniPodaci = objPoslovnaPravila.DaLiImaMestaZaZaposljavanje(RadnoMesto);

return UskladjeniPodaci; }

Listing 2. Delovi programskog koda rešenja – distribucija procesiranja

20

Page 22: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

5. Zaključak

U ovom seminarskom radu prikazana je veb aplikacija za kadrovsku evidenciju. Prikazane su osnovne funkcije koje pruža ova aplikacija, kao i sam dizajn.

U prvom delu su prikazani modeli, odnosno dijagrami softvera, kao i opis tehnologija koje su korišćene u izradi ove aplikacije – Microsoft Visual Studio, Microsoft SQL Server, ASP.NET, C#. Prikazana je implementacija i bitni delovi programskog koda aplikacije, kako distribucije podataka, tako i distribucije procesiranja.

21

Page 23: 1. Opis poslovnog procesa - University of Novi Sad DIS.docx · Web view2. UML modeli u okviru dizajna sistema3 2.1 Use case dijagram3 2.2 Dijagram komonenti3 2.3 Dijagram razmeštaja4

6. Literatura

Internet adrese

[1] Definicija i korišćenje use case dijagrama, dijagrama razmeštaja, dijagrama komponenti, dijagrama klasa, https://www.vps.ns.ac.rs/Materijal/mat22117.pdf

Skripte

[2]Tehnologije distribuiranih informacionih sistema, http://tfzr.rs/Content/files/0/UDZBENIK%20Tehnologije%20distribuiranih%20informacionih%20sistema.pdf

22