SAŽETAK - Hrvatska znanstvena bibliografija



SVEU?ILI?TE U SPLITUFAKULTET ELEKTROTEHNIKE, STROJARSTVA I BRODOGRADNJEDIPLOMSKI RADINFORMATIZACIJA HACCP STANDARDA PRIMJENOM SOA RJE?ENJAJurica Grgi?evi?Split, rujan 2011.KAZALO TOC \o "1-3" \h \z \u 1SA?ETAK PAGEREF _Toc304372424 \h 42UVOD PAGEREF _Toc304372425 \h 53KONTROLA KVALITETE PROIZVODA PAGEREF _Toc304372426 \h 63.1Sustavi Upravljanja Kvalitetom i ISO 9001 PAGEREF _Toc304372427 \h 63.2HACCP PAGEREF _Toc304372428 \h 83.2.1HACCP na?ela PAGEREF _Toc304372429 \h 93.3ISO 9001 i HACCP u PPK-a PAGEREF _Toc304372430 \h PAGEREF _Toc304372431 \h 134. razvojna okolina PAGEREF _Toc304372432 \h 134.1.1Verzije .NET-a PAGEREF _Toc304372433 \h 154.1. 4.0 PAGEREF _Toc304372434 \h 164.1.3Windows Comunication Foundation PAGEREF _Toc304372435 \h 174.1.4Windows Presentation Foundation PAGEREF _Toc304372436 \h 264.1. Entity Framework PAGEREF _Toc304372437 \h 304.1.6Managed Extensibility Framework PAGEREF _Toc304372438 \h 364.1.7Prevo?enje i CIL PAGEREF _Toc304372439 \h 424.2Programski jezik C# PAGEREF _Toc304372440 \h 435ARHITEKTURA ORIJENTIRANA SERVISIMA – SOA PAGEREF _Toc304372441 \h 455.1Uvod PAGEREF _Toc304372442 \h 455.2Model arhitekture orijentirane servisima PAGEREF _Toc304372443 \h 485.2.1Tipovi XML servisa PAGEREF _Toc304372444 \h 506QUALITY CONTROL SOFTWARE PAGEREF _Toc304372445 \h 516.1Baza podataka PAGEREF _Toc304372446 \h 516.2Server PAGEREF _Toc304372447 \h 556.3Klijent PAGEREF _Toc304372448 \h 636.4Moduli PAGEREF _Toc304372449 \h 746.4.1Modul Organizacija PAGEREF _Toc304372450 \h 746.4.2Modul Korisnici PAGEREF _Toc304372451 \h 746.4.3Modul HACCP PAGEREF _Toc304372452 \h 756.4.4Modul Obrasci PAGEREF _Toc304372453 \h 757ZAKLJU?AK PAGEREF _Toc304372454 \h 768LITERATURA PAGEREF _Toc304372455 \h 779PRILOZI PAGEREF _Toc304372456 \h 809.1Kazalo slika i tablica PAGEREF _Toc304372457 \h 809.1.1Kazalo slika PAGEREF _Toc304372458 \h 809.1.2Kazalo tablica PAGEREF _Toc304372459 \h 809.2Popis oznaka i kratica PAGEREF _Toc304372460 \h 819.3Ostali prilozi i dodaci PAGEREF _Toc304372461 \h 839.3.1Prilog 1. Shema Baze PAGEREF _Toc304372462 \h 839.3.2Prilog 2. Osobna evidencija PAGEREF _Toc304372463 \h 849.3.3Specifikacija Zahtjeva PAGEREF _Toc304372464 \h 859.3.4Plan Projekta PAGEREF _Toc304372465 \h 869.3.5Pivis Zapisnici PAGEREF _Toc304372466 \h 879.3.6Upravljanje izmjenama PAGEREF _Toc304372467 \h 89SA?ETAKSa?etakSustavi kontrole kvalitete su danas postali va?an dio svake organizacije koja se bavi proizvodnjom i preradom hrane. Set standarda ISO daje niz uputa i preporuka za implementaciju kontrole kvalitete. Njihov najpopularniji i najra?ireniji standard za kontrolu kvalitete je ISO 9001 standard. Dio ISO 9001 standarda zadu?enog za sigurnost hrane bazirane na prevenciji je HACCP standard (Hazard Analysis and Critical Control Point). U okviru ove radnje razvijeno je rje?enje za digitalizaciju ISO 9001 i HACCP sustava za potrebe Mesne industrije PPK Karlovac. U prvom dijelu radnje opisan je sustav kontrole kvalitete u PPK Karlovac. U drugom dijelu radnje opisane su Microsoftove tehnologije koje su se koristile za izradu aplikacije. To su redom .NET tehnologije: WCF, WPF, Entity Framework, MSSQL Server. Posljednji dio radnje opisuje arhitekturu aplikacije. Aplikacija je napravljena kao SOA aplikacija. To zna?i da se sastoji od serverskog i klijentskog dijela. Serverski dio ima zada?u da upravlja bazom podataka i poslu?uje klijenta sa podacima. Klijent omogu?ava interakciju korisnika sa sustavom. Napravljen je tako da mo?e primati dodatke (eng. plugin). Aplikacija ima ?etiri dodatka: Organizacija, Korisnici, HACCP i obrasci. Organizacija i korisnici omogu?avaju dodavanje, brisanje i a?uriranje korisnika sustava i organizacija. HACCP dodatak omogu?ava analizu opasnosti i izradu HACCP plana. Dodatak Obrasci sadr?i digitalne verzije postoje?ih papirnatih obrazaca.Klju?ne rije?iKontrola kvalitete, ISO 9001, HACCP, .NET, WCF, WPF, Entity Framework, Quality Control SoftwareUVODDanas, bilo koja organizacija, koja se bavi proizvodnjom hrane, ako sebe ?eli nazvati imalo ozbiljnom, mora imati uveden neki od sustava za kontrolu kvalitete. Naj?e??e je to ISO 9001. Dio ISO-a 9001 koji se bavi sigurno??u hrane je HACCP. HACCP sustav, danas, je postao zakonska obveza svih onih koji se bave proizvodnjom i preradom hrane.Na hrvatskom tr?i?tu, ve?inom se nude usluge savjetovanja u implementaciji HACCP sustava. No polako pojavljuju se programska rje?enja koja bi trebala pomo?i pri br?oj implementaciji HACCP sustava naspram na?inu na koji se do sada koristio za uvo?enje HACCP sustava. Dosada?nji pristup rezultirao bi velikom koli?inom dokumenata, koji bi stvarali dodatan posao radnicima organizacije koja uvodi HACCP. Zbog toga se postepeno prelazi na programska rje?enja u uvo?enju HACCP sustav jer bi ona pomo?u jednostavnog su?elja trebala olak?ati rad, a ne dodatno ga zakomplicirati. Na svjetskom tr?i?tu postoji dosta programskih rje?enja koji imaju manje vi?e iste funkcionalnosti. Neka od rije?enja su: ISOsystemPlus, Qsolve, ISO 22000:2005-HACCP, HACCP Manager Software, justfoodERP Dok stanje na hrvatskom tr?i?tu je druga?ije. Postoje jedan, dva programska paketa.Zbog toga mnoge organizacije uvode svoja programska rje?enja. Pa tako i tema ovog rada je napraviti programsko rje?enje HACCP sustava prilago?eno za mesnu industriju PPK, na temelju odluke uprave koja je ustanovila da niti jedno rije?enje ne zadovljava njene potrebe. Cilj ovog rada je upoznati se s principima HACCP standarda. O ?emu ?e biti rije?i u poglavlju Kontrola kvalitete proizvoda Poglavlje .NET dat ?e kratak uvid o Microsoftovim tehnologijama koje su se koristile prilikom izrade rada. To su redom WCF, WPF, Entity radna okolina, MEF i C#. Navedeno je mnogo ?udnih kratica, njihovo zna?enje bit ?e jasnije nakon ?to se pro?ita to poglavlje. Razumijevanje ovih tehnologija je bitno kako bi se moglo lak?e razumjeti aplikacija. Poglavlje o arhitekturi orijentiranoj servisima ukratko ?e objasniti osnovne principe dizajniranja ovakvih aplikacija. Ovo je va?no jer je aplikacija dizajnirana na ovakvom principu. I na kraju poglavlje Quality Control Software detaljno opisuje dizajn aplikacije. Po?ev?i od baze, gdje su opisane njezine tablice i model koji se krije iza nje. Nakon baze opisana je serverska strana aplikacije, njene operacije i klase. Te na kraju je opisan klijent, logika koja se krije iza njega i njegovi moduli.KONTROLA KVALITETE PROIZVODASustavi Upravljanja Kvalitetom i ISO 9001Prije nego zapo?ne pri?a o sustavima za kontrolu kvalitete, potrebno je definirati ?to je to kvaliteta. Jedna od definicija kvalitete je: subjektivni do?ivljaj kupca kroz dizajn proizvoda i na?in na koji sam dizajn odra?ava originalnost proizvoda mogu?nost da odre?eni proizvod ili usluga ispuni svoju svrhu uskla?enost sa propisima tvrtke.Quality Management System (QMS ) tj. Sustav Upravljanja Kvalitetom (SUK ) je tehnika upravljanja koja se koristi za definiranje (komuniciranje) sa zaposlenima o onome ?to je potrebno za izradu ?eljene kvalitete proizvoda i usluga, time se utje?e na djelatnike da ispune svoju zada?u prema o?ekivanom standardu kvalitete.Osnovni elementi sustava upravljanja kvalitetom su: Osiguranje kvalitete, Osoblje, Prostori i oprema, Dokumentacija, Proizvodnja, Kontrola kvalitete, Ugovorna proizvodnja i analiza, Reklamacije i povla?enje proizvoda i Samoinspekcije.Upravljanje kvalitetom je klju?ni element uspje?nosti poslovanja, a osigurava se putem sustava temeljenog na poznatim svjetskim standardima (EN-29000, ISO 9000, GMP, BS-5750). Primjenom sustava osiguranja kvalitete dokazuje se kvaliteta poslovanja, smanjuju se tro?kovi, stje?e poslovna vjerodostojnost. Zadnjih godina to je postalo pravilo kako u svijetu tako i u Hrvatskoj. [20]ISO 9000 je oznaka me?unarodne norme za certificiranje sustava upravljanja kvalitetom. Ni?e navedeni niz norma ISO 9000, razvijen je kako bi se pomoglo organizacijama svih vrsta i veli?ina da djelotvorno primjenjuju i provode u?inkovite sustave upravljanja kvalitetom. Niz normi koje obuhva?a ISO 9000 su: ISO 9000, ISO 9001, ISO 9004 i ISO 19011. Sublimirani zahtjevi norme ISO 9001 tra?e da organizacija predodre?uje svoj rad (djelatnost) zadovoljenju kupaca i posredno ostalih zainteresiranih strana, da djelotvorno i u?inkovito upravlja svojim procesima i nadzire njihovo odvijanje, ?to izravno uzrokuje porast kvalitete proizvoda (roba/usluga), smanjuje tro?kove i time ekonomizira procese.U normi HRN EN ISO 9001 Sustavi upravljanja kvalitetom navodi se da (Podru?je primjene) odre?uje zahtjeve sustava upravljanja kvalitetom u slu?ajevima kad organizacija:treba dokazati svoju sposobnost dosljednog dobavljanja proizvoda koji ispunjava zahtjeve kupca i zahtjeve zakona i propisa, tenamjerava pove?ati zadovoljstvo kupca u?inkovitom primjenom sustava, uklju?uju?i procese za stalno pobolj?avanje sustava i osiguravanje sukladnosti sa zahtjevima kupca, kao i zahtjeva zakona i propisa.Uvo?enje Norme je strate?ka odluka iza koje mora stajati vrh upravlja?ke strukture organizacije, od kojeg se o?ekuje da podupire i oslanja se na sustav upravljanja kvalitetom. ?tovi?e, to je osnovni uvjet da bi se sustav mogao po?eti uvoditi i funkcionirati u budu?nosti. ISO 9001 zahtijeva nadzor nad poslovnim procesima u organizaciji:Definiranjem procesa (ulaz i izlaz procesa/povratna sprega, izvr?itelji, odgovorne osobe, vlasnici procesa, tijek procesa itd)Izra?avanjem i odre?ivanjem ciljeva mjerljivim pokazateljimaMjerenjem i analizom procesa tim pokazateljima izvedbe (odvijanja) procesaAnalizom pokazatelja i na osnovu toga izvje?tavanjem o uspje?nosti procesaStalnim i kontinuiranim pobolj?anjima procesaU Normi se isti?e da promi?e procesni pristup, na samo u modeliranju, upravljanju i nadzoru poslovnih procesa, ve? kao osnova za cjelokupno gra?enje i funkcioniranje organizacije. Jedna od glavnih odredbi procesnog pristupa je stalno, kontinuirano i neprekidno pobolj?anje poslovnih procesa, odnosno cjelokupnog sustava upravljanja kvalitetom. Ispunjavanjem tog zahtjeva ne vr?i se samo pobolj?anje sustava, ve? se omogu?uje njegovo funkcioniranje, normalno vr?enje djelatnosti u svim procesima organizacije.Ispunjavanje zahtjeva uvedene norme (ili vi?e njih) u organizaciji se provjerava ocjenama sustava, auditima. Auditi se dijele na unutarnje (interne) i vanjske (eksterne), odnosno certifikacijske, nadzorne i recertifikacijske. Njima se provjerava, odnosno utvr?uje uskla?enost sustava sa zahtjevima norme. Svako ve?e odstupanje definira se kao nesukladnost, koja se nu?no mora otkloniti unutar odre?enog vremenskog roka.Suvremeno poslovanje u dana?njici podrazumijeva da organizacija ima uveden ISO 9001 i to se predstavlja kao jedan od osnovnih uvjeta za bilo kakvu poslovnu suradnju. Prema podacima organizacija koje se bave ISO sustavom, ISO 9001 je u ?itavom svijetu naj?e??e uvo?ena norma. [21]HACCPHACCP je sinonim upravljanja sigurno??u hrane. To je sustav koji identificira, procjenjuje i kontrolira opasnosti koje su zna?ajne za sigurnost hrane. Poanta je osigurati sigurnost proizvoda, odnosno sprije?iti da proizvod na bilo koji na?in uzrokuje ?tetu kod potro?a?a. [22]Izvorno je razvijen kao sustav mikrobiolo?ke ispravnosti u ranim danima 1960-tih godina od strane tvrtke Pillsbury, NASA-e i Ameri?ke vojske. Koristili su ga astronauti za vrijeme svemirskih ekspedicija. [24]Dvije rije?i, dvije klju?ne stavke koje predstavljaju HACCP su analiza opasnosti (hazard analysis) i kriti?ne kontrolne to?ke (critical control points). Opasnost, kako se koristi u HACCP sustavu se definira kao biolo?ka, kemijska ili fizi?ka opasnost, koje vidimo kao potencijalnu prijetnju ljudskom zdravlju. Kriti?na kontrolna to?ka je korak u kojem se primjenjuje kontrola za sprje?avanje ili uklanjanje opasnosti za sigurnost hrane, odnosno smanjenje opasnosti na prihvatljivu razinu. Na?elo HACCP-a je sigurnost hrane tijekom proizvodnje, a ne nakon ?to imamo gotov proizvod. Cilj je, dakle sprije?iti opasnosti u najranijoj mogu?oj to?ki u lancu hrane, ?to zna?i da se mo?e primijeniti od samog procesa uzgoja ?ivotinja do to?ke potro?nje. Njegova primjena mo?e zahtijevati temeljitu promjenu u kulturi ili promjenu stavova ljudi uklju?enih u preradu hrane. U mnogim industrijama ne postoji tradicija pisanih procedura, odnosno proceduralnih priru?nika, te evidencije o kvaliteti i sigurnosti. HACCP zahtijeva temeljne promjene u stavovima, fokusiran je na vo?enje evidencije i dokumentacije. Sli?no tome, oni koji poku?avaju implementirati HACCP mogu te?ko prihvatiti koncept rizika kontrole sigurnosti hrane, osobito ako su naviknuti na kontrole koje se temelje na unaprijed odre?enim parametrima ustanovljenim na vlastitim iskustvima. Veoma je va?no da svi ljudi koji rade u poduze?u razumiju HACCP sustav. Usvajanje osnovnih znanja o HACCP-u, samo da bi se zadovoljili zahtjevi tvrtke mo?e dovesti do neuspjeha kompanije. [22]U po?etku se HACCP sastojao od tri na?ela (na?ela 1,2 i 4 u sljede?em poglavlju). Pillsbury zatim dodaje idu?a dva na?ela (na?ela 3 i 5). HACCP sustav sa navedenih pet na?ela standardiziran je 1992. Preostala dva na?ela su dodana 1997 i za sada HACCP sustav se sastoji od tih sedam na?ela. Godine 2004 je bila zadnja revizija HACCP sustava, ali navedena na?ela se nisu mijenjali. [24HACCP nije nezavisan program, ve? je dio ve?eg sustava kontrole, koji uklju?uje i provo?enje univerzalnih procedura koje se primjenjuju za kontrolu op?ih uvjeta i okru?enja proizvodnje i doprinose sigurnosti proizvoda. Programi koji trebaju biti usvojeni, implementirani i dokumentirani su GMP, dobra proizvo?a?ka praksa, SOP – standardne operativne procedure i SSOP – standardne operativne procedure higijene.Po?ev?i od 01. sije?nja 2006. godine standardi sigurne?hrane, u prvom redu HACCP, obavezni su na tr?i?tima EU i Svjetske trgovinske organizacije, a tvrtke koje ne budu posjedovale certifikate o poslovanju u skladu sa ovim standardima ne?e biti u mogu?nosti svoju robu plasirati na spomenuta tr?i?ta. [25]HACCP na?elaHACCP sustav se sastoji od sedam na?ela, koje opisuju kako uspostaviti implementaciju i odr?avanje HACCP plana za odre?enu operaciju tijekom prou?avanja.Na?elo 1Provesti analizu opasnosti. Odrediti potencijalne opasnosti povezane sa svim fazama proizvodnje, koriste?i dijagram toka na kojem su prikazani koraci procesa. Procijeniti vjerojatnost nastanka opasnosti, i identificirati preventivne mjere za njihovo suzbijanje.Na?elo 2Potrebno je utvrditi koje su kriti?ne kontrolne to?ke (u daljnjem tekstu CCP). Nakon toga, trebaju se napisati postupci i operativni koraci koji se mogu kontrolirati kako bi se uklonile opasnosti, ili smanjila vjerojatnost nastanka, odnosno smanjenje opasnosti na prihvatljivu razinu.Na?elo 3Uspostaviti kriti?ne granice (ciljana razina i dopu?tena odstupanja), koji moraju biti ispunjeni kako bi se osiguralo da su CCP pod kontrolom. Moraju uklju?ivati mjerljivi parametar kojeg nazivamo apsolutnom tolerancijom, odnosno sigurno??u granica CCP.Na?elo 4Uspostaviti sustav za pra?enje kontrole CCP po rasporedima testiranja ili promatranja.Na?elo 5Odrediti korektivne mjere koje se poduzimaju ako sustav pra?enja utvrdi da se odre?ena CCP izmi?e kontroli. Korektivne akcije za njihovu provedbu trebaju biti specificirane.Na?elo 6Uspostaviti procedure za verifikaciju kojima se potvr?uje da HACCP sustav radi u?inkovito. Postupci verifikacije moraju biti razvijeni tako da odr?avaju HACCP sustav i osiguravaju u?inkovit nastavak rada.Na?elo 7Napisati dokumentaciju koja se odnosi na sve procedure i zapise vezane za primjenu ovih na?ela. Zapisi se moraju ?uvati da bi pokazali kako HACCP sustav radi pod kontrolom i da su odgovaraju?e korektivne akcije poduzete za sva odstupanja od kriti?nih granica.Kao ?to je prije navedeno HACCP nije samostalan sustav. Dobre higijenske prakse i drugi uvjeti vezani za preradu hrane, kao i jaka predanost menad?mentu su potrebne; HACCP nije zamjena za njih. Obuka je jo? jedan jako bitan uvjet za uspje?nost sustava. S ciljem razvoja posebnih obuka koje ?e podr?avati HACCP plan, potrebna je izrada radnih uputa i procedura koje definiraju zadatke osoblja za svaku CCP. [23]ISO 9001 i HACCP u PPK-aPPK karlova?ka mesna industrija d.d. ima certifikate za standarde ISO 9001 i HACCP te se ti standardi i ispunjavaju u svakodnevnom radu. Standardi su implementirani kroz potrebnu dokumentaciju, papirologiju i na?in rada. Procesi koji su identificirani prilikom uvo?enja SUK-a u PPK dijele se u tri grupe:VODE?I PROCESI (procesi upravljanja) su:-planiranje SUK-a-unutarnje ocjene SUK-a-analize procesa-upravna ocjena sustava-pobolj?anje i razvoj procesaGLAVNI PROCESI (procesi realizacije proizvoda) su:-proizvodnja (svje?eg mesa, obarenih, polutrajnih i trajnih kobasica, trajnih komadnih mesa i polutrajnih suhomesnatih proizvoda)-prodajaPOMO?NI PROCESI su:-planiranje realizacije proizvoda-nabava-kontrola i ispitivanje nabavljenih proizvoda-procesna kontrola-kontrola gotovih proizvoda-analiza opasnosti (HACCP)-sanitacija i higijena pogona-GMP (dobra proizvo?a?ka praksa)-skladi?tenje sirovina i repromaterijala-skladi?tenje gotovih proizvoda-transport-upravljanje resursima-upravljanje dokumentima i zapisima-upravljanje mjerno-ispitnom i procesnom opremom-upravljanje nesukladnostimaDokumentacija koju nala?u ISO 9001 i HACCP unutar PPK organizirana je u ?etiri razine. U dokumente prve razine: Politika kvalitete, Poslovnik integriranog sustava upravljanja kvalitetom i sigurno??u hrane. U drugu razinu spadaju: Standardni operativni postupci SUK-a (SOP). Tre?a razina obuhva?a Radne upute i propise, Norme i specifikacije, Radne dokumente. ?etvrtu razinu ?ine razni obrasci i formulari. [26]Poslovnik upravljanja kvalitetom vrhovni je dokument ili dokument prve razine. Njime su propisani procesi sustava upravljanja kvalitetom (SUK), njihove veze, provedbe i odgovornosti za provedbu. Standardnim operativnim postupcima (SOP) i radnim uputama (RU) SUK-a. HACCP plan koji je povezan sa Poslovnikom putem SOP-a HACCP, osnovni je dokument koji osigurava uvijete za proizvodnju zdravstveno ispravne hrane. HACCP sustav u potpunosti je integriran u SUK, a veze sa istim definirane su kroz poglavlja PUK-a.Naravno svi ovi dokumenti se ?uvaju i kontroliraju u skladu s propisima ISO standarda. Sukladno s dokumentima unutar organizacije, provode se unutarnje kontrole, edukacija zaposlenika, sanitacija tvrtke i ostali zahtjevi norme ISO 9001. Dokaz provedbe zahtjeva su mnogobrojni formulari koje ispunjavaju QM i od njega ovla?tene osobe. Sredi?nji dokument HACCP standarda je HACCP plan. U njemu su identificirane sve prijetnje u svim procesima koji se izvr?avaju u PPK. No kako ne bi to ostalo samo na papiru, unutar proizvodnje mjesta koja su u HACCP planu identificirana kao kriti?ne to?ke, jasno su ozna?ena. Uz svaku kriti?nu to?ku napisana je i korektivna radnja kako bi radnik znao ?to mu je napraviti u slu?aju da ne?to po?e po zlu..NETDo izlaska Jave i .NET-a programiranje je bilo kaoti?no. Postojalo je mno?tvo jezika koji su imali problema prilikom interakcije jednih s drugim. Razvojni programeri su imali dugu krivulju u?enja prilikom prebacivanje s jednog programskog jezika na drugi ili s jednog tipa aplikacije na drugi jer nisu postojali standardni na?ini dizajniranja aplikacija i jer su postojale velike sintakti?ke razlike izme?u jezika. Ovo je samo dio problema.Ti problemi su se nastojali rije?iti razli?itim standardima koji bi slu?ili kao ljepilo koje ?e omogu?iti interoperabilnost, jedan od takvih standarda je COM i COM+. No u praksi rad s ovakvim standardima je bio jako te?ak i neprakti?an. Osim ovog rje?enja rastom aplikacija pristupilo se rje?enju zasnovanom na servisima.Svi ovi nedostaci doveli su do novog programskog modela koji bi trebao omogu?avati:Da aplikacije budu napravljene kao komponente koje ?e se mo?i ponovno koristiti i dijeliti preko interneta, da poti?e razvoj aplikacija kao servisa. Te omogu?ava istinsku interoperabilnost izme?u jezika, ?to zna?i da kod napravljen u jednom jeziku je mogu?e iskoristiti u nekom drugom.Ovaj model je uspje?no implementiran u Microsoftovu platformu - .NET. .NET pojednostavljuje razvoj aplikacija za internet. Ali .NET je puno vi?e od platforme za razvoj za internet, ali namijenjen je prete?no za internet jer su sve druge tehnologije tu zakazale.Prvo izdanje .NET Frameworka predstavljeno je 2002 godine i otad se nadogra? pru?a alate i biblioteke koje omogu?avaju razvojnim programerima da razviju softver za Windows OS mnogo br?e i lak?e. Dok s druge strane .NET krajnjim korisnicima omogu?ava kori?tenje aplikacija koje su kvalitetnije, sigurnije i s vi?e mogu?nosti od klasi?nih aplikacija.Naravno .NET nije ograni?en samo na klasi?ne Windows aplikacije on omogu?ava i izradu i kori?tenje, izme?u ostalog, web aplikacija i servisa.U ovom poglavlju bit ?e opisana .NET radna okolina, programski jezik C# te neke Microsoftove tehnologije poput WPF i WCF-a..NET razvojna okolina .NET radna okolina sastoji od ?etiri glavne komponente:Common Language Specification (CLS)Framework Class Library (FCL)Common Language Runtime (CLR).NET alatiOve ?etiri komponente su nabolje predo?ene na slici ( REF _Ref304295285 \h Slika 41). Kao ?to se vidi na slici dno slike zauzima siva boja tj. operacijski sustav i platforma. U teoriji mo?e biti bilo koji OS, ali ve?inom je to Windows operacijski sustav. Slika 41 NET Framework [14]Povi?e operacijskog sustava nalazi se Common Language Runtime (CLR)- ?uto na slici ( REF _Ref304295285 \h Slika 41).Najva?nija komponenta .NET Frameworka je CLR koja pru?a okru?enje za izvo?enje programa. CLR sadr?i virtualni stroj koji je u mnogo ?emu sli?an Java virtualnom stroju. CLR pru?a niz servisa koje aplikacije mogu koristiti da bi pristupile mnogim resursima (poput nizova, kolekcija itd). [5]Na vi?oj razini CLR aktivira objekte, na njima izvodi sigurnosne provjere, pohranjuje ih u memoriju, izvodi ih i kasnije odla?e u otpad. Po?to CLR "upravlja" izvo?enjem koda takav kod se naziva upravljiv kod (managed code) dok ostali kod je naziva "neupravljiv kod". [5]Druga komponenta .Net-a je NET biblioteku klasa (FCL) - na slici ( REF _Ref304295285 \h Slika 41) crvena boja. Biblioteka je organizirana hijerarhijski u imenske prostore. Klase vezane za ugra?ene API-je nalaze se u System.* ili Microsoft.* imenskom prostoru. Biblioteke obuhva?aju veliki broj klasa, kao npr. klase vezane za rad s datotekama, bazama podataka i sl. Dio .NET biblioteka klasa je Base Class Library (BCL).Base Class Library (BCL) odnosno set osnovnih klasa, uklju?uje mali podskup od cijele biblioteke klasa i glavni je skup klasa koje slu?e kao osnovni API CLR-a. Klase iz mscorlib.dll i dio klasa iz System.dll i System.core.dll-a smatraju se da su dijelovi BCL-a. Framework Class Library (FCL) je nadskup BCL-a i odnosi se na cijelu biblioteku klasa koja se isporu?uje s .NET razvojnom okolinom. Uklju?uje pro?ireni skup biblioteka, uklju?uju?i WinForms, , , Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation i mnoge druge.Sljede?a komponenta .NET radne okoline je Common Language Specification (CLS). Na slici (Slika 41) je to zelena boja. CLS je skup pravila koje moraju po?tivati jezici da bi se nazvali CLS jezikom. Na ovaj na?in je osigurana interoperablinost jezika. Jer svaki jezik koji po?tuje CLS mo?e koristiti i naslje?ivati klase, hvatati iznimke i iskoristiti prednosti polimorfizma drugog jezika. Interoperablinost jezika mo?e pove?ati uporabu ve? postoje?eg koda te na taj na?in pove?ati efikasnost razvoja jezika. Prevoditelji koji su u skladu s CLS-om stvaraju objekte koji mogu me?usobno djelovati. FCL mo?e koristiti u potpunosti bilo koji jezik koji je u skladu s CLS-om. Uz CLS treba i spomenuti Common Type System (CTS). CTS definira kako se deklariraju, koriste i upotrebljavaju tipovi u vrijeme izvo?enja. Dakle pomo?u CLS i CTS .NET razvojna okolina ostvaruje ugra?enu interoperabilnost jezika.Zadnja komponenta .Net razvojne okoline su razvojni alati, na slici ( REF _Ref304295285 \h Slika 41) be? boja. Prije svega to je Visual Studio. Visual Studio je IDE, integrirano razvojno okru?enje koje koristi sve ove gore navedene komponente kako bi izgenerirao .NET aplikaciju. Dakle Visual Studio je poput ljepila koje spaja sve te komponente u jednu cjelinu. Najnovija verzija je 2010. Uz Visual studio tu postoje mno?tvo manjih alata poput IL disassemblera. [5]Verzije .NET-aDanas postoje nekoliko verzija .NET-a. Prva verzija je 1.0 nakon nje izdane su 1.1, 2.0, 3.0 i 3.5, te 4.0.Verzija 1.0 , o?ito, bila je prva verzija .NET-a za operacijske sustave Windows. Izdana je 2002. Ubrzo, sljede?e godine, izdana je nova verzija 1.1. Ona je bila prva ve?a nadogradnja .NET-a. Izdavala se kao dio operacijskog sustava i bila je dio Visual Studia.Sljede?a verzija bila je 2.0. Izdana zajedno s Visual Studiom 2005. Verzija 3.0 izlazi 2006.godine i ve? od po?etka je integrirana u tada novi Microsoftov sustav, Windows Vista. Nedugo zatim, nakon izlaska Visual Studia 2008, nastaje mala nadogradnja u odnosu na .NET 3.0, verzija 3.5. Glavne karakteristike ove verzije su:Windows Presentation Foundation – novi grafi?ki podsustav baziran na XML-u i vektorskoj grafici, koja upotrebljava 3D hardversku podr?ku.Windows Communication Foundation Windows Workflow Foundation Windows Entity FrameworkDanas najnoviji paket Microsoftovog Visual Studia, verzija 2010, u sebi sadr?i tako?er najnoviju ina?icu .NET-a, koja je ve? dosegla verziju 4.0, o kojoj ?e biti vise rije?i u zasebnom poglavlju, budu?i da ?e se aplikacija razvijati u toj verziji. [13].NET 4. 4.0 je zadnja verzija .NET radne okoline. Izdana je 12. travnja. 2010. Verzija 4.0 je donijela mno?tvo novosti, kao ?to su dodane brojne nove klase i imenski prostori, pobolj?ani WPF. Dakle ima mno?tvo novosti al ovdje ?e biti spomenute samo neke najva?nije, a to su:Windows work flow i WCF 4.0Dynamic Language runtimeParalelne ekstenzijeF#Windows work flow i WCF 4.0 su kompletno redizajnirani. U WCF su dodani jednostavniji servisi za konfiguraciju, otkrivanje i rutiranje. Dodani su REST pobolj?anja i workflow servisi. ?to se ti?e samog WWF unijete su temeljite promjene, promijenjen je cijeli programski model. Programski model je postao jednostavniji i robusniji. Te je predstavljena integracija izme?u WCF i WWF.Dynamic Language runtime (DLR) je set servisa koji dodaju sposobnost izvo?enja dinami?ki jezika, kao ?to su LISP, javasricpt, CLR-u. DLR se naslanja na CLR i omogu?ava izvr?avanje ovakvih jezika. Do izlaska DLR-a CLR je mogao samo izvr?avati stati?ki tipizirane jezike kao ?to su C, C++, C#, VB. Paralelne ekstenzije dodane su u .NET 4.0 kako bi dodale podr?ku za paralelno ra?unanje na vi?ejezgrenim sustavima. Tako?er je predstavljen i PLINQ, dodatak za LINQ koji omogu?ava paralelno izvr?avanje. Dodana je i nova biblioteka TBL koja sadr?i paralelne konstrukcije za petlje, funkcije i delegate. Predstavljen je novi jezik F#. F# je mulitparadigmatski programski jezik namijenjen .NET radnoj okolini. Obuhva?a funkcionalno programiranje kao i imperativno i objektno orijentirano. [2]Slika 42 WCF Model [9]Windows Comunication FoundationWCF je dio .NET Frameworka za izgradnju i pokretanje povezanih (distribuiranih) sustava. WCF pru?a unificiranu radnu okolinu za izgradnju sigurnih i pouzdanih servisa. WCF spaja i pro?iruje mogu?nosti distribuiranih sustava, .NET Remoting-a, Web Services i Web Services Enhancements (WSE), za razvoj i distribuciju ujedinjenih sigurnih sustava. Tako?er omogu?ava izgradnju labavo poveznih (eng. loosely coupled) aplikacija baziranih na arhitekturi orijentiranoj servisima koja radi sigurnije i pouzdanije preko razli?itih platforma.WCF pojednostavljuje napor pri razvoju servisno orijentiranih aplikacija pri ?emu spaja razli?ite tehnologije potrebne za razvoj kao ?to su: Enterprise Services, Messaging, .NET Remoting, Web Services, i WSE. Na taj na?in se razvoj aplikacija ubrzava te pove?ava produktivnost. WCF gradi aplikacije sa programskim modelom baziranim na atributima. Predstavljen je kao dio .NET-a 3.0. WCF pru?a model programiranja baziran na servisima koji me?usobno djeluju jedni na druge pri ?emu ne prelaze organizacijske i platformske granice. WCF podr?ava velik broj Web servisa kao ?to su XML, XSD, SOAP, XPath, WSDL i napredne standarde i specifikacije kao WS-Addressing, WS-Policy, WS-Security, WS-Trust, WS-Secure Conversation, WS-Reliable Messaging, WS-Atomic Transaction, WS-Coordination i WS-Policy. Model WCF razvojne okoline najbolje se mo?e predo?iti slikom ( REF _Ref304306678 \h Slika 42). [9]Glavne komponente WCF radne okoline prikazane su na slici. ( REF _Ref304306704 \h Slika 43) Ugovori (eng. contracts) - sloj ugovora je odmah ispod aplikacijskog sloja. Njega developeri koriste kako bi razvili servis. Njegovi dijelovi su ugovor podataka (eng. service contract), ugovor podatka (eng. Data Contract), ugovor poruka (eng. message contract), politike i vezivanje (policies and binding). Ugovor servisa opisuje operacije koje servis mo?e obaviti. Ugovor podatka opisuje tip podatka koji se prikazuje klijentu. Ugovor podatka definira tip podatka koji se ?alje i prima servisu. Primitivni tipovi podataka nije potrebno navoditi u ugovoru podataka jer njihove definicije se nalaza u XML schema definition language dokumentu i klijent ih mo?e identificirati. Za razliku od njih slo?ene tipove klijent ne mo?e identificirati pa se koristi DataContract kako bi se obavijestilo klijenta koji tip podatka se ?alje i prima od metode. Vi?e o ugovorima u sljede?em poglavlju.Zadani format poruka koji se koristi za komunikaciju izme?u klijenta i servera u WCF-u je SOAP format poruka. Ako to ne zadovoljava potrebe mo?e se napraviti svoj format poruka. To s mo?e posti?i kori?tenjem ugovora poruka.Slika 43: Komponente WCF radne okoline [10]Politike i vezivanje specificiraju uvjete koji su potrebni da bi se ostvarila komunikacija sa servisom, kao ?to su sigurnosni zahtjevi, protokol i kodiranje potrebno za povezivanje.Sloj ispod sloja ugovora je sloj izvr?avanja servisa (eng. service runtime). Sadr?i pona?anja koja se mogu dogoditi za vrijeme izvo?enja servisa. Najva?nija pona?anja koje se nalaze u ovom sloju su: Throttling Behavior- kontrolira koliko se poruka obra?uje.Error Behavior - specificira ?to se dogodi kad nastupi gre?ka prilikom izvo?enja servisa. Metadata Behavior - specificira kako i kad su metapodaci dostupni vanjskom svijetu. Instance Behavior - specificira koliko se instanci servisa mora napravit za vrijeme izvr?avanja. Transaction Behavior - omogu?ava povratak transakcije u slu?aju gre?ke.Dispatch Behavior - Kontrolira na?in na koji WCF infrastruktura obra?uje poruke.Ispod sloja izvr?avanja nalazi se sloj poruka (eng. messaging). Sloj poruka se sastoji od kanala. Kanal je komponenta koja obra?uje poruku na neki na?in, npr. autentikacija poruke. Set kanal poznat je pod nazivom stog kanala (eng. channel stack). Kanali su glavna apstrakcija za slanje i primanje poruka za krajnje to?ke (eng. endpoint) Kategoriziraju se u sljede?e skupine:Kanale transporta - obavljaju slanje i primanje poruka sa mre?e. To su protokoli poput HTTP, TCP, named pipes MSMQKanale protokola - implementira protokol baziran na SOAP-u, npr. WS-Security i WS-Reliability Zadnji sloj WCF-a je sloj Aktivacije i smje?taja servisa. Servisi mogu biti smje?teni (eng. hosting) ili izvr?eni, tako da budu dostupni klijentu. WCF servis mo?e biti dostupan klijentu pomo?u sljede?ih mehanizama [10]:IIS - Internet information Service pru?a mno?tvo prednosti ako se servis koristi http kao protokol. Ne zahtjeva host kod da bi aktivirao servis, to se radi automatski.Windows Activation Service-(WAS) je novi proces aktivacijski mehanizam koji se isporu?uje sa IIS 7.9. Uz HTTP baziranu komunikaciju, WCF pomo?u WAS-a mogu?ava servisa i procesa baziranih na drugim protokolima poput TCP-a. Self-Hosting - WCF servis mo?e biti smjestiti i aktivirat kao konzolna aplikacija, WinForms aplikacija ili WPF aplikacija sa grafi?kim su?eljem.Windows Service - WCF mo?e biti smje?ten i aktiviran kao Windows servis, ali tad je pod kontrolomService Control Manager-a (SCM).Komunikacijski ModelSlika 44:komunikacijski modelWCF koristi klijent server model da bi uspostavio komunikaciju izme?u aplikacija. Klijenti mogu direktno pristupiti servisima kroz krajnje to?ke (eng. EndPoint) koje servis izla?e za kori?tenje. Krajnja to?ka nije ni?ta drugo nego definirana lokacija kroz koje se poruke mogu slati i primate. Servis mo?e imat vi?e krajnjih to?aka. Za komunikaciju izme?u klijenta i servera koristi se SOAP format poruka. No osim njega mogu se koristiti i drugi formati poput REST, JSON ili WDSL.Kao ?to je prije ukratko navedenoWCF sloj ugovora sastoji seod sljede?ih glavnih komponenti:Ugovor servisa (service contract)Ugovor operacija (operation contract)Ugovor podataka (data Ccontract)?lan podatka (data member)Njihov odnos se najbolje vidi naslici ( REF _Ref304297014 \h Slika 45) [9]Slika 45: Odnos ugovora WCF servisa [9]Ugovor servisaUgovor servisa je ugovor koji specificira smjer i tip poruke u komunikaciji. U WCF aplikaciji ugovor servisa se implementira kao su?elje ili klasa. Ugovor servisa su ustvari vrata preko kojih aplikacija koristi operacije servisa i svaki servis bi trebao imati bar jedan ugovor servisa. Ugovor servisa se definira ovako:// Student ServiceContract[ServiceContract]public interface IQcsService{ // Define the OperationContact here….}Gore navedeni atribut ServiceContract su?elja IQcsService definira ugovor servisa. Ugovor servisa definira koje su operacije dostupne u tom servisu, operacije poput metoda web servisa. Dakle svaki WCF servis se sastoji od su?elja, u ovom slu?aju IQcsService i klase koja implementira to su?elje. Ako se tom su?elju doda atribut ServiceContract to su?elje postaje ugovor servisa, a sve metode unutar njega su metode koje servis daje na kori?tenje vanjskim aplikacijama. Metode servisa se nazivaju operacije. [9]Ugovor operacijaUgovor operacija (eng. operation contract) definira operacije (metode) koje servis daje na kori?tenje vanjskoj aplikaciji. Da bi operacija bila dostupna vanjskoj aplikaciji, mora joj biti pridodan atribut OperationContract. I to za svaku operaciju, sli?no kao i web metodama u web servisima. [9]Ugovor operacije se definira na sljede?i na?in:// Student ServiceContract[ServiceContract]public interface IQcsService{ // Define the Autenticate OperationContact here…. [OperationContract]AutenticationInfo?Autenticate(string?username,?string?pass); // Define the GetStudentInfo OperationContact here…. ... [OperationContract]int?LoggedIn(string?username,?string?password);… }Ugovor podatkaUgovor podatka (eng. data contract) definira tip sa skupom ?lanova tipa ili poljima koji ?e biti upotrebljeni kao slo?eni podatak u ugovoru servisa. To je labavo spojen (loosely coupled) model koji je definiran izvan implementacije servisa i mogu?e mu je pristupiti sa servisom s neke duge platforme. Da bi definirali ugovor podatka treba primjeniti atribut DataContractna klasu i dodati atribut DataMember na polje unutar klase. Na taj na?in serializator zna seriliziti klase u xml.StudentInformation ugovor podatka mo?e se definirati na ovaj na?in:[DataContract]public class AutenticationInfo{ // Define the Datamembers here….}?lan podatka (eng. data member) specificira tip koji je dio ugovora podatka, koji se koristi kao slo?eni tip ugovora servisa. Da bi se definirao ?lan podatka treba primjeniti DataMember atribut na polje koje se mora serializirati. DataMember atribut se mo?e primjeniti i na privatne ?lanove, te ?e biti serializirani i deserializirani, te ?e biti dostupni korisniku i procesu.DataMember se definira na sljede?i na?in: [DataContract]public class AutenticationInfo{????????[DataMember]????????public?string?Name?{?get;?set;?} ????????[DataMember]????????public?string?Lastname?{?get;?set;?} ????????[DataMember]????????public?int?UserId?{?get;?set;?}???????? [DataMember]?public?List<AutenticationOrganisation>?Organisation?{?get;?set;?} }SOAP, WSDL i UDDIWSDL (Web Service Description Language) je jezik za opis servisa. to zna?i da specificira ?to servis radi, potrebne formate podataka i protokla, lokaciju servisa i drugo. To je u su?tini XML dokument.UDDI (Universal Description, Discovery and Integration) omogu?ava registraciju i pretra?ivanje servisa, pristup ESDL dokumentima. Te je neovisan o platformi.SOAP (Simple Object Access Protocol) Protokol temeljen na XML-u koji omogu?ava slanje poruka izme?u pru?atelja servisa i klijenta. Koriste ga drugi protokoli poput HTTP-a, SMTP-a. One je tako?er neovisan o platformi.Servis prima SOAP poruku od klijenta i vra?a SOAP poruku kao odgovor. SOAP poruka se sastoji od omotnice (eng. envelope) koja ima tijelo i zaglavlje. Zaglavlje je opciono, sadr?i informacije o adresiranju, sigurnosti, transakcijama. Tijelo sadr?i podatke poruke. [11]Evo primjera:<s:Envelope xmlns:a=""xmlns:s=" - envelope" ><s:Header ></s:Header><s:Body ><ReserveRoom xmlns="http:// /ProCSharp/2010" ><RoomReservationxmlns:d4p1=""xmlns:i=" - instance" ><d4p1:RoomName> Hawelka < /d4p1:RoomName ><d4p1:StartDate> 2010 – 06 – 21T08:00:00 < /d4p1:StartDate ><d4p1:EndDate> 2010 – 06 – 21T14:00:00 < /d4p1:EndDate ><d4p1:Contact> Georg Danzer < /d4p1:Contact ><d4p1:Event> White Horses < /d4p1:Event >< /RoomReservation >< /ReserveRoom >< /s:Body>< /s:Envelope>Windows Presentation FoundationWindows Presentation Foundation ili WPF je novi grafi?ki podsustav .NET-a. Predstavljen je zajedno s .NET-om 3.0 i od tada je glavni grafi?ki podsustav .NET-a. Sa svakom novom verzijom .NET-a WPF se unapre?uje i dodaju mu se nove mogu?nosti.Fizi?ki, to je skup .NET sklopova (eng. assembly) i pomo?nih alata. Do izlaska WPF-a, za prikaz UI koristio se WinAPI i kasnije Windows Forms. Windows Forms pru?a upravljiv omota? (eng. managed wrapper) oko Windows API-ija. Windows Forms su postali hit jer su omogu?ili br?u izgradnju aplikacija i sam razvojni programer se mogao koncentrirati na problem. Za prikaz 3D sadr?aja koristio se DirecX i GDI/GDI+.Upravo zbog ovoga, zna?i zbog slo?enosti izrade su?elja i kori?tenja mnogo alata da bi se napravilo jedno su?elje predstavljen je WPF. Napravljen je s namjerom da pru?i unificirani API za izradu sofisticiranih korisni?kih su?elja za Windows operacijske sustave.WPF spaja sve dobre stvari iz razvoja za web, kao style sheet i ozna?ni jezik za opis su?elja, animacija i podr?ka multimediji. Ove komponente su spojene u jednu cjelinu sa stvarima iz tradicionalnog razvoja za desktop kao ?to su integracija sa OS i povezivanje podataka.U WPF-u ove stvari su pobolj?ane i unificirane. Osim ovih stvari WPF podr?ava 3D crtanje i mno?tvo drugih stvari. WPF aplikacije mogu se razvijati kao desktop i web aplikacije. WPF osigurava jasnu razliku izme?u korisni?kog su?elja (eng. UI) i poslovne logike. Za korisni?ko su?elje WPF koristi ozna?ni (eng. markup) jezik koji je nastao iz XML-a tzv. XAML (?itaj zammel). [6]ArhitekturaArhitektura WPF-a ( REF _Ref304371148 \h Slika 46) sastoji se od dijelova koji pripadaju upravljivom kodu i neupravljivom kodu. Ve?i dio pripada naravno upravljivom kodu, ali jedan dio jako bitan pripada neupravljivom. To je Media Integration Layer ili MIL.Slika 46: WPF arhitektura [15]Ustvari to je jedini neupravljivi dio i nalazi se u milcore.dll. On se direktno naslanja na DirectX i slu?i za integraciju s DirectX-om. Dakle kako se mo?e zaklju?iti WPF koristi DirectX za sva iscravanja. MIL osigurava podr?ku za iscrtavanje 2D i 3D sadr?aja animacije. Media kodaci su tako?er podr?ani od strane WPF-a i to kroz windowscodacs.dll. Ovaj dll tako?er pripada neupravljivom dijelu.Upravljivom dijelu pripada Presentation Core, nalazi se u presentationcore.dll, koji osigurava omota? (eng. wrapper) za MIL i implementira core servise. Presentation Framework implementira krajnje elemente UI kao ?to su animacije, layout i data binding. [12]XAMLExtensible Application Markup Language ili XAML je deklarativan jezik baziran na XML-u, a koristi se za inicijalizaciju objekata. Prednost XAML-a je u tome ?to je u potpunosti deklarativan jezik. U deklarativnom jeziku, developer opisuje pona?anje i integraciju komponenti bez uporabe proceduralnog programiranja. To omogu?ava nekome tko ima malo ili nimalo programerskog znanja da kreira cjelokupnu aplikaciju bez programiranja.Uporabom XAML-a u razvoju korisni?kog su?elja omogu?ava razdvajanje modela i pogleda, ?to se smatra dobrom dizajnerskom praksom. XAML se ne koristi samo u WPF ve? ga je mogu?e koristiti i u drugim .NET komponentama kao npr. WWF-u. Naravno i tu se koristi za definiranje UI.XAML radi na principu da se elementi mapiraju u CLR objekte, dok se XAML atributi mapiraju u svojstva (eng. property) i doga?aje (eng. event) tih objekata. XAML datoteke se kompajliraju u .baml datoteke i dodaju se kao resurs u .NET sklop (eng. assembly). Za vrijeme izvo?enja CLR ekstraktira .baml, parsira ga, napravi odgovaraju?e objekte i vizualno stablo kojemu se onda mo?e pristupati iz koda.Zna?i XAML nije ovisan o WPF, mogu ga koristiti i ostali programi. U WPF-u koristi se za opis su?elja. Alati koji se koriste XAML za opis su?elja su Visual Studio, Expression Blend. [12]JednostavnI WPF windows programWPF program je najlak?e napraviti pomo?u visual studija. I to tako da se odabere new project → Wpf Application. Nakon toga Visual Studio ?e izgenerirati projekt koji sadr?i dvije datoteke: App.xaml i MainWindow.xaml. Svaka od ove dvije datoteke ima code behind datoteku u kojoj se nalazi programska logika. App.xaml stvara Application objekt te pokre?e na? program koji se nalazi unutar MainWindow.xaml-a. Program ?e biti jednostavan, sastojat ?e se od jednog dugmeta koji se prostire preko cijelog prozora i koji ?e ispisivati poruku u prozoru nakon ?to se klikne na njega.Xaml datoteka ovako izgleda:<Window?x:Class="WpfApplicationtemp.MainWindow"????????xmlns=""????????xmlns:x=""????????Title="MainWindow"?Height="350"?Width="525">????<Grid>????????<Button?Content="Hello?World!!"???Name="HelloWorld"?VerticalAlignment="Stretch"?HorizontalAlignment="Stretch"?Click="HelloWorld_Click"?/>????</Grid></Window>Dakle sastoji se od tri taga: Window, Grid, Button. Svaki tag mo?e imati atribute koji mogu biti svojstva ili doga?aji. U ovom primjeru imamo jedan doga?aj koji je vezan za tag Button, to je Click. Ovaj doga?aj ima vrijednost HelloWorld_Click, a to je ime obra?iva?a doga?aja koji se nalazi u tzv.?code behind“ datoteci. Ali o tome malo vi?e kasnije. Tag Window?predstavlja objekt Window tj. prozor programa. U njemu se nalaze dva imenska prostora. Jedan je koji mapira sve Windows kontrole u System.Windows.Controls. Drugi je definira Xaml tagove. Grid tag predstavlja grid kontrolu koja slu?i kao kontejner za druge kontrole. Tj. u nju se mogu stavljati druge kontrole kao u ovom slu?aju Button kontrola. U datoteci MainWindow.xaml.cs nalazi se logika programa:using?System.Windows;namespace?WpfApplicationtemp{????public?partial?class?MainWindow?:?Window????{????????public?MainWindow()????????{????????????InitializeComponent();????????}????????private?void?HelloWorld_Click(object?sender,?RoutedEventArgs?e)????????{????????????MessageBox.Show("Hello?World!!!");????????}????}}Kao ?to se vidi u ?code behind“ datoteci nalazi se samo jedna metoda void?HelloWorld_Click (object?sender,?RoutedEventArgs?e)koja je obra?iva? doga?aja (eng. event handler) HelloWorld_Click koji je zapisan u xaml-u. Unutar metode nalazi se stati?ka klasa MessageBox.Show koja prikazuje jednostavnu poruku kad se klikne na dugme. Kao ?to je prije spomenuto imenski prostor sadr?i definicije tagova standardnih WPF kontrola. Ukoliko se koriste ne Microsoftove kontrole potrebno je dodati dodatne imenske prostore. U ovom diplomskom koriste se DevExpress kontrole. DevExpress su set kontrola za Windows Forme, , Silverlight, DelphiVCL i WPF. Ove kontrole su komercijalne pa je u ovom diplomskom je kori?tena probna verzija. Ina?e radi se o jako kvalitetnom i dobrom skupu kontrola koje omogu?avaju lak?i razvoj aplikacija. Kori?tene su ove kontrole:BarManager, RibbonControl, DockLayoutManager, LayoutGroup, NavBarControl. Entity Entity Framework je ORM (eng. Object - Relational Mapping) radna okolina razvijena od strane Microsofta za .NET radnu okolinu. Prije nego se nastavi opisivati Entity Framework potrebno je objasniti ?to je to ORM. ORM zna?i objektno - relacijsko mapiranje. To je programerska tehnika koja se sastoji on seta klasa koje mapiraju relacijski model entiteta u objekte specifi?nog programskog jezika.U po?etku su aplikacije direktno pozivale API-ije baza podataka kako bi mogli komunicirati sa njima. Na primjer API za oracle baze Pro*C se pozivao da bi se moglo pro?itati ili upisati ne?to u Oracle bazu iz C aplikacije. On bi ugra?ene SQL naredbe pretvarao i pozive Oracle biblioteci.Sljede?i korak u pristupu bazama podataka bio je ODBC (Open Database Connectivity). On je razvijen sa namjerom da ujedini sve komunikacijske protokole za razli?ite RDBMS-e. Dizajniran je tako da bude neovisan o programskom jeziku, bazi podataka i operacijskom sustavu. Prema tome aplikacija bi mogla komunicirati sa bilo kojom bazom podataka koriste?i isti kod, samo bi trebala promijeniti odgovaraju?i ODBC upravlja?ki program. Bez obzira da li se koristio ODBC ili neka druga metoda za pristup bazi podataka ostaje jedan problem. Podaci koje vrati baza moraju se nekako prikazati u aplikaciji. Ili kao varijabla ili u slu?aju dana?njih modernih programskih jezika kao klasa. Taj isti set klasa bi se morao ponovno razviti ukoliko se radi nova aplikacija. Ovaj problem rje?ava pojava ORM-a. [16]Kori?tenjem ORM-a baza podataka se predstavlja sa ORM kontekst objektom, koji je specifi?an za svaki programski jezik. Entiti baze podataka poput tablica su predstavljeni sa klasama i vezama me?u tim klasama. Na primjer, recimo da postoje dvije tablice Order i OrderDetail, koje su me?usobno povezane vezom 1 na n. ORM stvara dvije klase koje ?e predstavljati te dvije tablice. Isto tako klasa Order ?e imati i kolekciju koja ?e sadr?avati sve detalje vezane za nju. ORM isto tako vodi ra?una o mapiranju i konekcijama izme?u klasa i baze podataka. Uvo?enjem ORM, baza podataka je aplikaciji predstavljena kroz navedene klase. Aplikaciju ne zanima o kakvoj se bazi radi ve? samo koristi ove klase kako bi dobavila ili spremila podatke. Aplikacija se ne mora brinuti kako se spojiti na bazu podataka, kako napraviti SQL naredbe ili kako upotrijebiti mehanizme zaklju?avanja (eng. locking mechanism). O svemu ovom ORM vodi ra?una.Slika ( REF _Ref304299317 \h Slika 47) pokazuje na?ine kako se mo?e spojiti na bazu. Microsoftova verzija ORM softvera je Entity Framework. Entity Framework je slo?ena radna okolina i trebalo bi puno vi?e prostora za opisati je. Zbog toga ?e biti opisana u kratkim crtama s naglaskom na programerskom dijelu.Sredi?nji dio Entity Frameworka je Entity Data Model (EDM). Njega sa?injavaju tri XML datoteke. Svaka od tih datoteka definira dio modela i baze. Ove datoteke su: Conceptual Slika 47: Na?ini povezivanja na bazu podataka [16]Schema Definition Language (CSDL), Mapping Schema Language (MSL) i Store Schema Definition Language (SSDL).Conceptual Schema Definition Language (CSDL) definira kako se mogu slati upiti na model sa gledi?ta aplikacije. Tj. definira klase koje predstavljaju bazu. Dio koji definira stvaran shemu baze podataka je Store Schema Definition Language (SSDL). SSDL definira izgled tablica i odnose me?u njima. Dio koji povezuje ova dva navedena dijela je Mapping Schema Language (MSL). MSL je odgovoran za mapiranje podataka izme?u CSDL i SSDL-a. [16]Ove datoteke imaju svoju strukturu te ih je mogu?e sam definirati i napisati ru?no. No njih mo?e i izgenerirati Visual Studio te napraviti cijeli model za nas. Takav model je dobar i dovoljan za ovaj diplomski rad. Zbog toga se ne?e ulaziti u obja?njavanje strukture tih datoteka. Detaljniji opis dan je na adresi: Visual Studio izgenerira ova tri dijela u obliku .edmx datoteke. I prakti?ki kad se to dogodi Entity Data Model je spreman za rad, jer Visual Studio stvara sve potrebne klase za rad. Me?u njima je svakako najva?nija klasa koja naslje?uje objekt ObjectContext. Taj objekt upravlja sa svim ?to ima veze sa pristupom podataka. Kao ?to je stvaranje konekcije, transakcije, promjene u vezama. Preko ObjectContext-a se vr?i upisivanje, ?itanje i brisanje podataka.Unutar klasa entiteta postoji set svojstava za svaki entitet unutar sustava. Svako to svojstvo vra?a objekt koji je generi?kog tipa ObjectQuery<T>, T je tip entiteta. Sam ObjectQuery je ugra?ena klasa koja omogu?ava izvr?avanje upita o spremi?te podataka koje je u ovo slu?aju baza podataka. Klase naravno imaju svojstva i relacije koje su definirane putem CSDL-a.Sljede?e ?to treba opisati se na?ini kako postaviti upite na Entity Data Model. Upite je mogu?e izvr?avati na razli?ite na?ine, pomo?u: Entity SQL, Linq to SQL ili Linq to Entities. Entity Sql je verzija T-sql kojoj je omogu?en rad na Entity Framework-u. Entity Framework parsira eSQL te ga transformira u T-sql i vr?i upite o bazu, Pomo?u eSQL-a mogu?e je izvr?avati samo select naredbe. Puno bolji na?in pristupa podataka je pomo?u Linq to SQL ili Linq to Entities. Oni koriste ObjectContext objekt za pristup bazi. [16]LinqLinq (Language integrated query) se pojavio sa .NET-om 3.0. Linq omogu?ava postavljanje upita sli?nih SQL-u u bilo kojem .NET jeziku. Upiti se mogu postavljati na relacijske baze, kao ?to je prije navedeno, na XML datoteke i na objekte. Zbog toga postoje razli?iti tipovi linq-a. Uz linq povezane su neke nove zna?ajke C# jezika. Kao ?to su: lamda izrazi, anonimni tipovi, anonimne funkcije, inicijalizatori, automatska svojstva, var tip...Ova svojstva ne?e biti posebno opisana ve? ?e biti opisana kako se bude dolazio do njih na primjeru. Evo jedan primjer linq upita:var?OrgUsers?=?from?worker?in?databaseEntities.QCS_organzationworker_orgwrkwhere?worker.id_orgwrk_usr?==?usr.idusr?&& worker.IsDeleted?==?false??????select?new????????????????{??????????????????worker.id_orgwrk,??????????????????worker.idorgwrk_dep,??????????????????worker.idorgwrk_wp,??????????????????anization_orgwrk?????????????????};Svaki linq upit po?inje s naredbom from in. U ovo slu?aju je to from?worker?in?databaseEntities.QCS_organzationworker_orgwrkOva naredba je sli?na naredbi foreach, uzima element iz neke kolekcije koja se nalazi desno od klju?ne rije?i in. Iza ove prve naredbe slijedi druga, a to jewhere?worker.id_orgwrk_usr?==?usr.idusr?&& worker.IsDeleted?==?false To je ustvari filter koji ispituje svaki objekt tipa c za neki uvjet. Iza njega slijedi naredba s kojom zavr?ava svaki linq upit. A to je select tj. select?new {??????????????????worker.id_orgwrk,??????????????????worker.idorgwrk_dep,??????????????????worker.idorgwrk_wp,??????????????????anization_orgwrk?????????????????};Ovo je jedina naredba uz order by koja vra?a vrijednost. To je ne?to kao return klju?na rije? u metodama. Rezultat ovog upita bit ?e objekt tipa ObjectQuery<T>. Ovdje treba primijetiti dvije nove stvari. Prva je varijabla tipa var. To ustvari varijabla koja nema tip ve? se on name?e od strane kompajlera nakon ?to on shvati koji se tip nalazi s desne strane. Dakle varijabla tipa var poprima tip od izraza s desne strane. Ne mo?e biti null, te se mora inicijalizirati prilikom deklaracije. Druga novost jenew????????????????{??????????????????worker.id_orgwrk,??????????????????worker.idorgwrk_dep,??????????????????worker.idorgwrk_wp,??????????????????anization_orgwrk?????????????????};To je takozvani anonimni tip. Oni se deklariraju sa var varijablama npr.var p = new {X = 0, Y = 2};Izrazi unutar viti?astih zagrada su inicijalizatori. Oni kao ?to ime ka?e postavljaju vrijednosti svojstava na neku vrijednost. Kad su ve? spomenuta svojstva u .NET-u 3.0 uvedena su automatska svojstva koje nije potrebno pisati, ve? samo navesti imena i oni se sami generiraju od strane kompajlera. Kao u primjeru prije:worker.id_orgwrk, worker.idorgwrk_dep, worker.idorgwrk_wpOvakvu sintaksu kompajler prevodi u:var?result = databaseEntities.QCS_organzationworker_orgwrk.Where( worker=> worker.id_orgwrk_usr?==?usr.idusr?&& worker.IsDeleted?==?false) .Select( worker => new ????????????????{??????????????????worker.id_orgwrk,??????????????????worker.idorgwrk_dep,??????????????????worker.idorgwrk_wp,??????????????????anization_orgwrk?????????????????});Kao ?to se vidi niz metoda s nekim ?udnim izrazima. Ti izrazi su lamda izrazi. Oni nisu ni?ta drugo nego li kra?e i ljep?e zapisane anonimne metode. No da se malo proanalizira jedan lamda izraz: worker=> worker.id_orgwrk_usr?==?usr.idusr?&& worker.IsDeleted?==?false)Ovdje je klju?an operator =>. Izraz lijevo od njega odgovara listi argumenata metode. Ako ih ima vi?e oni mogu biti grupirani unutar zagrada. Desno od operatora => odgovara tijelu metode. Tijelo mo?e imati vi?e izraza u tom slu?aju ih se stavlja unutar viti?astih zagrada. Tako?er mo?e se primijetiti da je kori?tenje tipa u listi argumenata opciono kao i return klju?na rije? u tijelu lamda izraza. Dakle ovaj izraz bi se mogao protuma?iti kao primjeni lamda izraz na ?lanove kolekcije u metodama where i select.Managed Extensibility FrameworkPlugin sustavKako aplikacije rastu s vremena na vrijeme sve ih je te?e odr?avati i dopunjavati sa novim funkcionalnostima. Da bi se omogu?ilo lak?e dodavanje novih funkcionalnosti i olak?alo odr?avanje uvode se sustavi dodataka (eng. plugin). Dodatak ili plugin omogu?ava da se aplikaciji kasnije lako dodaju nove funkcionalnosti. Plugin-ove mogu razvijati izdava?i softvera ali i drugi ukoliko se pridr?avaju odre?enih pravila. Danas sve ve?e aplikacije podr?avaju sustave za upravljanje plugin-ovima.U ra?unarstvu, dodatak (eng. plugin) je skup softverskih komponenata koji dodaju nove mogu?nosti ve?oj softverskoj aplikaciji. Plugin sustav omogu?ava pro?irenje mogu?nosti aplikacije bez da se ona izmjeni ili rekompajlira. Osnovna struktura aplikacije bazirane na plugin-onima prikazana je na slici ( REF _Ref304300250 \h Slika 48).Slika 48: Shema plug in sustava [19]Kao ?to se vidi osnovni dijelovi ovog sustava su aplikacija doma?in (Host), su?elje i samo plugin. Host aplikacija je novisna o plugin-ovima te ne zna kako su oni implementirani i koliko ih je. Da bi se te komponente mogli komunicirati potrebno je definirati su?elje koje ?e bit jednako za sve, dakle svaki plugin ga mora implementirati kako bi ga host aplikacija mogla koristiti. Host tako?er zna kako su?elje izgleda te pomo?u tog su?elja komunicira s plugin-om. Unutar hosta obi?no se definira plugin upravitelj. On vodi ra?una o u?itavanju i upravljanju plugin-a. Postoje vi?e tipova plugin upravitelja. Najjednostavniji plugin upravitelj u?itava plugin-ove jednom, prilikom pokretanja aplikacije. I to obi?no na na?in da se postavi jedan direktorij kao plugin direktorij. Plugin upravitelj pretra?uje taj direktorij za plugin-ove koji implementiraju su?elje kojeg je definirala aplikacija. Drugi, napredniji na?in za implementiranje plugin sustava omogu?ava u?itavanje i iskrcavanje pluginova za vrijeme izvo?enja aplikacije. To za sobom vu?e ?injenicu da se plugin-ovi mogu a?urirati bez da se aplikacija ponovno pokre?e. [18]Ponekad je potrebno da sam plugin koristi mogu?nosti host aplikacije. U tom slu?aju host aplikacija definira su?elje koje je dostupno plugin-ovima tzv. su?elje aplikacije.Sustav plugin-a je mo?e izvesti na tri na?ina u .NET-u. Prvi na?in je da sami razvijete su?elje i host upravitelj pomo?u .NET su?elja, kasnog povezivanja i sklopova. To se izvodi na na?in da se host aplikacija definira u jednom sklopu, su?elje u drugom, a sam plugin u tre?em. Host aplikacija uz pomo? ugra?enih .NET klasa mo?e dinami?ki u?itati sklop sa plugin-om. Ovaj na?in je dobar jer je su?elje definirano u zasebnom sklopu te ga mogu koristiti i drugi programeri za razvoj aplikacija.Osim metode da sami razvijete plugin sustav, Microsoft se pobrinuo da napravi radnu okolinu za plugin-ove. Postoje dvije: MAF i MEF. MAF koristi princip cijevovoda za komunikaciju s plugin-ovima te je slo?eniji za uporabu. U ovom diplomskom koristit ?e se MEF jer je jednostavniji i zadovoljava potrebe diplomskog.MEFKlase potrebne za rad s MEF-om (Managed Extensibility Framework) definirane su u position imenskom prostoru. MEF je prvi put predstavljen s .NET-om 3.5. Osnovni dijelovi MEF-a su: dijelovi (eng. parts) i kontejneri (eng. containers). Dijelovi (eng. parts) su ustvari pluginovi. Oni se definiraju sa atributom Export, kontejner Slika 49: Arhitektura MEF-a [7]pronalazi dijelove u katalogu (eng. catalog). Katalog pronalazi dijelove unutar nekog sklopa ili direktorija, Kontejner spaja kod ozna?en s atributom, Import sa kodom ozna?enim atributom Export i na taj na?in plugin-ove dostupne host aplikaciji.Imports i exports su ustvari atributi pomo?u kojih katalog pronalazi plugin-ove. Pru?atelj exporta pristupa katalogu i nudi mu exporte koji se nalaze u katalogu. Mogu?e je vi?e pru?atelja exporta koji su povezani u lanac. Zatim kontejner upotrebljava pru?atelje exporta kako bi ih spojio s importima.MEF se sastoji od tri kategorije klasa: klase za hosting, primitive i klase za mehanizam baziran na atributima. U klase za hosting spadaju kontejneri i katalozi. Klase primitiva slu?e ako ?eliom napraviti klase koje pro?iruju funkcionalnosti MEF-a. Te na kraju u klase koje implementiraju mehanizam baziran na atributima spadaju Export i Import atributi. [7]Na primjeru opisti ?e se MEF arhitektura. Radi se o dijelu koda iz plugin-a aplikacije. Po?to su plugin-ovi dosta veliki opisani su samo dijelovi koda koji su va?ni da bi se razumjela plugin arhitektura. Primjer se sastoji od tri sklopa: jedan za host aplikaciju, drugi za su?elje, a tre?i za plugin. Prvo ?e se definirati su?elje kojeg plugin mora implementirati.namespace?IQCSPlugInInterface{?????????public?interface?IPlugInInterface????{ ?????PlugInInfo?GetPlugInInfo(); ?????IEnumerable<SidebarItem>?GetSidebarInfo();?????bool?Operate(string?operation);?????bool?GetData(AutenticationInfo?info); ?????bool?SetRights(string?organisation,?string?workplace,?string?name,?string?lastname,?int?right); ?????void?InitPlugIn(); ?????void?ShowToolbar(); ????}}Nakon toga je potrebno definirati plugin. On mora implementirati gore navedeno su?elje:namespace?HACCPmodul{[Export(typeof(IPlugInInterface))]????public?class?HACCP?:?IPlugInInterface, IHostImportInterface????{...????????public?void?InitPlugIn()????????{????????????settingsUi.HostInterface?=?Host;????????????HaccpTeamUI.HACCPTeamHostInterface?=?Host; ????????}...??????public?void?ShowToolbar()????????{????????????????????????HaccpTeamUI.ShowButtons(); ????????????settingsUi.ShowToolbar();????????}... }}atributom Export definira HACCP?klasu kao dostupnu host aplikaciji. Jo? je potrebno definirati host aplikaciju: using?position;using?position.Hosting;...namespace?DXWPFApplication2{public?partial?class?MainWindow?:?DXRibbonWindow,? IHostInterface, IPlugInmportInterface????{...????????[ImportMany]????????public?IEnumerable<IQCSPlugInInterface.IPlugInInterface>PlugInn?{?get;?set;?}...???????void?InitializePlugin()????????{ ...var?catalog?=?new?AggregateCatalog();??????????catalog.Catalogs.Add(new?AssemblyCatalog(Assembly.GetExecutingAssembly()));?????????catalog.Catalogs.Add(new?DirectoryCatalog(Properties.Settings.Default.PlugInFolder,?"*.dll"));????????CompositionContainer?container?=?new?CompositionContainer(catalog); ???????void?InitializePlugin()????????{ ...var?catalog?=?new?AggregateCatalog();??????????catalog.Catalogs.Add(new?AssemblyCatalog(Assembly.GetExecutingAssembly()));?????????catalog.Catalogs.Add(new?DirectoryCatalogvar?batch?=?new?CompositionBatch();batch.AddPart(this);pose(batch);//***glavna?petlja?za?loadanje?pluginaforeach?(IQCSPlugInInterface.IPlugInInterface?test?in?PlugInn){//grupa?modul_modulinfo?=?test.GetPlugInInfo();_modul?=?new?NavBarGroup();..._sidebaritme?=?test.GetSidebarInfo();...}...}Kad se pokrene glavni program pokre?e se InitializePlugin metoda. U metodi InitializePlugin prvo se stvara katalog u kojemu se nalazi popis exporta tj. dodataka. Nakon toga se stvara kontejner koji sadr?i sve plugin-ove koji se nalaze u katalogu. Te nakon toga se pokre?e metoda Compose koja prihva?a kao argumente objekt s definiranim import atributom. Kako objekt tipa MainWindow ima definiran atribut import mogu?e ga je poslati kao argument u metodu. Nakon izvr?enja ove metode exporti se mapiraju u importe te ih je mogu?e koristiti u program. Kao ?to se vidi poziva se metoda_modulinfo = test.GetPlugInInfo();iz plugin-a kako bi se dobavili podaci o plugin-u.Prevo?enje i CILNa platformi .NET programi se ne prevode u izvedbene datoteke, oni se prevode u sklopove (eng. assemblies) koje sadr?e Common Intermediate Language (CIL) upute koje CLR zatim pretvara u strojni kod i izvodi. CIL datoteke koje proizvodi C# gotovo su identi?ne CIL datotekama koje proizvode ostali jezici podr?avani u .NET platformi.C# kod se prevodi u CIL prilikom izrade projekta. CIL se sprema u datoteku na disku. Kada pokrenete program. CIL se ponovno prevodi s Just In Time (JIT) prevoditeljem. Rezultat je strojni kod koji procesor mo?e izvesti. Standardni se JIT prevoditelji pokre?u na zahtjev. Kada se metoda pozove, JIT prevoditelj analizira CIL i proizvodi iznimno u?inkovit strojni kod koji se vrlo brzo izvodi. Dok se program izvodi prevo?enje se provodi samo po potrebi, a jednom preveden kod se sprema u privremenu memoriju da bi se mogao ponovno upotrijebiti. .NET aplikacije se svakim novim pokretanjem postaju sve br?e jer se koristi ve? prevedeni kod. Prije navedeni CLS ovdje dolazi do izra?aja, tj. CLS zna?i da svi .NET jezici Slika 410: Postupak prevo?enja[13] proizvode sli?an kod. To omogu?ava da se objektima stvorenim u jednom jeziku mo?e pristupiti i iz drugog jezika. Stoga je mogu?e osnovnu klasu stvoriti u jeziku , a iz nje izvoditi C#. [5]Programski jezik C#Jezik C# je iznena?uju?e jednostavan. Sadr?i oko 80 klju?nih rije?i i desetak ugra?enih tipova, ali implementira sve moderne programske koncepte. C# pru?a svu podr?ku potrebnu za strukturirano, objektno orijentirano programiranje. C# je sagra?en na temeljima jezika C++ i Java. U ina?ici 2.0 dodani su mu i mnogi va?ni elementi koji su ranije nedostajali, poput generika i anonimnih metoda. Verzija 4.0 donosi jo? neka pobolj?anja kao ?to su: nazivski i opcijski parametri, podr?ka za dinami?ke tipove, varijanca i COM interoperabilnost.U sredi?tu svakog objektno orijentiranog jezika je njegova podr?ka za definiranje klasa i rad sa klasama. Klase definiranju nove tipove, ?to omogu?ava pro?irivanje jezika kako bi se bolje modelirao problem koji se poku?ava rije?iti. C# sadr?i klju?ne rije?i za deklariranje novih klasa, njihovih metoda i svojstava te za implementaciju enkapsulacije (u?ahurivanja), naslje?ivanja i polimorfizma – tri stupa objektno orijentiranog programiranja.U C#-u, sve ?to je potrebno za deklariranje klase nalazi se u samoj deklaraciji. Definicije C# klasa ne zahtijevaju posebne datoteke zaglavlja. Uz to, C# podr?ava novi XML stil dokumentiranja koji pojednostavljuje izradu dokumentacije.C# podr?ava su?elja, koja su poput ugovora s klasom o pru?anju usluga koje su?elje zahtjeva. U C# klasa mo?e naslje?ivati samo iz jedne roditeljske klase, ali mo?e implementirati vi?e su?elja. Kada implementira su?elje, C# klasa ustvari obe?ava pru?iti funkcionalnost koje su?elje zahtjeva.C# pru?a i podr?ku za strukture, tip podatka ?ije se zna?enje zna?ajno promijenilo u odnosu na C++. U C# struktura je ograni?eni jednostavan tip koji prilikom instanciranja manje optere?uje operacijski sustav i memoriju od obi?ne klase. Struktura se ne mo?e naslje?ivati iz klase niti se iz nje mo?e naslje?ivati, ali struktura mo?e implementirati su?elje.C# pru?a potpunu podr?ku za delegate kako bi se omogu?ilo neizravno pozivanje metoda. U drugim jezicima, poput C++, mo?e se prona?i sli?nu funkcionalnost (npr. pokaziva? na metodu), ali delegati su referentni tipovi koji enkapsuliraju metode s posebnim potpisima i povratnim tipovima.C# nudi komponentno orijentirane zna?ajke, poput svojstva, doga?anja i deklarativnih konstrukcija (kao ?to su atributi). Komponentno orijentirano programiranje podr?ava spremi?te metapodataka u kojem se nalazi kod za klasu. Metapodaci opisuju klasu, zajedno s njenim metodama i svojstvima, kao i njene sigurnosne potrebe i druge atribute, poput mogu?nosti serilizacije. Prevedena klasa je, dakle, samostojna jedinica. Stoga, okru?enju koje zna pro?itati metapodatke i kod klase nisu potrebne druge informacije za kori?tenje klase. Ako se koristi C# i CLR, klasi se mogu dodati prilago?eni metapodaci stvaranjem prilago?enih atributa. Isto tako, metapodaci klase se mogu pro?itati s pomo?u CLR tipova koji podr?avaju refleksiju.Prevo?enjem koda zapravo stvara se sklopovlje (eng. assembly). Sklopovlje je kolekcija datotekakoju programer vidi kao jednu dinami?ki povezanu biblioteku (DLL) ili izvr?nu datoteku (EXE). Na .NET platformi sklopovlje je osnovna jedinica za ponovnu uporabu, pra?enje ina?ica, za?titu i razmje?taj.I na kraju treba jo? napomenuti kako C# daje podr?ku i za izravan pristup memoriji pomo?u pokaziva?a u stilu jezika C++. Takav kod se naziva neupravljiv kod i potrebno je upozoriti CLR sakuplja? otpada da ne sakuplja te objekte dok se eksplicitno ne oslobode. [5]ARHITEKTURA ORIJENTIRANA SERVISIMA – SOAUvodSOA (eng. Service-Oriented Architecture) je stil arhitekture koji omogu?ava stvaranje aplikacija koje su napravljene na labavoj povezanosti i interoperabilnosti servisa. Ti servisi me?usobno djeluju preko formalnog su?elja koje je neovisno o platformi i programskom jeziku. Jedan od na?ina implementiranja SOA su Web Servisi. To je tehnologija koja se sastoji od kolekcije standarda koji se mogu upotrijebiti za izgradnju SOA aplikacije. Web Servisi su tehnologija koja je neovisna o proizvo?a?ima i platformi, interoperbilna i podr?avaju je mnogi proizvo?a?i.SOA je princip dizajniranja softvera bazirana na servisima. oslanja se na servise dostupne ra?unalnim mre?ama kao ?to su www, tcp...Arhitektura bazirana na servisima temelji se na labavoj povezanosti. To zna?i da servisi i korisnici koji ih koriste su me?usobno neovisni za razliku od dosada?njeg pristupa gdje su povezani ?to je karakteristi?no za objekte.Da bi neka aplikacija bila nazvana kao SOA potrebno je da zadovolji dva kriterija, a to su da ta aplikacija koristi servise ili da se ta aplikacija koristi kao servis.Za?to je do?lo do ideje razvoja aplikacija kao SOA aplikacija? Prve aplikacije su pisane kao monolitne. Postajale su sve slo?enije i slo?enije. Te samo pisanje programa postaje slo?eno, a iskoristivost postoje?eg koda je nedovoljna. Zbog to ga se krenulo u modularno programiranje kako bi se rije?io taj problem. No s tim rje?enjem do?li su novi problem poput problema s odr?avanjem. Sljede?i korak u razvoju aplikacija bilo je objektno programiranje. Objektno programiranje donijelo je mnogo prednosti, omogu?ilo je izradu kompleksnih aplikacija, te bolju iskoristivost koda. No objektno programiranje tako ima neke nedostatke. Zbog toga je uvedena nova razina apstrakcija za rje?avanje kompleksnosti. To je arhitektura temeljena na komponentama. Takva arhitektura donijela je kvalitetno rje?enje za iskoristivost koda i odr?avanje softvera. Funkcionalnost cjeline podijeljena je na manje funkcije i te funkcije su enkapsulirane u komponente.Arhitektura na komponentama je rije?ila ve?inu problema, no razvojem tehnologija javili su se novi problemi kao ?to su: integracija aplikacija, razli?itost platformi, razli?itost ure?aja, distribuirani softver... [11]Rje?enje ovih problema na?eno je u arhitekturi baziranoj na servisima. Par formalnih definicija SOA:SOA je informacijska i komunikacijska (ICT) arhitektura koja pru?a fleksibilnost potrebnu za implementiranje elemenata poslovnog procesa i postavljanje potrebne ICT infrastrukture u obliku sigurnih, standardiziranih komponenti (servisa) koje se mogu vi?estruko koristiti i me?usobno kombinirati kako bi zadovoljile razli?ite poslovne procese.SOA je ?iroko rasprostranjena ICT arhitektura koja se temelji na labavoj povezanosti (eng. loose coupling), vi?estrukoj iskoristivosti (eng. reuse) i interoperabilnosti izme?u razli?itih programskih i organizacijskih sustavaSOA je aplikacijska arhitektura u kojoj su sve funkcije i usluge (servisi) definirani pomo?u standardiziranog jezika (eng. description language) te posjeduju pristupna su?elja pomo?u kojih se pozivaju s ciljem potpore odre?enim segmentima s ciljem potpore odre?enim segmentima poslovnih procesa. Svaki pristup i interakcija izme?u servisa je neovisna od interakcija izme?u servisa je neovisna od ostalih interakcija i komunikacijskih protokola. Budu?i da su su?elja neovisna o platformama, klijent mo?e pristupati i koristiti servise s bilo kojeg ure?aja, bilo kojeg operacijskog sustava i programskog jezika.Neke od va?nijih karakteristika SOA su: Podr?avanje ineroperabilnosti koja se temelji na standardima, heterogenost, raspolo?ivost i fleksibilnost i sigurno upravljanje komponentama. Va?ni i pojmovi vezani za SOA-u su:Servis: Poslovna funkcija koju obavlja davatelj usluga pa potencijalnog korisnika. Servis prihva?a jedan, dva ili vi?e zahtjeva te nakon obrade vra?a isto toliko odgovora i to kroz standardizirano su?elje. Servisi ne ovise od stanjima drugih funkcija i servis. Tehnologija kori?tena za razvoj servisa se smatra nebitnom informacijom. Cilj svakog servisa je posti?i ?eljene rezultate za korisnika.Service Provider: je strana koja kreira servis kao odgovor na zahtjev korisnika, tj. pru?atelj usluge-Service requestor: je ustvari korisnik servisa koje je dostavio provider. [11]Orkestracija (eng. orchestration): Sekvenciranje servisa i omogu?ivanje dodatne logike potrebne za obradu podatakaStateless: To zna?i da servis nije ovisan o prija?njim stanjima, te stanjima drugih procesa.Discovery (otkrivanje): SOA se oslanja na mogu?nost indetificiranja servisa i njegovih mogu?nosti. Postoje direktoriji koji opisuju servise u svojoj domeni. Binding (povezivanje): Odnos izme?u providera i korisnika je dinami?ki, ?to zna?i da se uspostavlja pomo?u mehanizma za povezivanje u toku interakcije.Nakon upoznavanja s osnovnim pojmovima SOA arhitekture sljede?e ?to treba opisati su komponente koje sa?injavaju SOA-u.Servis: Servis ima su?elje koje je neovisni o platformi i preko kojeg komunicira s okolinom. Servisi se mogu dinami?ki locirati i pozvati te su neovisni o stanjima drugih procesa.Opis servis: kao ?to samo ime ka?e opisuje servis navode?i sve detalje o servisu kao ?to su: parametri, ograni?enja, svrha, na?in kori?tenja...Poruke: Temelj komunikacije SOA-e. Pru?atelj usluge i korisnik usluge komuniciraju izmjenom poruka. Tehnologija koja se koristi za definiranje poruka mora biti neovisna o platformi. To je ve?inom rije? o XML-u.Ogla?avanje servisa: je metoda kojom se potencijalnim korisnicima daje opis servisa.Postoje dvije metode:Pull - potencijalni korisnik ?alje zahtjev za opisom metode.Push - pru?atelj usluga ?alje opis potencijalnim korisnicima (npr. Unicast, Mulitcast)Otkrivanje servisa: Za otkrivanje servisa koristi se Directory Service. Directory service kategorizira servise po kriterijima. Na temelju tih kriterija korisnik mo?e prona?i servis koji mu odgovara. [11]Model arhitekture orijentirane servisimaSOA logi?ki model sastoji se od ?est dijelova: postoje?eg sustava, sloja za prijenos podataka, sloja funkcijskih servisa, sloja poslovnih procesa, sloja poslovnih servisa i prezentacijskog sloj. Ovaj model u su?tini se bazira na principu arhitekture tri razine (eng. three-tier), a to su prezentacijska razina, razina poslovne logike i razina podataka. Ovi dodatni slojevi ili razine slu?e kao apstrakcijski slojevi kako bi osigurali da glavne razine nisu strogo povezane. Na taj na?in se osigurava manja slo?enost implementacije.Va?no je naglasiti da se logi?ki model ne mora uvijek poklapati sa fizi?kim modelom.Prezentacijski sloj (eng. Presentation layer):Prezentacijski sloj obuhva?a korisni?ko su?elje i razli?ite na?ine implementacije kao ?to su windows klijent, web stranica TD.Sloj poslovnih servisa (eng. Business services layer):Ovaj sloj predstavlja ugrubljenu sliku poslovnih servisa i na taj na?in enkapsulira i apstrahira kompleksnost tehni?ke implementacije koja se nalazi ispod toga. Ovakva slika poslovnih procesa jednaka je poslovnim procesima koji nisu vezani za specifi?nu softversku aplikaciju. Ovaj sloj se dalje dijeli na tri dijela, Enterprise Services, Process Services i Event Services. Vi?e o ovim dijelovima malo kasnije.Sloj poslovnih procesa (eng. Business process logic layer):Poslovni procesi se kreiraju, odr?avaju i izvr?avaju u ovom sloju. Ovaj sloj se dijeli na dva djela:Sinkronizirani servisi - sinkroni pozivi se baziraju na jednostavnosti i brzini i imaju ograni?enu koli?inu orkestracije.Asinkronizirani servisi - asinkroni pozivi mogu sadr?avati dugotrajne transakcije ili orkestracije preko razli?itih servisa i slojevaSloj funkcijskih servisa (eng. Functional services layer): [3]Slika 51: SOA Model [3]Sloj funkcijskih servisa je ulazna to?ka za sloj za prijenos podataka. Ovaj sloj ?titi sloj poslovne logike od potrebe da zna kako je implementiran sloj ispod. Time se smanjuje slo?enost poslovne logike i ona ?e ostati nepromijenjena sve dok postoji konzistentno su?elje.Sloj za prijenos podataka (eng. Data transport layer):Ovaj sloj direktno komunicira sa postoje?im sustavom kroz niz razli?itih protokola i tehnologija. Sloj za prijenos podataka je vrlo slo?en jer omogu?ava komunikaciju s razli?itim platformama. Postoje?i sustav (eng. Existing systems layer): Ovaj sloj predstavlja razli?ite postoje?e i zastarjele sustave s kojima sloj za prijenos podataka komunicira.Tipovi XML servisaXML servisi su podijeljeni u dvije osnovne kategorije. Te kategorije predstavljaju servise koji imaju sli?nu namjenu i konfiguraciju. Glavna karakteristika kori?tenja ovih kategorija je u to ?to ubrzava i pojednostavljuje razvoj servisa. [3]Entity Services - predstavljaju jednostavne atomske operacije na entitetu. Entitet u ovom slu?aju mo?e biti jednostavna CRUD operacija.Activity Services - Upravljaju sa nekoliko Entety servisa kako bi omogu?ile izvedbu poslovnih funkcija.Process services - predstavljaju dugoro?ne poslovne procese koji uklju?uju i ?ovjekovu interakciju.Enterprise Services - prestavljaju javne usluge kao Internet/B2B. One zahtijevaju maksimalnu sigurnost. Isto tako ovi servisi zahtijevaju ve?u razinu robusnosti i otpornosti.Infrastructure Services - pru?aju ?este funkcionalnosti drugim servisima.Event Services - obavje?tava pretplatitelje da se neki doga?aj dogodio. Ovo je alternativa "pollingu" koji se koristi kad do?e do promjene podataka. Dominante platforme za razvoj SOA aplikacija su J2EE i .NET iako SOA nije ograni?ena na te platforme. [3]QUALITY CONTROL SOFTWAREQuality Control Software (QCS) je softver koji bi trebao omogu?iti digitalnu implementaciju sustava kontrole kvalitete, ISO 9001 i HACCP-a. Iako je aplikacija zami?ljena da podr?ava cijeli ISO9001 standard, ovdje ?e biti opisano samo onaj dio vezan za HACCP. QCS je napravljena kao vi?erazinska SOA aplikacija. To zna?i da se sama aplikacija sastoji od vi?e slojeva tj. razina. QCS, kao i ve?ina vi?erazinskih aplikacija, se sastoji od tri sloja: podatkovnog sloja, poslovnog sloja i prezentacijskog sloja. Razlog za ovakvu arhitekturu je prije svega skalabilnost, u slu?aju promjene na aplikaciji podjela na razine mo?e uvelike olak?ati obavljanje promjena bez toga da se te promjene odraze na druge slojeve. Navedeno je prije da se tako?er radi o SOA aplikaciji. To zna?i da se aplikacija sastoji od servera koji nudi neki servis i klijenta koji koristi taj servis. Na serverskoj strani su implementirana dva sloja: podatkovni sloj i poslovni sloj. U podatkovni sloj se ubraja sav onaj kod koji ima veze sa upisivanje podataka u bazu i ?itanje tih podataka. Poslovni sloj sadr?i svu poslovnu logiku aplikacije te omogu?uje komunikaciju s klijentom. U klijentu je implementiran prezentacijski koji ima zada?u korisniku prezentirati podatke obrade te omogu?iti komunikaciju korisnika s aplikacijom. Za spremanje podataka kori?tena je baza podataka, MSSQL Server 2008. U narednim poglavljima bit ?e detaljno opisana baza, server i klijent QCS aplikacije.Baza podatakaModeliranje baze podataka pokazalo se kao najte?i problem prilikom dizajniranja QCS-a. Baza podataka je specifi?na po tome ?to u njoj mora biti izmodeliran cijeli poslovni sustav, te u slu?aju lo?eg modeliranja, dizajn aplikacije mo?e biti te?ak pa ?ak i nemogu?. Ovdje ?e biti opisan samo jedan ve?i dio baze tj. sve one tablice koje obuhva?aju HACCP. Iako je to samo jedan dio, on je dosta velik pa ?e biti opisan u nekoliko dijelova. Bazu je najlak?e opisati ako je promatramo kao skup grupa tablica. Me?u tim grupama tablica, naravno postoje veze, ali najdirektnija i najuo?ljivija veza je kroz tablice QCS_organizationworker_orgwrk i QCS_Action_act. Te dvije tablice su ujedno i najva?nije. Prva tablica predstavlja aktivno radno mjesto u nekoj organizaciji gdje se koristi HACCP, a druga predstavlja akcije koje odre?eno radno mjesto mo?e obaviti nad odre?enom tablicom. Po?to u HACCP standardu svaki dokument i svaku akciju je potrebno prvo napraviti pa onda odobriti i izvr?iti, ove dvije tablice su gotovo povezane sa nekom vrstom veze skoro na svaku tablicu u bazi. Dok je QCS_action_act jednostavna, sadr?i samo naziv akcije, QCS_organisationworker_orgwrk je malo slo?enija. Sastoji se od devet polja. ?etiri od ta polja predstavljaju vezu prema tablicama: QCS_workplace_wp, koja sadr?i naziv radnog mjesta, QCS_department_dep, sadr?i odjele organizacije, QCS_user_usr, sadr?i popis korisnika sustava tj. organizacije te QCS_logger_log, koja sadr?i popis vremena kad se pojedini korisnik prijavio i odjavio iz sustava. Dakle po dosad vi?enom radnik organizacije sastoji se od vi?e tablica koje su spojene preko tabliceQCS_organisationworker_orgwrk, gdje jedan zapis te tablice predstavlja jedno radno mjesto u organizaciji. Iz ovoga slijedi da je mogu?e da jedan korisnik sustava mo?e imati vi?e radnih mjesta. Ostala polja tablice QCS_organisationworker_orgwrk su: reportsTo, koje sadr?i primarni klju? tablice reda gdje se nalazi nadre?ena osoba, isHACCPTeam, bolean polje koje identificira da li radnik pripada HACCP timu te isLeaderHACCP, polje koje identificira da li se radi o voditelju HACCP tima. Jo? su ostala dva polja za opisati, jedno je id_orgwrk koje predstavlja primarni klju? tablice, a drugo je organization_orgwrk. Ovo je posebno polje i nalazi se skoro u svakoj tablici, tj. u onim tablicama kojima je to potrebno. Radi se o polju koje sadr?i primarni klju? organizacije i na taj na?in definira koje red tablice pripada kojoj organizaciji. Jer je QCS zami?ljen da bude upotrjebljen u vi?e organizacija. To bi bile te dvije tablice. Sad ?e ukratko biti opisane pojedine grupe tablica. U prvu grupu tablica spadaju tablice koje opisuju organizaciju, odjele organizacija te radna mjesta pojedenih organizacija. U tu grupu spadaju tablice: QCS_organisation_org, QCS_department_dep, QCS_workplace_wp, QCS_phone_ph. Drugu grupu tablica predstavljaju tablice koje su vezane za dokumente. To su redom tablice: QCS_document_docs, QCS_revision_rev, QCS_hardcopy_hc, QCS_norm_nrm, QCS_chapter_ch, QCS_doc_nrm. U tre?u grupu tablica spadaju tablice koje predstavljaju procese, analizu rizika i HACCP plan. Iako se ovdje radi o tri razli?ite stvari one su me?uovisne i zbog tog su stavljene u istu grupu. Tablice koje ovdje pripadaju su: QCS_process_pro, QCS_process_step_ps, QCS_resources_res, QCS_pro_pro, QCS_pro_res, QCS_risk_analysis_plan_rap, QCS_risk_analysis_process_step_raps, QCS_hazard_analysis_hs, QCS_HACCP_plan_haccp, QCS_HACCP_process_step_hps.Zadnja skupina tablica predstavlja tablice koje predstavljaju obrasce. Iako ISO 9001 ima puno vi?e obrazaca, ovdje su implementirane samo one koje imaju veze sa HACCP-om. Tablice su: QCS_obkk02_kk02, QCS_obpr21_pr21, QCS_obkk01_kk01, QCS__obkk03_kk03, QCS_obpr14a_pr14a, QCS_obpr06_pr06, QCS_work_order_wo, QCS_obpr07_pr07, QCS_obtr01_tr01 i QCS_temperature_temp.Slika 61: Prva grupa tablicaJo? treba spomenuti tablice koje su vezane za tablicu QCS_organisationworker_orgwrk. Jedna od njih je QCS_ToDoList_tdl u kojoj se nalazi popis akcija koje korisnik mora obaviti, prije spomenuti QCS_logger_log, u koje se nalaze vremena kad se neki korisnik prijavio i odjavio o sustav te tablica QCS_modul_access_right_mar. QCS sustav bi trebao osigurati da svatko ne mo?e vidjeti niti mijenjati svaki dio aplikacije. Tj. QCS bi trebao osigurati pristup pomo?u rola. To se u bazi o?ituje kroz dva tipa tablice.Jedan je QCS_modul_access_right_mar gdje je za svakog korisnika zapisano pravo pristupa svakom modulu klijenta. Tri su razine pristupa. 0 korisnik nema pravo pristupa modulu, 1 korisnik mo?e pristupiti modulu, ali ne mo?e mijenjati podatke. 2 korisnik mo?e mijenjati podatke. Zna?i u ovoj tablici, za svakog korisnika, jedan red predstavlja pravo pristupa jednom korisniku. Polja ima koliko i modula u klijentu te svako polje mo?e poprimiti vrijednosti 0,1,2 ovisno o pravu pristupa za pojedini modul. Drugi tip tablice vezane za pravo pristupa su tablice naziva QCS_xxx_access_right_xxx. Ove tablice su vezane za svaku pojedinu tablicu baze i u njoj su definirana prava pristupa korisnika pojedinom retku tablice za koju je vezan. xxx se odnosi na zadnja tri slova tablice za koju je ova tablica vezana. Ova vrsta tablica sadr?i popis korisnika i njihova prava pristupa odre?enom redu tablice. Pomo?u Slika 62: Tablice vezane za korisnika sustavaova dva tipa tablica osigurano je pravo pristupa unutar aplikacije. Dakle recimo da postoji korisnik sa pravom pristupa 2 modulu dokumenti. On ?e mo?i pristupiti tom modulu., raditi nove dokumente brisati postoje?e, ali ako postoji neki dokument kojem je pravo pristupa postavljeno na 0 taj ga korisnik ne?e mo?i mjenjati. Jo? je va?no spomenuti i notaciju koja se koristila za ozna?avanje tablica i polja.Svaka tablica je ozna?ena na na?ina da prva tri slova ozna?avaju aplikaciju, iza njih dolazi naziv tablice, a nakon naziva skra?enica naziva. Ovi dijelovi su odvojeni podvlakom. Polja unutar tablice su ozna?ena svojim nazivom iza kojeg dolazi skra?enica tablice kako bi se naglasila pripadnost toj tablici. Jedino primarni klju?evi imaju oznaku id iza koje je sljedi skra?enica tablice. Strani klju?evi imaju oznake id iza koje slijedi skra?enica tablice i tablice na koju pokazuje. Kompletna shema baze nalazi se u prilogu.Jo? na kraju mora se spomenuti i tipove korisnika aplikacije i baze. Dva su tipa, administratori i korisnici. Administratori mogu pristupati svemu dok obi?ni korisnici mogu pristupati ovisno o svojim pravima. Prilikom instalacije baze dodaje se test organizacija, odjel, radno mjesto i admin korisnik.ServerPrilikom dizajniranja servera glavni preduvjet je bio da bude skalabilan tj. u slu?aju uvo?enja novih standarda kontrole kvalitete, da je mogu?e dodati serveru nove mogu?nosti uz male preinake u kodu. To je postignuto kori?tenjem WCF servisa. Prednost ovakvog na?ina je u tome da ukoliko se ?eli dodati nove funkcionalnosti jednostavno se napravi novi servis i priklju?i se postoje?em. Svi servisi se moraju negdje postaviti kako bi ih drugi mogli koristiti. U slu?aju QCS-a servisi se pokre?u unutar QCS servera. QCS Server je mala aplikacija jednostavnog dizajna. Njezina prvenstvena zada?a je pokretanje i zaustavljanje servisa. ?to se ti?e samog izgleda aplikacije vrlo je jednostavan: sastoji se od dva gumba, jedan za pokretanje servera, a drugi za zaustavljanje servera. Aplikacija nije nametljiva te kad se je minimizira ona se postavi u programskoj traci (eng. system tray) i tu obavlja svoju zada?u. Logika aplikacije je tako?er jednostavna. Sastoji se od toga da se metodom InitService();inicijalizira WCF servis ili servisi. Te ovisno o tome da li se klikne na gumb start ili stop pokre?e se servis. Inicijalizacija servisa obavlja se kroz nekoliko koraka. Prvo se inicijalizira ServiceHost objekt koji se nalazi u imenskom prostoru System.ServiceModel. Njemu se kao argument ?alje tip servisa tj. su?elje servisa. Nakon toga se definira EndPoint tj. krajnja to?ka preko koje klijent mo?e komunicirati s servisom. U EndPoint metodi definiraju se ABC servisa. Tj. Adresa servisa, zapisana je u app.config datoteci te se mo?e mijenjati po potrebi. B ozna?ava na?in komunikacije (eng. binding), za QCS odlu?eno je da ?e se koristiti netTcpBinding jer ?e se aplikacija koristiti unutar jedne organizacije tj. mre?e. I na kraju C, ozna?ava ugovor odnosno njime se definira sve operacije i podaci koji su na raspolaganju klijentu. I to je to sad jedino ?to treba napraviti je pokrenuti ili zaustaviti servis. Iz ovog se vidi kako je lako dodati nove mogu?nosti postojanoj aplikaciji, samo treba definirati novi servis unutar servera. Ne treba se mjenjati postojani servis. Za potrebe diplomskog razvijen je QCSservice servis koji pru?a sve metode potrebne klijentu vezane za HACCP. Servis se sastoji od dva dijela: QCSDataBaseModel-a i samog servisa. QCSDataBaseModel je Entity Framework model i predstavlja podatkovni sloj aplikacije.Slika 63 Prozor server aplikacijeVi?e o Entity Frameworku je bilo rije?i ranije. Prednost QCSDataBaseModel je u tome ?to ga sam razvojni alat izgenerira na temelju postoje?e baze. On sadr?i objekte koji predstavljaju tablice baze te se sam brine o komunikaciji s njom. Ovo je dobar princip jer nigdje nije kori?ten SQL kako bi se pristupilo podacima ve? je to napravljeno poznatom sintaksom C# i LINQ-a kao da se pristupa bilo kojem drugom objektu. Dio podatkovnog sloja i cijeli poslovni sloj implementirani su unutar dvije datoteke koje predstavljaju QcsService. To su IQcsService.cs i QcsService.cs. Unutar IQcsService.cs datoteke kao ?to se mo?e pretpostaviti definirano je su?elje servisa i tipovi podataka koje ?e servis primati i slati. Ovo se su?elje koristi prilikom definiranja krajnjih to?aka. Metode i tipove podataka tako?er ?emo podijeliti u grupe kako bi bilo lak?e pratiti. Prvu grupu predstavljaju metode i tipove koji su vezane za op?e stvari vezane za servis. Operacije koje se tu ubrajaju su:Tablica 61: Prva grupa operacijaAutenticationInfo Autenticate(string username, string pass);bool IsServiceAvailable();int LoggedIn(string username, string password);bool LoggedOff(int logID);SuperVisor GetSupervisor(int workplaceId);List<Task> GetTasks(int workPlaceId);Tipovi podataka koji tu ubrajaju:Tablica 62: Tipovi prva grupeAutenticationInfoAutenticationOrganisationAutenticationWorkPlaceAutenticationUserAccessRightSuperVisorTaskOperacije SuperVisor GetSupervisor(int workplaceId); iList<Task> GetTasks(int workPlaceId); imaju zada?u osvje?avanja po?etnog ekrana klijenta sa novim podacima. Vi?e o po?etnom ekranu bit ?e kad se bude opisivao klijent. Za sad operacija GetSupervisor na temelju vrijednosti primarnog klju?a radnog mjesta dobavlja podatke o radnikovoj nadre?enoj osobi, tako da on u svakom trenutku zna kome se mo?e obratiti kad mu ne?to zatreba. Dakle klasa Supervisor sadr?i podatke o korisnikovu ?efu. Operacija GetTasks dobavlja sve zada?e koje korisnik mora obaviti. Ove informacije dobiva iz tablice QCS_ToDoList_tdl. Klasa Task se sastoji od tri elementa: Opisa radnje, predlo?enog datuma izvr?enja i modula u kojem se ta radnja treba obaviti.Operacija AutenticationInfo Autenticate(string username, string pass);prima kao argumente korisni?ko ime i lozinku, provjerava da li postoji ti podaci u bazi te ako postoje vra?a objekt tipa AutenticationInfo koji sadr?i sve podatke potrebne klijentu da se pokrene. Ukoliko ne nai?e na te podatke u bazi vra?a null referencu. AutenticationInfo objekt sa?injavaju sljede?i elementi. Ime i prezime korisnika, njegov primarni klju? u tablici te lista objekata tipa AutenticationOrganisation. Objekt tipa AutenticationOrganisation predstavlja organizacije u kojima je korisnik prijavljen kao radnik. Elementi AutenticationOrganisation su ime organizacije i lista objekata tipa AutenticationWorkPlace. Tip AutenticationWorkPlace predstavlja radno mjesto korisnika unutar organizacije. Elementi tipa AutenticationWorkPlace su primarni klju? radnog mjesta, naziv radnog mjesta, primarni klju? tablice QCS_modul_access_right_mar, te objekt tipa AutenticationUserAccessRight. AutenticationUserAccessRight je ustvari objekt koji sadr?i tip Dictionary<> u kojem su spremljeni par klju? i vrijednost. Klju? u ovom slu?aju je ime modula, a vrijednost razina pristupa. Dakle AutenticationInfo sadr?i sve podatke koji su potrebni da bi se identificiralo korisnika, a to su ime, prezime, sve organizacije u kojima radi i sva radna mjesta koja obavlja. Operacija IsServiceAvailable samo provjerava da li je servis pokrenut. Vra?a true ako je false, ako nije. Sljede?e dvije operacije odnose se na pra?enje korisnika u sustavu. Prva operacija int LoggedIn(string username, string password);zapisuje vrijeme u tablicu QCS_logger_log kad se korisnik logirao u sustav, vra?a vrijednost primarnog klju?a tog zapisa. Druga operacija bool LoggedOff(int logID);na temelju vra?ene vrijednosti klju?a zapisuje vrijeme kad se korisnik odjavio iz sustava. Sljede?a grupa operacija i tipova odnosi se na modul organizacija. Operacije koje ovdje pripadaju su:Tablica 63: Operacije modula organizacijaList<Organisation> GetOrganisations();List<string> GetAllDepartments();List<string> GetAllWorkplaces();bool UpdateOrganisation(Organisation updateOrganisation);bool UpdateDepartment(Department updateDepartment);bool UpdateWorkplace(DepartmentWorkPlace workPlace);bool DeleteDepartment(Department department);bool DeleteWorkplace(DepartmentWorkPlace workPlace)Tipovi: Tablica 64: Tipovi vezani za modul organizacijaOrganisationPhoneDepartmentDepartmentWorkPlaceOperacija List<Organisation> GetOrganisations();vra?a listu tipa Organisation. Tip Organisation predstavlja organizaciju tj. se atribute koji se nalaze u tablici QCS_organisation_org, a to su vrijednost primarnog klju?a, ime organizacije, adresu organizacije, elektroni?ka po?ta i web stranica. Uz ova polja objekt tipa Organisation sadr?i i listu tipa Phone i listu tipa Department. Tip Phone predstavlja telefone organizacije. Po?to se radi o listi mogu?e je zaklju?iti da organizacija mo?e imati vi?e telefona. Tip Department predstavlja odjel organizacije. Elementi tipa Department su DepartmentId koji sadr?i vrijednost primarnog klju?a, DepartmentType koji sadr?i informaciju o tipu odjela, DepartmentTitle sadr?i ime odjela te dvije liste. Jedna je kao i kod tipa Organisation, Phone predstavlja popis svih telefona, a druga je DepartmentWorkPlace koja predstavlja radno mjesto koje se nalazi u pojedinom odjelu. Kao ?to vidimo radi se o klasama koje su dosta sli?ne grupi Autentication klasa. Operacijebool UpdateOrganisation(Organisation updateOrganisation);bool UpdateDepartment(Department updateDepartment);bool UpdateWorkplace(DepartmentWorkPlace workPlace);osvje?avaju podatke u tablicama QCS_organisation_org, QCS_phone_ph, QCS_department_dep i QCS_workplace_wp. Koriste prije opisane klase. Grupe klasa namijenjenih za brisanje podatakabool DeleteDepartment(Department department);bool DeleteWorkplace(DepartmentWorkPlace workPlace); su specifi?ne po tome ?to one ustvari ne bri?u podatke iz tablice, ve? postavljaju polje isDeleted tablice u true ?ime obavje?tavaju server da ubudu?e ne koriste te retke tablice tj. da ih vodi kao obrisane. Razlog zbog ?ega je ovo napravljeno je u tome ?to ve?ina obrazaca mogu biti ispunjena ili odobrena od korisnika i odjela koje ve? ne postoji. Ukoliko bi ih obrisali vi?e ne bi imali zapisa o tome tko je te obrasce ispunio. Na ovaj na?in ne gubi se podaci vezani za pojedine obrasce. Sljede?a skupina operacija i klasa pripadaju modulu korisnici. Tu se ubrajaju ove operacije:Tablica 65: Operacije koje pripadaju modulu korisniciList<UserOrganisation> GetUsers();int AddUser(UserWorkPlace wp); bool DeleteUser(UserWorkPlace deletewp);bool UpdateUser(UserWorkPlace wPloa);bool UpdateAccessRights(AutenticationUserAccessRight accessRight, int orgwrk);Tablica 66: Tipovi modula korisniciUserOrganisationUserDepartmentUserWorkPlace Operacija GetUsers kao ?to je za i pretpostaviti dobavlja se korisnike sustava. Ona vra?a listu tipa UserOrganisation koja predstavlja organizaciju, odjele i korisnike te organizacije. UserOrganisation klasa je sli?na klasama Organsation i AutenitacationOrganisation. Klasa koja je specifi?na za ovu grupu je UserWorkPlace. Ona sadr?i sve podatke vezane korisnika te organizacije, poput naziva radnog mjesta, imena prezimena itd.int AddUser(UserWorkPlace wp);bool UpdateUser(UserWorkPlace wPloa);bool DeleteUser(UserWorkPlace deletewp) su jako sli?ne operacije jer koriste istu klasu kao argument. AddUser dodaje novi zapis u tablicu QCS_organisationworker_orgerk, UpdateUser osvje?ava te podatke, a DeleteUser bri?e podatke postavljaju?i element tablice IsDeleted u true. U ovoj grupi klasa preostaje jo? samo za opisati operacijubool UpdateAccessRights(AutenticationUserAccessRight accessRight, int orgwrk);Kad se doda novi korisnik dodaje se i novi zapis u tablicu QCS_modul_access_right_mar sa vrijednostima 0. To zna?i da taj korisnik nema pravo pristupa niti jednom dijelu aplikacije. Ukoliko mu se ?eli omogu?iti pristup potrebno je pozvati operaciju UpdateAccessRights koja ?e na temelju vrijednosti u klasi AutenticationUserAccessRight postaviti prava pristupa za tog korisnika. Klasu AutenticationUserAccessRight smo prije opisali, a drugi element je vrijednost primarnog klju?a korisnika. Pomo?u toga se to?no odredi kojem se korisniku ?eli omogu?iti prava.Operacije koje su potrebne HACCP modulu su:Tablica 67: Operacije Haccp modulaList<HaccpDocs> GetHaccpMeeting(int orgId);bool UpdateHaccpMeeting(HaccpDocs hd);bool AddHaccpMeeting(HaccpDocs hd);bool DeleteHaccpMeeting(HaccpDocs hd)List<Norms> GetNorms();List<HaccpTeam> GetHaccpTeam();bool SetHaccpTeam(List<HaccpTeam>);HaccpSettings GetSettings();Bool SetSettings(HaccpSettings);List<Process> GetProcess(int org);List<RiskAnalysis> GetRiskAnalysis(int org);bool SetRiskAnalysis(RiskAnalysis);bool DeleteRiskAnalysis(RiskAnalylsis);List<HaccpPlan> GetHaccpPlan(int org);bool SetHaccpPlan(HaccpPlan);bool UpdateHaccpPlan(HaccpPlan);bool DeleteHaccpPlan(HaccpPlan)Tipovi koji idu uz prije navedene operacije su:Tablica 68: Tipovi Haccp modulaHaccpDocsNormsHaccpSettingsHaccpTeamRiskAnalysisHaccpPlanZadnja skupina klasa obuhva?a operacije i klase vezane za obrasce. Tu spadaju operacije: Tablica 69: Operacije modula obrasciNewForm(Form form);bool UpDate(Form form);bool DeleteForm(Form form);Te o veliki skup klasa koje predstavljaju pojedini obrazac. No jedna klasa je svima zajedni?ka. Radi se o kontejner klasi Form. Ona se sastoji od dva elementa. Prvi element opisuje o kojem se obrascu radi, a drugi element tipa object sadr?i klasu koja predstavlja taj obrazac. Naravno kao ?to mo?emo vidjeti klasu obrasca potrebno je pretvoriti u objekt te kasnije na serveru je pretvoriti natrag u originalni tip. Da nije ovako napravljeno bilo bi potrebno napraviti po tri nove operacije za svaki obrazac. U svrhu diplomskog implementiran je jedan obrazac pod nazivom OB-KK-02 – kontrolnik temperature. On je predstavljen pomo?u tri klase: KK02Record, KK02Action i RecordAccessRight. KK02Record predstavlja jedan zapis. Elementi tog zapisa su prostorija, vrijeme, opis, lista akcija i prava pristupa. Svaka akcija koja se primjenjuje na obrazac predstavljena je klasom KK02Action koja naslje?uje klasu Action. Pod akcijom se podrazumijeva izrada, odobravanje i verificiranje. Prema tome KK02Action sadr?i naziv akcije, datum akcije i odgovornu osobu. Klasa RecordAccessRight se sastoji od rje?nika kojemu je klju? vrijednost primarnog klju?a tablice QCS_organisationworker_orgwrk, a vrijednost pravo pristupa tj. 0,1,2.Kao ?to je prije navedeno sve ove klase i operacije deklarirane i definirane su u dvije datoteke, QcsService.cs i IQcsService.cs. U QcsService nalazi se implementacija svih operacija, dok se deklaracija operacija i tipova podataka nalazi u IQcsService.cs. Ove dvije datoteke prakti?ki sa?injavaju servis QCS aplikacije, a taj servis se pokre?e i odr?ava unutar server aplikacije QCSserverComponent.KlijentSljede?i sloj aplikacije je prezentacijski sloj. On prezentira sadr?aj korisniku i omogu?uje korisniku da interakciju sa sustavom. Prezentacijski sloj QCS-a je klijent aplikacija. Ona je zami?ljena kao aplikacija sa plugin-ovima koja bi trebala sadr?avati razli?ite plugin-ove koji bi trebali obavljate razli?ite funkcije. Svaki plugin bi trebao pru?ati neke od funkcionalnosti koje zahtijevaju standardi za kontrolu kvalitete ISO 9001 i HACCP. Zami?ljeno je da postoje deset plugin-a koji bi trebali u potpunosti enkapsulirati kontrolu kvalitete. Za potrebe ovog rada razvijena su ?etiri dodatka: organizacija, korisnici, haccp, i dio obrazaca, vi?e o njima kasnije. Ovakav na?in razvijanja programa je uzet u obzir prije svega jer je preglednije i lak?e razvijati aplikaciju, a drugi razlog je taj ?to se standardi za kontrolu kvalitete mijenjaju i dopunjavaju pa na ovakav na?in je lak?e dodati nove i izmijeniti postoje?e funkcionalnosti.QCS klijent sastoji se od dva WPF prozora. Prvi prozor je prozor za prijavu. U njemu korisnik upisuje svoje korisni?ko ime i lozinku. Prozor za prijavu kontaktira server preko operacije Autentacate(string username, string pass);U slu?aju da takav korisnik ne postoji log in prozor obavje?tava o gre?ci i ponovno omogu?ava unos. Ukoliko takav korisnik postoji server vra?a objekt tipa AutenticationInfo kojeg prozor za prijavu proslje?uje prozoru MainWindow koji je ustvari aplikacija doma?in (eng. plugin host).Da bi uop?e mogli razviti plugin sustav potrebno je definirati su?elje kojeg ?e dijeliti dodatak i host aplikacija. Su?elje koje mora implementirati dodatak definirano je unutar datoteke IQCSPluginInterface.cs. Metode koje sadr?i to su?elje su: PlugInInfo GetPlugInInfo(); IEnumerable<SidebarItem> GetSidebarInfo(); bool Operate(string operation); bool GetData(AutenticationInfo info);bool SetRights(string organisation,string workplace;string name, string lastname, int right);void InitHost();void ShowToolbar();Metoda GetPlugInInfo dobavlja objekt tipa PlugInInfo. Tip PlugInInfo sadr?i op?e informacije o dodatku kao ?to su naziv, verzija opis i ikona. Ina?e svi tipovi koje koriste dodaci i host aplikacija definirani su unutar posebne biblioteke koja se zove TypeLibrary. Na ovaj na?in ukoliko netko ?eli razvijati za QCS svi tipovi su dostupni ako se biblioteka doda u projekt. Sljede?a metoda je GetSidebarInfo. Ova metoda vra?a kolekciju tipa SidebarItem. Slika 64: Forma za prijavuVi?e o tipu SidebarItem ?e biti rije?i kasnije kad bude opisivalo su?elje MainWindow-a. Za sad dosta je re?i kako SidebarItem sadr?i informacije potrebne host aplikaciji kako bi nacrtala elemente koje su potrebni plugin-u. Pomo?u metode Operate; host aplikacija pokre?e akcije u plugin-u. Koju ?e akciju pokrenuti ovisi o argumentu metode koji je tipa string. Vrstu akcije i na?in na koji ?e biti implementirana metoda Operate u potpunosti ovisi o dizajneru plugin-a. Naziv akcije nalazi se unutar klase tipa SideBarItem. Metoda GetData bi trebala imati funkcionalnost osvje?avanja podataka unutar dodatka na temelju objekta tipa AutenticationInfo. InitPlugIn metoda ima ulogu dodatne inicijalizacije plugin-a ukoliko cijelu inicijalizaciju nije mogu?e obaviti u konstruktoru plugin-a. Metoda ShowToolbar omogu?uje dodatku da kontrolira koja ?e se dugmad pojaviti u alatnoj traci. Osim su?elja preko kojeg host aplikacija komunicira sa plugin-om, ukoliko se uka?e potreba da dodatak koristi neke metode hosta potrebno je napraviti novo su?elje koje ?e te metode otkriti dodatku. U slu?aju QCS hosta to je su?elje IHostInterface. Metode ovog su?elja su:bool RefreshData(); bool SetFocus(string module); CurrentUser GetCurrentUser();i svojstvoQcsService.IQcsService ServiceClient { get; } Metoda RefreshData kao ?to samo ime ka?e osvje?ava podatke unutar host aplikacije. SetFocus metoda stavlja odre?eni plugin kao aktivni unutar host aplikacije, ovisno o argumentu. GetCurrentUser omogu?ava plugin-u da sazna koje je trenutno aktivno radno mjesto i organizacija unutar host aplikacije. Podaci o tome nalaze se u klasi CurrentUser. CurrentUser kao i svi ostali tipovi definiran je unutar TypeLibrary biblioteke. Svojstvo ServiceClient omogu?ava dodatku da komunicira sa serverom. Naime preko ovog svojstva host otkriva operacije servera. Dakle host aplikacija vodi ra?una o komunikaciji s serverom a pomo?u IHostInterface otkriva operacije koje su dostupne dodatku. Osim ova dva su?elja koja definiraju komunikaciju izme?u plugin-a i host-a postoje jo? dva su?elja koja su potrebna da MEF obavi spajanje plugin-a sa host-om i host-a sa plugin-om. To su IPlugInmportInterface i IHostImportInterface. IPlugInmportInterface sadr?i svojstvo IEnumerable<IQCSPlugInInterface.IPlugInInterface> PlugInn { get; set; }kojeg ?e MEF, o MEF-u je bilo govora ranije, spojiti sa plugin-om koje implementira su?elje IQCSPlugInInterface.IPlugInInterface, a su?elje IHostImportInterface sadr?i svojstvo IHostInterface Host { get; set; }kojeg ?e MEF spojiti sa host-om koji implementira su?elje IHostInterface.Osim su?elja koje definira komunikaciju izme?u host aplikacije i dodatka potreban je nekakav upravitelj koji ?e upravljati s u?itavanjem i upravljanjem plugin-a. No da bi se razumjela struktura i na?in rada upravitelja dodataka (eng. plugin manager) potrebno je razumjeti vizualni izgled host aplikacije, jer je plugin manager ovisan o njoj. Slika 65: Po?etna stranica QCS klijentaSu?elje host aplikacije izgra?eno je pomo?u DevExpress kontrola. To je set profesionalnih kontrola koji omogu?ava brzu i laku izgradnju slo?enih su?elja. To je glavni razlog kori?tenja tih kontrola. Izgled host aplikacije definiran je u datoteci MainWindow.xaml. Glavni element unutar xmal datoteke je BarManager. On je kao korijenski tag i svi ostali tagovi se nalaze unutar njega. On se sastoji od dva glavna dijela: BarManager.Items i DockPanel. BarManager. Items je ustvari kolekcija elemenata koji se pojavljuju i koriste unutar BarManager-a. Oni se mogu koristiti kasnije bilo gdje unutar xaml-a ukoliko se definira link na njih. Elementi mogu biti DevExpress kontrole napravljene za rad s BarManager-om. Ve?inom su to kontrole koje odgovaraju standardnim WPF kontrolama. Drugi dio BarManagera je tag DockPanel. Kao ?to ime ka?e unutar ovog taga mogu se smjestiti drugi tagovi odnosno kontrole. DockPanel pozicionira elemente, koji se nalaze unutar njega, u prozoru. DockPanel sadr?i tri taga: RibbonControl, RibbonStatusBarControl, DockLayoutManager. RibbonControl je tag koji predstavlja Ribbon toolbar kontrolu. RibbonControl ima mnogo svojstava, jedno svojstvo je ApplicationMenu gdje se definiraju linkovi na prije definirane BarManagerItem elemente. Tagovi koji se mogu na?i unutar RibbonControl-a su RibbonDefaultPageCategory, RibbonPage, RibbonPageGroup. Ovi tagovi sa?injavaju stranice Ribbon radne trake i oni ?e biti kori?teni od strane upravitelja dodataka za iscrtavanje gumbova koji su potrebni plugin-u. RibbonDefaultPageCategory predstavlja standardnu kategoriju stranice radne trake. Ukoliko je potrebno mogu se definirati i druge kategorije. Unutar kategorije nalazi se tag ili skup tagova RibbonPage koji predstavljaju stranicu trake s alatima. Svaka stranica sastoji se od jedne ili vi?e grupa, RibbonPageGroup. Te grupe sadr?avaju poveznice prema BarManagerItem elementima. Ovi tagovi sa?injavaju stranice Ribbon radne trake i oni ?e biti kori?teni od strane plugin manager-a za iscrtavanje gumbova koji su potrebni plugin-u.Drugi tag unutar DockPanel taga je RibbonStatusBarControl. Ovaj tag "zaka?en" je za dno prozora. On sadr?i dvije poveznice na BarManagerItem tagove, tj. na dva combobox-a. Tre?i, a ujedno i najva?niji element je DockLayoutManager.Ova kontrola slu?i za postavljanje izgleda. Njezini djeca tagovi su dva LayoutGroup taga. Prvi LayoutGroup tag sadr?i navigacijsku kontrolu NavBarControl, a drugi LayoutPanel tag gdje bi se trebalo u?itavati korisni?ko su?elje plugin-a.Posebno zanimljiv tag je tag koji predstavlja NavBarControl. Svaka NavBarControl kontrola mo?e imati jednu ili vi?e NavBarGroup, svaka NavBarGroup jednu ili vi?e NavBarItem. Upravo NavBarControl sa svojom djecom poslu?it ?e upravitelju dodataka za pristup pojedinim dodacima.Sad kad je opisan izgled stranice mo?e se objasniti i na?in rada upravitelja dodataka. Po?to se izgled sastoji host aplikacije sastoji od ribbon radne trake, navigacijske kontrole koja je smje?tena na lijevoj strani sredi?njeg dijela koji bi trebao sadr?avati korisni?ko su?elje do?lo se do ideje da se napravi set klasa koji bi trebao opisati izgled i funkcionalnosti gumba u radnoj traci i plugin manager bi ih trebao znati pro?itati i u skladu s tim i izvesti. Isto tako svaka grupa NavBarControl kontrole bi trebala predstavljati jedan plugin, a kontrole unutar nje dijelove dodatka. Prema tome sve informacije koje plugin manager pro?ita iz plugina trebali bi se spremiti u NavBarControl kontrolu. I ovisno o tome koji se modul odabere u NavBarControl kontroli to bi se su?elje iscrtalo LayoutPanel i gumbi dodali u radnu traku. Ukratko plugin manager u?ita dodatak i spoji ga sa jednom grupom unutar NavBarControl kontrole, ovisno na koji se dodatak klikne upravitelj dodacima iscrta potrebno korisni?ko su?elje i gumbe te postavi zadana prava pristupa. Plugin manager se sastoji od nekoliko metoda:void InitializePlugin();SetRights();ShowModule_Click(object sender, EventArgs e);private void Action_ItemClick(object sender, ItemClickEventArgs e);bool?EnableDisable(string?page,?bool?enable);bool?EnableDisable(string?page,?string?group,?bool?enable);bool?EnableDisable(string?page,?string?group,?string?button,?bool?enable);Metoda InitializePlugin kao ?to ime ka?e pretra?uje zadani direktorij te inicijalizira dodatke. Metoda prvo iz objekta tipa AutenticationInfo popunjava dva combobox-a vrijednostima. Jednoga, vrijednostima dostupnih organizacija a drugoga dostupnim radnim mjestima. Nakon toga uz Pomo? MEF radne okoline svojstvu PlugInn, koje vra?a IEnumerable<IQCSPlugInInterface.IPlugInInterface>, pridru?uje plugin-ove. Nakon vi?e ili manje uspje?nog pridru?ivanja foreach petljom se prolazi kroz kolekciju, i za svaki dodatak u kolekciji stvara se jedna grupa i jedan element te grupe u NavBarControl kontroli. Po?to standardna NavBarItem kontrola nije bila dovoljno dobra, napravljena je nova kontrola koja naslje?uje NavBarItem kontrolu i dodaje joj nekoliko novih svojstava i metoda. Dodatna svojstva su:public FrameworkElement UI { get; set; }; public List<ToolbarPage> GetToolbarPage { get; set; };public int AccessRight { get; set};FrameworkElementUI svojstvo sadr?i referencu na korisni?ko su?elje plugin-a, AccessRight sadr?i pravo pristupa tog plugina-a na temelju kojeg ?e kasnije metoda SetRights postaviti prava nad ostalim elementima u dodatku. GetToolbarPage svojstvo sadr?i listu klasa koje opisuju radnu traku i stranice unutar radne trake i gumbe unutar stranice. Ove klase su: ToolbarPage, ToolbarPageGroup, ToolbarButton. One su tako?er definirane u TypeLibrary biblioteci. ToolbarPage sadr?i podatke o imenu stranice, kategorije kojoj pripada listu objekata tipa ToolbarPageGroup. ToolbarPageGroup klasa sadr?i ime grupe i liste objekata tipa ToolbarButton. ToolbarButton klasa sadr?i ikonu, ime gumba i akciju koju gumb obavlja.Slika 66 HACCP ModulOsim ovih svojstava NavBarItemExtend, kako je nazvana klasa koja naslje?uje NavBarItem, ima i tri doga?aja (eng. event). doAction, setRights i refreshData. Ovim doga?ajima se pridodaju metode: bool Operate(string operation); GetData(AutenticationInfo info): bool SetRights(string organisation, string workplace, string name, string lastname, int right)iz plugin-a. Te ?e uz pomo? ovih doga?aja NavBarContol kontrola i EditBarButton kontrola mo?i pokretati metode plugin-a.Nakon ?to se InitPlugin metoda pro?eta kroz sve elemente svojstva PlugIn i postavi elemente NavBarControl kontrole pokre?e se druga metoda upravitelja dodataka, a to je SetRights;. Nakon njezinog izvr?enja postavlja se po?etna stranica host aplikacije, ali o njoj vi?e kasnije. Natrag na SetRights metodu. Ova metoda prvo o?itava koja je organizacija i radno mjesto aktivno. Nakon tog prolazi kroz objekt tipa AutenticationInfo i pronalazi radno mjesto. Nakon toga svakoj grupi NavBarControl kontrole postavlja vrijednost polja AccessRight na pravo pristupa za selektirano radno mjesto. Ukoliko je pravo pristupa nula onemogu?uje tu grupu, ukoliko je jedan postavlja 1 kao pravo pristupa svakom elementu te grupe i poziva metodu SetRights(barEditItemLocation.EditValue.ToString(); barEditItem4.EditValue.ToString(), _info.Name, _info.Lastname, 1);kako bi to isto napravio i plugin. Sljede?a metoda se poziva svaki put kad se klikne na neki element NavBarControl kontrole. To je ShowModule_Click metoda, a ona je ustvari obra?iva? doga?aja (eng. event handler) na doga?aj Click NavBarItemExtend objekta. Ova metoda na temelju Liste objekata tipa ToolbarPage koje sadr?i selektirani NavBarItemExtend iscrtava grupe radne trake i gumbe. Te gumbima postavlja svojstva kao ?to su pravo pristupa i naziv akcije te pridodaje obra?iva? doga?aja Action_ItemClick; koji bi trebao obra?ivati Click doga?aj gumba. Naravno originalna klasa BarButtonItem nije zadovoljavala potrebu pa je zbog toga napravljena klasa koja je naslje?uje, BarButtonItemExtend. Ona ima dva dodatna svojstva string GetAction { get; set; } koje opisuje akciju koju gumb obavlja i int AccessRight{ get; set; } koje sadr?i pravo pristupa gumbu. Tri preoptere?ene metode EnableDisable omogu?uju plugin-u da odlu?uje koji ?e se dijelovi alatne trake prikazati a koji ne.Zadnja metoda koja sa?injava upravitelj dodataka jevoid Action_ItemClick(object sender, ItemClickEventArgs e);Ova metoda je ustvari obra?iva? doga?aja svih gumba u radnoj traci. Metoda prvo provjerava da li korisnik ima pravo izvr?iti akciju, to radi tako ?to provjeri svojstvo AccessRight. Ako ima dovoljnu razinu prava pristupa pokre?e metodu Operate, a argument dobiva kao svojstvo BarButtonItemExtend objekta.Slika 67: Tab Dokumenata unutar HACCP modulaOve metode, kao ?to je re?eno prije, ove metode sa?injavaju plugin manager, koji je sredi?nji dio host aplikacije. Jo? je vrijedno spomenuti kako postoji posebna grupa unutar NavBarContol kontrole koja se zove ?Home“. Ona predstavlja po?etnu stranicu host aplikacije. Po?etna stranica je zami?ljena tako da korisnika obavijesti o teku?im akcijama koje mora napraviti te mu omogu?ava da vidi tko mu je nadle?na osoba. Po?etna stranica je napravljena kao korisni?ka kontrola koja se instancija u host aplikaciji. Home kontrola se sastoji od dvije manje korisni?ke kontrole, Boss kontrole i liste ToDoItem kontrole. Boss kontrola pru?a informacije o nadle?noj osobi, a ToDoItem predstavlja jednu akciju koju korisnik mora obaviti. Boss Kontrola se sastoji od tri textbox-a koji predstavljaju radno mjesto, ime i kontakt podatke nadle?ne osobe. ToDoItem se sastoji od dvije label kontrole u kojima pi?e datum akcije i opis te gumba koji kad ga se klikne odnosi korisnika u odgovaraju?i modul. InitHome metoda inicijalizira home kontrolu na zadane vrijednosti. Metoda poziva operaciju servera GetTask koja na temelju vrijednosti primarnog klju?a tablice QCS_organisationworker_orgwrk dobavlja podatke iz tablice QCS_ToDoList_tdl. Nakon ?to dobavi podatke metoda ih ubacuje u listu ?iji su objekti tipa ToDoItem. Jedina preostala metoda Host aplikacije koju je vrijedno spomenuti je InitConnection. Njezina zada?a uspostava komunikacije s serverom. To radi na na?in da definira krajnju to?ku komunikacije, EndPoint i na temelju tog EndPoint-a otvara komunikacijski kanala uz pomo? metode _qcsServiceClient = ChannelFactory<QcsService.IQcsService>.CreateChannel(new NetTcpBinding(), endPoint);.Kao ?to se mo?e vidjeti koristi tcp protokol za komunikaciju. Opisom InitConnection metode gotov je opis host aplikacije, ona jo? sadr?i nekoliko obra?iva?a doga?aja koji su potrebni da bi aplikacija mogla raditi. Od njih najva?niji su private void barEditItemLocation_EditValueChanged(object sender, RoutedEventArgs e);private void barEditItem4_EditValueChanged(object sender, RoutedEventArgs e);Ove metode su obra?iva?i doga?aja dva combobox-a koji se nalaze u statusnoj traci host aplikacije. Jedan sadr?i popis organizacija u kojima radi korisnik, a drugi popis radnik mjesta koje korisnik obavlja unutar organizacije. U ve?ini slu?ajeva jedan korisnik se nalazi unutar jedne organizacije i radi na jednom radnom mjesto no ima slu?ajeva gdje to nije tako. Zbog toga su postoje ova dva combobox-a koji bi trebalo omogu?iti lak?e snala?enje korisnika. Inicijalno aplikacija postavlja prvu organizaciju kao aktivnu te prvo upisano radno mjesto kao aktivno radno mjesto. U slu?aju da korisnik ?eli to promijeniti on jednostavno odabere ono ?to ?eli iz combobox-eva. Ako se odabere druga organizacija pokre?e se barEditItemLocation_EditValueChanged obra?iva? doga?aja. On jednostavno pro?e kroz popis organizacija unutar objekta tipa AutentictionInfo, i kad prona?e organizaciju, njezina radna mjesta u?ita u combobox koji predstavlja popis radnih mjesta, te postavlja prvo radno mjesto kao inicijalno. To radi tako da popuni svojstvo EditValue nazivom tog radnog mjesta. Kad se postavi EditValue svojstvo okida se doga?aj koji pokre?e obra?iva? doga?aja barEditItem4_EditValueChanged. Po?to svako radno mjesto nema isti pristup modulima barEditItem4_EditValueChanged ima zada?u postaviti po?etnu stanicu kao aktivni modula, zatim postaviti prava pristupa ostalim dodacima te to sve iscrtati. To posti?e tako da pokre?e metode SetRights, ShowModule_Click i InitHomePage.Host aplikacija sve svoje postavke sprema u app.config datoteku. Te postavke uklju?uju, direktorij dodataka, adresu servera. Da bi se sprije?ilo korisnika da pi?e po app.config datoteci Host aplikacija ima mali prozor s postavkama gdje korisnik mo?e promijeniti direktorij plugin-a. Ovom prozoru se pristupa preko File izbornika host aplikacije. Ovim je u potpunosti opisana host aplikacija koja mo?e primati dodatke koji implementiraju IQCSPlugInInterface.IPlugInInterface i IQCSPlugInInterface.IHostImportInterface su?elje.ModuliQCS sustav je zami?ljen kao sustav od 10 plugin-a tj. modula od kojih svaki obavlja neku funkcionalnost: organizacija, korisnici, dokumenti, procesi, auditi, preduvjetni program, nesukladnost, haccp, edukacija, obrasci. Za potrebe diplomskog rada razvijene su ?etiri plugina: Organizacija, Korisnici, Haccp i jedan mali dio obrazaca.Dizajn samog plugin-a, kako je prije navedeno, u potpunosti ovisi o dizajneru al plugin mora imati implementirana su?elja IQCSPlugInInterface.IPlugInInterface i IQCSPlugInInterface.IHostImportInterface. Me?utim navedeni plugin-ovi su implementirani na isti na?in. Svaki dodatak se sastoji od jedne .cs datoteke i jedne ili vi?e .xmal datoteka. cs datoteka bi trebala implementirati su?elja plugin-a. U njoj bi se trebao definirati broj i izgled gumba plugina, informacije o pluginu te broj "poddodataka", te metode GetPlugInInfo, GetSidebarInfo, InitPlugIn, Operate, GetData, SetRights, Host. Datoteka .cs svakom "poddodatku" pridodaje instancu .xmal datoteke. Dakle .cs datoteka se pona?a kao kontrolna datoteka koja upravlja s plugin-om.Modul OrganizacijaModul Organizacija je dizajniran po gore navedenm na?inu. Dakle sastoji se od jedne cs datoteke gdje je implementirano IpluginInterface. U njemu se definirani svi gumbi i ?podmoduli“ modula. Unutar dodatka instancirani su korisni?ke kontrole koje predstavljaju korisni?ko su?elje dodatka. Ovaj modul omogu?ava dodavanje novih organizacija, odjela i radnih mjesta.Modul KorisniciModul korisnici je jako sli?no dizajniran kao prije navedeni modul Organizacija. Korisni?ko su?elje mu je napravljeno pomo?u tab kontrole. Ovaj modul omogu?ava uvid u odjele i radna mjesta organizacije. Tako?er omogu?ava dodavanje i brisanje korisnika te trenutni uvid u broj korisnika koji koriste sustav. Va?no je napomenuti da ovaj i prethodni modu su dostupni samo administratorima.Modul HACCPHACCP modul je najva?niji u cijeloj pri?i. Njegova je primarna zada?a omogu?iti korisniku uvid u procese, analizu rizika te izradu HACCP plana. Modul se sastoji od nekoliko ?podmodula“. HACCP Tim, Procesi, Analiza rizika, HACCP Plan i postavke. HACCP tim omogu?ava izbor ljudi koji sa?injavaju HACCP tim, omogu?ava spremanje i pregledanje izvje?taja sa HACCP sastanka te pregled dokumenata HACCP politike.Modul ObrasciModul obrasci zami?ljen je tako da ima onoliko“podmodula“ koliko ima odjela u organizaciji. Za potrebe ovo rada napravljen je samo jedan ?podmodul“, a to je proizvodnja. Unutar svakog ?podmodula“ nalaze se digitalizirani obrasci. Digitalizirani su pomo?u tab kontrole. Svaki tab predstavlja jedan obrazac. Po?to ima mnogo obrazaca u ovom radu je obra?en samo jedan radi primjera.ZAKLJU?AKKontrola kvalitete bitan je element u svakoj organizaciji koja se bavi proizvodnjom i preradom hrane. Ona dokazuje ozbiljnost neke organizacije i otvara put za suradnju s drugim organizacijama. Naime ukoliko neka organizacija posjeduje neki od standarda za kontrolu kvalitete prije ?e ostvariti neku poslovnu suradnju nego organizacija koja je nema. Kontrola kvalitete isto tako daje sigurnost kupcima prilikom kupnje proizvoda. ISO organizacija je definirala niz standarda za kontrolu kvalitete. Oni su svi obuhva?eni oznakom 9000, a me?u njima je najpopularniji ISO 9001 standard. Integralni dio ISO 9001 standarda je i HACCP. Odnosno standard za sigurnost hrane. Prilikom uvo?enja HACCP, na tradicionalan na?in, stvara se mno?tvo dokumenata koji dodatno optere?uju zaposlene. Kao dokaz provo?enja HACCP standarda nastaju mno?tvo obrazaca. Dakle stvara se golema koli?ina dokumenata tj. papira koja samo ote?ava rad. Tu nastupa ra?unarstvo, odnosno aplikacije. Osnovna zada?a aplikacije za kontrolu kvalitete i sigurnosti hrane je olak?anje izrade plana aktivnosti i smanjenje opsega dokumentacije te kroz jednostavno su?elje olak?anje uvo?enja i provo?enja HACCP standarda. To je ujedno i glavna zada?a QCS aplikacije. Aplikacije je napravljena i predstoji implementacija kod korisnika.LITERATURASriSamp (2003), “What is .NET”, s interneta?:, zadnji pristup: 2011-04-27Shivprasad koirala (2009), “.NET 4.0 FAQ Part 1” -- The DLR, s interneta:, zadnji pristup: 2011-05-15Dave Oliver (2006), “SOA Logical Model”, s interneta: , zadnji pristup: 2011-08-10Arnon Rotem-Gal-O, “What is SOA anyway?”, s interneta: , zadnji pristup: 2011-08-10Jesse Liberty (2002), “Programming C#, Second Edition”, O'Reilly Media, Inc., 978-0-596-00309-8Jesse Liberty (2003),”Programming C#, Third Edition”, O'Reilly Media, Inc., 978-0-596-00489-7Christian Nagel, Bill Evjen, Jay Glynn, Karli Watson, Morgan Skinner (2010), “Professional C# 4 and .NET 4”, 978-0-470-50225-9, CanadaJoseph Albahari, Ben Albahari (2010), “C# 4.0 in a Nutshell, Fourth Edition”, O’Reilly Media, Inc., 978-0-596-80095-6Deepthi Viswanathan Nair (2008),”A Windows Communication Foundation (WCF) Overview”, s interneta; , zadnji pristup: 2011-08-16Mike Thom (2011), “WCF Architecture”, s interneta: , zadnji pristup: 2011-08-17Igor Tomi?i?, Biljana ?arkovi?, Nikola Rebernik (2006), “ARHITEKTURA TEMELJENA NA SERVISIMA”, s interneta: (2).pdf, zadnji pristup: 2011-8-20Link group (2008), “Pojam i arhitektura WPF-a, uvod u Xaml”, s interneta: , zadnji pristup: 2011-6-26Wikipedia, “NET Framework”, s interneta: , zadnji pristup:2011-05-15Wilson Mar, “MS dot Net Architecture”, s interneta: , zadnji pristup: 2011-09- (2009), “WPF Application Quality Guide”, s interneta: , zadnji pristup: 2011-09-11Mike Liu (2011), “LINQ to SQL: Basic Concepts and Features”,s interneta: , zadnji pristup: 2011-08-26Amro Khasawneh (2007), “Understanding LINQ (C#)”, s interneta: , zadnji pristup: 2011-08-26Halil ibrahim Kalkan (2011), “A Simple Plug-In Library For .NET”, s interneta: , zadnji pristup: 2s011-08-27Wikipedia, “Plug-in (computing)”, s interneta: (computing), zadnji pristup: 2011-08-27Vesna ?erja, “Osnovni elementi sustava upravljanja kvalitetom u proizvodnji lijekova”, s interneta: , zadnji pristup: 2011-09-10Marko Mesari?(2011), “Ukratko o normi ISO 9001”, s interneta: , zadnji pristup: 2011-09-10Gumhalter Karolyi, L. (2005) ?Primjena programskog rje?enja u implementaciji HACCP sustava“, s interneta: , zadnji pristup: 2011-04-11International trade centre: ?An introduction to HACCP“, s interneta: , zadnji pristup: 2011-05-10Wikipedia: ?Hazard analysis and critical control points", s interneta: , zadnji pristup: 2011-04-11Hrvatski-izvoznici: ?HACCP standard“, s interneta: , zadnji pristup: 2011-04-11PPK karlova?ka mesna industrija d.d. (2009), ?POSLOVNIK INTEGRIRANOG SUSTAVA UPRAVLJANJA KVALITETOM I SIGURNOSTI HRANE“PRILOZIKazalo slika i tablicaKazalo slika TOC \h \z \c "Slika" Slika 41 NET Framework [14] PAGEREF _Toc304304181 \h 14Slika 42 WCF Model [9] PAGEREF _Toc304304182 \h 17Slika 43: Komponente WCF radne okoline [10] PAGEREF _Toc304304183 \h 19Slika 44:komunikacijski model PAGEREF _Toc304304184 \h 21Slika 45: Odnos ugovora WCF servisa [9] PAGEREF _Toc304304185 \h 22Slika 46: WPF arhitektura [15] PAGEREF _Toc304304186 \h 27Slika 47: Na?ini povezivanja na bazu podataka [16] PAGEREF _Toc304304187 \h 31Slika 48: Shema plug in sustava [19] PAGEREF _Toc304304188 \h 36Slika 49: Arhitektura MEF-a [7] PAGEREF _Toc304304189 \h 38Slika 410: Postupak prevo?enja[13] PAGEREF _Toc304304190 \h 42Slika 51: SOA Model [3] PAGEREF _Toc304304191 \h 49Slika 61: Prva grupa tablica PAGEREF _Toc304304192 \h 53Slika 62: Tablice vezane za korisnika sustava PAGEREF _Toc304304193 \h 54Slika 63 Prozor server aplikacije PAGEREF _Toc304304194 \h 56Slika 64: Forma za prijavu PAGEREF _Toc304304195 \h 65Slika 65: Po?etna stranica QCS klijenta PAGEREF _Toc304304196 \h 67Slika 66 HACCP Modul PAGEREF _Toc304304197 \h 70Slika 67: Tab Dokumenata unutar HACCP modula PAGEREF _Toc304304198 \h 72Kazalo tablica TOC \h \z \c "Tablica" Tablica 61: Prva grupa operacija PAGEREF _Toc304371491 \h 56Tablica 62: Tipovi prva grupe PAGEREF _Toc304371492 \h 57Tablica 63: Operacije modula organizacija PAGEREF _Toc304371493 \h 58Tablica 64: Tipovi vezani za modul organizacija PAGEREF _Toc304371494 \h 59Tablica 65: Operacije koje pripadaju modulu korisnici PAGEREF _Toc304371495 \h 60Tablica 66: Tipovi modula korisnici PAGEREF _Toc304371496 \h 60Tablica 67: Operacije Haccp modula PAGEREF _Toc304371497 \h 61Tablica 68: Tipovi Haccp modula PAGEREF _Toc304371498 \h 62Tablica 69: Operacije modula obrasci PAGEREF _Toc304371499 \h 62Popis oznaka i kraticaHACCPHazard Analysis Critical Control PointSUKSustav Upravljanja KvalitetomISOInternational Organization for StandardizationWPFWindows Presentation FoundationWCFWindows Communication FoundationCLSCommon Language SpecificationFCLFramework Class LibraryCLRCommon Language RuntimeBCLBase Class Library?LINQLanguage Integrated QueryCTS Common Type SystemWWFWindows Workflow FoundationVBVisual BasicSOAPSimple Object Access ProtocolWDSLWeb Services Description LanguageRESTRepresentational State TransferJSONJavaScript Object NotationUDDIUniversal Description, Discovery and IntegrationGDIGraphics Device InterfaceXMLEXtensible Markup LanguageXAMLExtensible Application Markup LanguageMILMedia Integration LayerUIUser InterfaceORMObject-Relational MappingODBCOpen Database ConnectivityAPIApplication Programming InterfaceEDMEntity Data ModelCSDLConceptual Schema Definition LanguageMSLMapping Specification LanguageSSDLStore Schema Definition LanguageMAFManaged Add-in FrameworkMEFManaged Extensibility FrameworkCILCommon Intermediate LanguageJITJust-in-timeCOM Component Object ModelSOAService-Oriented ArchitectureWWWWorld Wide WebTCPTransmission Control ProtocolICTIinformation And Communication TechnologyJ2EEJava 2 Platform Enterprise EditionOstali prilozi i dodaciPrilog 1. Shema Baze-9683752360295Prilog 2. Osobna evidencija Specifikacija ZahtjevaZatra?eni su sljede?i zahtjevi od strane naru?itelja, PPK M.I. Karlovac, za aplikaciju QCS:Korisni?ki ZahtjeviGlavini korisni?ki zahtjev je digitalizacija postoje?e implementacije ISO9001 i HACCP standarda u tvornici PPK M.I. Karlovac. A to podrazumljva sljede?e zahtjeve:Za?tita od neovla?tenog pokretanja aplikacijeDodavanje, mjenjanje i brisanje korisnika/radnikaKontrola pristupaIzrada izvje?taja nad svakom komponentomDostupnost aplikacije i svih njenih djelovaMogu?nost ispisa svih izvje?tajaDigitalizaciju dokumenata tj. dodavanje, mjenjanje i brisanje dokumenataKontrola svih dokumenata te refernciranje s ostalim dokumentima.Pristup dokumentima ovisno o pravima pristupaModeliranje procesa i odre?ivanje koraka procesaDodavanje, brisanje i mjenjanje procesaMogu?nost izrade plana audita i pra?enja njegove provedbeMogu?nost izrade plana edukacije i pra?enja provedbeIzrada plana sanitacije i odr?avanja Mogu?nost prijave nesukladnosti i plana rije?avanja nesukladnostiIzrada analize opasnostiIzrada HACCP planaImenovanje HACCP timaDigitalizacija ?to ve?eg broja obrazacaGrafi?ka analizaTrenutni uvid u hierarhiju organizacijeSistemski ZahtjeviTehnologijeZa izradu aplikacije koristit ?e se Microsoftove tehnologije i to:.NET i C# kao jezik za izradu same aplikacijeSQL Server kao relacijska baza podataka u kojoj ?e biti spremljeni svi podaci.Hardverski zahtjeviTeba osigurati ra?unalo s konfiguracijom:Procesor: 1GHzRAM: 512 MBHDD: 40DirectX 10 grafi?ka karticaBrza veza s internetomNa ra?unalu treba biti instaliran .NET 3.0 ili vi?e kako bi aplikacija mogla ispravno raditi.Plan Projekta Pivis Zapisnici PPKZapisnik28.03.2011KarlovacSastanak je sazvaoJurica Grgi?evi?NAMJENA sastankaUpoznavanje s tvrtkom i procesima u proizvodnjiSudioniciJurica Grgi?evi?, Ivan La?eta, Tomislav Knapi?, Tomislav ?ub?i?, Robert Filipovi?, Mirela MiljakUpoznavanje tvrtke i procesa u tvrtciRASPRAVAPredstavljanje tvrtke, informacijskog sustava i procesa proizvodnjeZaklju?ci Nakon dolaska u postrojenje , upoznali smo se sa dvojicom informati?ara Tomislavom i Tomislavom, koji su bili na?i doma?ini. Prvo su nas upoznali sa dijelovima postrojenja tj. Upravom, proizvodnjom i ostalim zgradama. Nakon toga jedan od Tomislava zadu?en za upravljanjem ERP-om upoznao me je sa njihovim rje?enjem CSB sustavom, dok je drugi Tomislav upoznao kolegu La?etu s mre?nom infrastrukturom. Moje zapa?anje je kako oboje imaju kvalitetno znanje i razumljevanje o sustavu i procesima koji se odvijaju u proizvodnji.To zaklju?ujem na temlju njegovog obja?njavanja rada proizvodnje i na temlju work flow dijagrama kojeg je sam sastavio, a koji opisuje proces u proizvodnji. Taj dijagram nam je mnogo pomogao u razumjevanju procesa proizvodnje. Nakon kratkog uvoda kojeg su nam kolege pokazale krenuli smo prema prozvodnji. Tamo su nas do?ekali Robert Filipovi? i Mirela Miljak. Oni su nas malo detaljnije uputili u proces proizvodnje i opisali nam ulogu HACCP-a i ISO 9001 standarda.Iz toga smo zaklju?ili da je nemogu?e digitalizirati jedan standard bez drugoga.?to se ti?e Roberta i Mirele, radi se o vrlo sposobnim ljudima koji znaju svoj posao, ali uz to znaju i tehnologiju te shva?aju njezinu va?nost u olak?avanju svakodnevnog rada.Bili su nam, a i bit ?e od velike pomo?i.Koraci koje treba poduzetiOdgovorna osobaKrajnji rokSASTAVIOJurica Grgi?evi?USplitudana30.3.2011.Upravljanje izmjenamaOZNAKAVERZIJEDATUMPRIPREMIOODOBRIOKRATKI OPIS IZMJENA1.02011-04-11Jurica Grgi?evi?Jurica Grgi?evi?Inicijalna verzija2.02011-06-05Jurica Grgi?evi?Jurica Grgi?evi?Dodan tekst u poglavlja .NET, C#2.12011-06-07Jurica Grgi?evi?Jurica Grgi?evi?Male izmene u strukturi poglavlja3.02011-08-10Jurica Grgi?evi?Jurica Grgi?evi?Ve?e izmene dodan sad?aj u vi?e poglavlja3.12011-09-15Stipe ?elarStipe ?elarManje izmjene – uglavnom ozna?ene kroz dokument3.22011-09-18Jurica Grgi?evi?Jurica Grgi?evi?Ispravljene gre?ke, dodane slike i poglavlja koja nedostaju3.32011-09-19Stipe ?elarStipe ?elarManje izmjene – uglavnom ozna?ene kroz dokument3.42011-09-19Jurica Grg?evi?Jurica Grgi?evi?Ispravljene gre?ke koje su ozna?ene u dokumentu3.52011-09-20Stipe ?elarStipe ?elarPosljednje korakcije mentora3.62011-09-20Jurica Grgi?evi?Jurica Grgi?evi?Finalna verzija ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches