Inventariedatabas för SystemDataNätet Författare: Marcus Eriksson Handledare: Thomas Johansson (Umeå Universitet) Jan-Åke Olofsson (Skanova Networks) Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 0. FIGURFÖRTECKNING: ................................................................................................... 4 1. ABSTRACT: ......................................................................................................................... 6 1. ABSTRACT: ......................................................................................................................... 6 2. SAMMANFATTNING: ....................................................................................................... 6 3. INLEDNING: ....................................................................................................................... 7 4. PROBLEMBESKRIVNING: .............................................................................................. 8 5. FÖRUTSÄTTNINGAR: ...................................................................................................... 8 6. DATABASER: ...................................................................................................................... 8 6.1 DATABASTYPER: ................................................................................................................ 9 6.1.1 Hierarkisk databas: .................................................................................................... 9 6.1.2 Nätverksdatabas: ........................................................................................................ 9 6.1.3 Relationsdatabas: ....................................................................................................... 9 6.1.4 Objektorienterad databas: .......................................................................................... 9 6.2 OLIKA DATABASER AV RELATIONSTYP: .............................................................................. 9 6.2.1 Access: ........................................................................................................................ 9 6.2.2 Oracle: ...................................................................................................................... 10 7. PROGRAMMERINGSSPRÅK: ....................................................................................... 10 7.1 VAL AV PROGRAMMERINGSPARADIGM:............................................................................ 10 7.1.1 Procedurella: ............................................................................................................ 10 7.1.2 Objektorienterade:.................................................................................................... 11 7.1.3 Script: ....................................................................................................................... 11 7.2 OLIKA PROGRAMMERINGS SPRÅK AV OBJEKT ORIENTERAD TYP: ...................................... 11 7.2.1 C++: ......................................................................................................................... 11 7.2.2 Java: ......................................................................................................................... 11 7.3 JAVA: ............................................................................................................................... 11 8. IMPLEMENTATION: ...................................................................................................... 12 8.1 JAVA KOMPONENTER:....................................................................................................... 12 8.1.1 Java Servlets: ............................................................................................................ 12 8.1.2 Java JDBC ................................................................................................................ 13 8.1.2.1 JDBC-ODBC brygga (Typ 1): ........................................................................... 13 8.1.2.2 Delvis Java, delvis tillverkar drivrutin (Typ 2): ................................................. 14 8.1.2.3 Mellanlager databasaccesserver (Typ 3): ........................................................... 14 8.1.2.4 Ren Java drivrutin(Typ 4): ................................................................................. 15 8.1.3 SQL: .......................................................................................................................... 15 8.1.3.1 Statement: ........................................................................................................... 15 8.1.3.2 PreparedStatement .............................................................................................. 15 8.1.3.3 CallableStatements ............................................................................................. 16 8.1.4 Java Mail: ................................................................................................................. 16 8.1.4.1 Session:............................................................................................................... 16 8.1.4.2 Authenticator: ..................................................................................................... 16 8.2 ORACLE: .......................................................................................................................... 16 8.2.1 JDBC-Drivrutin: ....................................................................................................... 16 2/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.2.2 Oracle kontakt strategier: ........................................................................................ 17 8.2.2.1 En kontakt per transaktion: ................................................................................ 17 8.2.2.2 Dedikerad kontakt: ............................................................................................. 17 8.2.2.3 Sessions kontakt: ................................................................................................ 18 8.2.2.4 Cached kontakt: .................................................................................................. 18 8.2.3 Oracle detektering och låsning: ............................................................................... 18 8.2.3.1 Låsning: .............................................................................................................. 18 8.2.3.2 Detektering: ........................................................................................................ 19 8.2.4 OracleSQL: ............................................................................................................... 20 8.3 MITT FÖRSLAG TILL PROGRAMSTRUKTUR: ....................................................................... 20 8.3.1 Användare: ............................................................................................................... 21 8.3.2 HTML-sida: .............................................................................................................. 22 8.3.3 Java Applikation: ...................................................................................................... 22 8.3.4 Databas: ................................................................................................................... 24 9. UTVECKLINGSVERKTYG ............................................................................................ 27 9.1 APACHE TOMCAT 4.0.1: ................................................................................................... 27 9.2 TSW WEBCODER INTERNATIONAL 2: .............................................................................. 27 9.3 JCREATOR LE 2.0: ........................................................................................................... 29 10. SAMMANFATTNING: ................................................................................................... 30 11. REFERENSER: ................................................................................................................ 30 12. TACK: ............................................................................................................................... 30 BILAGA 1. ANVÄNDARHANDLEDNING: ...................................................................... 31 INLOGGNING: ......................................................................................................................... 31 PROFILER: .............................................................................................................................. 31 Beställare: ......................................................................................................................... 31 Mottagare: ......................................................................................................................... 34 Entreprenör: ...................................................................................................................... 38 Systemadministratör: ......................................................................................................... 39 3/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 0. Figurförteckning Fig. 1 SDN-nätets uppbyggnad ............................................................................................................................... 7 Fig. 2 Anrop till webb applikation .........................................................................................................................12 Fig. 3 Anropsstruktur JDBC-ODBC brygga ..........................................................................................................13 Fig. 4 Anropsstruktur delvis Java, delvis tillverkardrivrutin ..................................................................................14 Fig. 6 Anropsstruktur ren Java drivrutin ................................................................................................................15 Fig. 7 Anropsstruktur mot Oracle databas .............................................................................................................17 Fig. 8 Anropsstruktur i programmet. ......................................................................................................................21 Fig. 9 Anropsstruktur i Java applikation ................................................................................................................22 Fig. 10 Förklaring över session ..............................................................................................................................23 Fig. 11 Nodtabell ...................................................................................................................................................24 Fig. 12 Beställningstabell .......................................................................................................................................24 Fig. 13 INP-beställningstabell ................................................................................................................................25 Fig. 14 Användartabell ...........................................................................................................................................25 Fig. 15 Tabell över sökbara nodtyper.....................................................................................................................25 Fig. 16 Tabell för godkända entreprenörer .............................................................................................................25 Fig. 17 Relationsschema ........................................................................................................................................26 4/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 5/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 1. Abstract: The purpose of this master thesis is to develop a program that handle orders of ADSL1-, HDSL1-magasin and other elements, from the order being placed through the receipting by the planer to the building by the entrepreneur and finally the node being put into function. In a practical sense the assignment was solved by use of “Rapid Prototyping” which means a fast development of a trial program which in turn was used as a framework för the final product. This way of working demands a close co-operation between developer and client. In this case the request from Skanova Networks was a product to create an inventory of the nodes in one of their networks, and there by simplifing the processing och orders to the network. The final solution was webbased to accomidate reachability and use for the the clients who in turn use the services of Skanova Networks. The program is implemented with the help of “Java 2 Enterprise Edition” (Servlet, JavaMail and JDBC), development work was done with help of Microsoft Access 97 were as the implementation was done with “Oracle 8.1.5”. The Servlet was initiated with help of “Apache Tomcat 4.0.1”. To fully understand the material of this report a small knowledge in the following areas of programming are required, Java- and SQL-syntax, a certain in HTML-programming is also advantageous 2. Sammanfattning: Detta examensarbete har kommit till för att skapa ett program för att behandla beställningar av ADSL2-, HDSL2-magasin och andra element. Från det att order beställs genom behandling av planerare och byggande av entreprenör till slutgiltig initiering av noden. Rent praktiskt har uppgiften lösts med hjälp av s.k. ”Rapid Prototyping” d.v.s. snabb utveckling av ett försöksprogram som sedan använts som mall för att skapa den slutgiltiga produkten. Ett sådant arbetssätt förutsätter ett nära samarbete mellan utvecklare och den presumtiva kunden. I detta fall var kunden Skanova Networks vars önskemål var en produkt som skulle skapa en förteckning av de noder som ingår i ett av deras nät, och därigenom förenkla bearbetningar av beställningar till detta nät. Den slutgiltiga produkten blev webbaserad för att förenkla åtkomst och användande för de kunder som i sin tur nyttjar Skanova Networks tjänster. Programmet implementerades med hjälp av ”Java 2 Enterprise Edition” (Servlet, JavaMail och JDBC), utvecklings arbete skedde med hjälp av Microsoft Access meddans implementationen gjordes med hjälp av ”Oracle 8.1.5”. Dessa ”Servlet” initierades med hjälp av “Apache Tomcat 4.0.1”. 1 ADSL (Asymmetric Digital Subscriber Line) and HDSL (High bit-rate Digital Subscriber Line) are a way for communication to the Internet throe regular copper-wire, twisted pair, to reach a higher speed. Digitalizing the signal before it hits the copper does this. 2 ADSL (Asymmetric Digital Subscriber Line) och HDSL (High bit-rate Digital Subscriber Line) är ett sätt att leverera hög hastighets Internet via vanlig koppar tråd, twisted pair. Digitalisering av signalen före den kommer till kopparen orsakar detta. 6/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Vid läsande av detta examensarbete underlättar det märkbart om läsaren är kunnig i Java- och SQL-syntax, samt ett visst kunnande i HTML-programmering underlättar. 3. Inledning: Skanova är en bifirma till Telia som drivrutin och utvecklar Sveriges största nät för telefoni-, Internet- och bredbandstjänster. Det rikstäckande fibernätet förbinder totalt 3000 orter med ett fibernät på totalt 2 miljoner kilometer och utökas för närvarande med upp till 5 000 – 10 000 kilometer per vecka[1], Systemdatanätet(SDN) är en del av detta nät. SDN tillhandahåller kommunikation internt inom Skanova där all kommunikation utanför nätet skall gå via SDN Extranet(SXN), vilket är ett nät som tillför SDN säker kommunikation mot yttervärlden. SDN har som huvuduppgift att tillhandahålla underhåll av Skanovas tjänster t.ex. ADSL- och HDSL-magasin. ADN2 SDN TAP1 SXN Övriga1 AP Syste Server m Syste Server m Nät- elemen t Fig. 1 SDN-nätets uppbyggnad Mitt examensarbete genomförs våren och sommaren 2002 vid Skanova i Umeå, och skall tillföra förenklad administration av beställningar mot SDN samt en inventariedatabas av vilka platser där det existerar en SDN-nod. Anledningen till att jag valde detta examensarbete var bland annat att jag fick möjlighet att utveckla mitt kunnande inom Java och SQL, vidare fick jag en inblick i HTML, dynamiskHTML och JavaScript. 1 TAP (Teknisk arbetsplats) Används bland annat för att övervaka SDN-nätet, AP Arbetsplats. ADN (Administrativa nätet) Benämningen på Skanovasövergripande nät. 2 7/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 4. Problembeskrivning: SDN används för att underhålla de tjänster som Skanova har, för att detta skall vara möjligt skall en SDN-nod finnas på den plats som en tjänst skall upprättas på. Detta betyder att för varje ny tjänst som skall upprättas på en ort, skall en sökning för tillgänglig SDN-nod utföras. Om en sådan nod är icke existerande på platsen skickas en beställning om utbyggnad. För närvarande finns inget lämpligt program för att automatisera dessa beställningar, ej heller någon enskild förteckning för alla SDN-noder. Mitt arbete var att utvärdera olika lösningar till problemet. Utvärdera lämplig teknik och struktur för en inventariedatabas över SDN-noder. Samla in information till inventarie databasen. Utveckla en metod för uppdatering och bearbetning av data i databasen. Undersöka existerande lösningar till liknande problem, och hur de kan appliceras på detta problem. Föreslå en lämplig lösning för SDN. Realisering av databas med medföljande webb applikation (i möjligaste mån). För att lösa dessa frågeställningar börjar jag med teorin bakom de delar som måste ingå i programmet vilka är programmeringsspråk och databaser. Utifrån dessa teorier kommer jag att välja komponenter, med tanke på de som passar bäst för uppgiften. Efter detta kommer jag att presentera de komponenter ur dessa programmeringsspråk och databaser som jag kommer att använda, med information om olika sätt att använda dessa på och vilka val som är möjliga. Efter detta lägga fram hur ett program för denna uppgift bör se ut. Avslutningsvis kommer jag att ge en förklaring till de verktyg jag har använt under utvecklingen och en användarhandledning till den prototyp som jag har skapat för att undersöka de flaskhalsar som kan uppkomma i programmet. 5. Förutsättningar: En hårt arbetande student(undertecknad) med erfarenhet av C, C++ och databasprogrammering och viss kunskap i Java och JavaBeans. Data från en databas vid namn NOD som innehåller en förteckning på alla de noder som finns i Sverige. Denna databas finns lagrad som en Oracle relationsdatabas och administreras av KI Consulting. Anledningen till att jag nämner företaget är att de är ett utvecklingsföretag som bl.a. tillhandahåller ett verktyg för skapa automatiska uppdateringar i en databas. 6. Databaser: Under 60- och 70-talet upptäckte en rad firmor att den kostnad som kom med att avlöna folk som lagrade och indexerade filer hade blivit för stor och att det borde finnas ett bättre sätt att lösa problemet. Där för lades stora mängder pengar ner under denna period för att lösa problemet och man kom upp med en rad nymodigheter som ännu i denna dag är aktuella. De tre översta av nedanstående databastyper kom till under denna tid[8]. 8/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 6.1 Databastyper: 6.1.1 Hierarkisk databas: De flesta filsystem är ett exempel på en hierarkisk databas, d.v.s. en trädstruktur där varje nod endast har en förälder, vilket gör att det blir svårt att skapa flera-till-flera relationer[2]. 6.1.2 Nätverksdatabas: Hypertext är ett exempel på principen bakom nätverks databaser, skiljer sig från hierarkiska databaser genom att varje nod kan ha fler än en förälder. Gör flera-tillflera relationer enklare att skapa, men strukturen blir komplicerad[2]. 6.1.3 Relationsdatabas: Arbetar med tabeller och filter för sammankopplade tabeller. Använder som, namnet avslöjar, relationer mellan olika tabeller. Ger ett enkelt sätt att representera flera-tillflera relationer[2]. 6.1.4 Objektorienterad databas: Information lagras i objekt, vilka kan ha komplexa knytningar till andra objekt. Uppbyggnaden kan liknas vid pekare i C och referenser i Java[2]. Val mellan dessa typer: Eftersom den information som finns i NOD-databasen är lagrad i en relationsdatabas faller det naturliga valet på denna typ av databas, vidare så kommer man längre fram att se att det finns bruk för flera-till-flera relationer i programmet. Detta bidrar till valet av en relationsdatabas. Den overhead som en objektorienterad databas skulle medföra ligger inte i proportion till det extra arbete som behövs för att föra över informationen från en redan existerande databas. 6.2 Olika databaser av relationstyp: Grunden för relationsdatabaser är matematisk relation, mängdlära och första ordningens predikatlogik och fördes fram år 1970 av Dr. Edgar F. Codd. Det nya med denna modell var att inga föredefinierade relationer existerar mellan två tabeller, vilket medförde att användarna inte behövde veta hur informationen var lagrad för att kunna söka i den[7]. Nedan följer en beskrivning av de databasprogram som jag har undersökt för denna uppgift. 6.2.1 Access: Denna produkt bygger på Microsofts populära databasmotor ”Microsoft Jet Engine”, vilket gör en funktionalitet mot en rad olika filformat, eftersom motorn stöder Open Database Connectivity(ODBC), vilken är den ledande standarden för att arbeta med databaser. Förutom en motor som ger möjligheten att arbeta med flera olika fil format, tillhandahåller Access också en rad grafiska verktyg för att skapa en databas med tillhörande frågor, makron och rapporter[3]. 9/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Access tillhandahåller ett väldigt enkelt verktyg för att både skapa och använda en databas, man skapar väldigt enkelt en databas som kan användas med Java. Dock så är det väldigt lång accesstid då man använder ODBC-JDBC bryggan och att använda en annan drivrutin kostar pengar. 6.2.2 Oracle: En av de mest använda databasprogrammen, som erbjuder en rad olika funktioner för större databaser. Använder två strukturer; en fysisk och en logisk där den logisk på ett ungefär representerar det schematiska uppläggningen av databasen. Vidare så finns möjligheten att manipulera lagringsutrymmet[3]. Oracle är ett svårt verktyg att använda, och framför allt konfigurera, men då man väl har fått igång databasen så är den väldigt enkel att använda bl.a. för att den levereras med en speciell JDBC drivrutin. Oracle vs. Access Detta val var väldigt enkelt att göra. Access skulle kosta pengar, vilket Oracle som Telia har koncernavtal med är gratis. Noddatabasen är uppbyggd med hjälp av Oracle. I framtiden, om en fortsatt implementation skulle göras, fanns målet att använda Telia Message Bus(TMB). Vilket är en informationskanal för att skicka data inom Telia, denna kanal skapas med hjälp av ett program som heter Tibco Integration Manager, vilken arbetar med Oracle och ett fåtal andra databaser, dock ej Access. Ett försök gjordes att i denna implementation använda TMB det föll dock på kostnad, 70 000:- kostade det att låta KI Consulting skapa kopplingen. Valet föll p.g.a. detta på Oracle. 7. Programmeringsspråk: Programmeringsspråk har utvecklats väldigt fort under senare år, allt började 1954 med Fortran som mest användes som ett vetenskapligt språk, till dagens objektorienterade språk. 7.1 Val av programmeringsparadigm: Då man väljer programmeringsspråk skall man vara noga med att välja ett som tillhandahåller den funktionalitet som önskas då det medför väldigt mycket extra arbete att upprätta kommunikation mellan två olika programmeringsspråk. 7.1.1 Procedurella: Den mest använda typen i redan existerande program med exempel som Fortran, Pascal, Cobol och C. Problemet delas upp i individuella procedurer och funktioner, vanligtvis på ”top-down” maner, data delas dock inte upp utan stannar i huvudkroppen. 10/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 7.1.2 Objektorienterade: Det objektorienterade paradigmet är för närvarande det mest använda av alla utvecklings metoder. Detta paradigm kan ses som en rad objekt innehållande data och metoder som kommunicerar mellan varandra. Detta ger en naturligare programstruktur, dock kan programmets gång vara svårare att följa[4]. 7.1.3 Script: Det finns en rad programmeringsspråk som kan användas för att skapa applikationen i fråga t.ex. PHP, Python, Perl och JSP, alla dessa är dock Scriptspråk. Scriptspråk kompileras inte, vilket medför att man icke kan dölja koden. Funktionella vs. OO vs. Script. Eftersom det i första hand skall vara en webbapplikation, lämpar sig icke procedurella språk för detta program eftersom dessa saknar något egentligt stöd för webben. Då återstår scriptspråk och objektorienterade språk. Scriptspråken kan vara väldigt svåra att sätta sig in i, speciellt Perl med vilket man kan göra väldigt mycket på få rader kod men som har en väldigt hög inlärningströskel. Det som dock fällde avgörandet vad gäller språk var tidigare erfarenhet. Jag har tidigare utvecklat program i C++ och känner mig därför mer införstådd i den utvecklingsform som följer med denna typ av språk. 7.2 Olika programmerings språk av objekt orienterad typ: 7.2.1 C++: Ett av de mest använda objekt orienterade språken, som är bakåtkompatibel med C, vilket ger en väldigt enkel övergång från funktionell programmering, p.g.a. likheter i syntax. Har dock inget större stöd för webbprogrammering. 7.2.2 Java: Ett ”nytt” programmeringsspråk som har lånat mycket av sin syntax från C/C++, har också ett mycket väl utvecklat stöd för webbprogrammering. Java vs. C++: Java har ett större stöd för webbprogrammering vilket är en avgörande faktor för detta examensarbete. Ser man vidare så har Oracledatabasen ett inbyggt stöd för Java från version 8.1.5 vilket ytterligare gör den mer lämpad. 7.3 Java: Java är ett programmeringsspråk som egentligen utvecklades för att användas i hemelektronik men introducerades istället som ett gratisspråk när datoranvändandet tog fart under 90-talet. Språket blev snabbt populärt och licenser köptes av bl.a. Oracle och Apple. Språket är till skillnad från C++ helt igenom objektorienterat, (går inte att skriva på annat sätt), med stark typkontroll. Detta tillsammans ger, att man får ett språk som vid utvecklingen skapar mindre fel[6]. 11/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8. Implementation: Tidigare har jag berättat vilka komponenter som jag har valt till implementationen av denna uppgift. Nästa steg är att göra en så kallad ”Rapid prototyping” för att upptäcka dom problem som kan uppkomma. Nedan följer en djupare genomgång av de delar som programmet är uppbyggt av. Summering: Oracledatabas för lagring av order och användarinformation. Java för att skriva applikationen (JDBC, JavaMail, Servlet). HTML för användargränssnittet. Jag har icke nämnt HTML tidigare, detta beror på att det är mer av ett nödvändigt ont för att förmedla informationen som tas fram och inga större finesser används. 8.1 Java komponenter: Den funktionallitet som Javaprogrammet skall stödja är; Ta emot och skicka HTMLkod, söka i databas och skicka mail. Det finns tre olika sätt för Java att ta emot och skicka HTML-kod, alla dessa har dock en sak gemensamt och detta är Servlet3. Så för att förenkla arbetet har jag valt att arbeta med Servlets utan något inslag av Java Server Page (JSP) eller JavaBeans. Databasaccess är en av de grundläggande delarna av programmet för detta har Java en väl utvecklad API4 som kallas JDBC. Mailfrågan var den del som jag själv trodde skulle skapa mest problem men med hjälp av Java Mail, går det att enkelt skapa ett program för ändamålet. 8.1.1 Java Servlets: Java Servlets är ett API4 för att behandla anrop från webbklienter och tillhandahåller ett enkelt sätt att förmedla resultat från operationer tillbaka till klienten. Exempel: Ett anrop kommer från en användare till webbservern, denna kontrollerar mot ”servlet context” om det finns någon webbapplikation som korresponderar mot detta anrop. Om applikationen i fråga existerar skickas anropet vidare till ”webbcontainern”. När denna väl kommit till ”webbcontainern” bestäms vilken applikation som skall behandla den, om det är JSP, Servlet eller annan statisk resurs. Detta sker med hjälp av URL mönster. Om det var en servlet som skulle behandla anropet skickas både anropet och en ”ström”, som gör det möjligt för en servlet att dynamisk svara på anropet. Web Browser Web Server J2EE Web Container Web Application HTTP request JSP? Servlet Context Servlet? HTTP Response Fig. 2 Anrop till webb applikation 3 Små plattformsoberoende program på serversidan som gör det möjligt att skapa affärslogik i HTTP processer. ”Application program interface” kod som används för att lösa en uppgift utan att behöva veta alla detaljer hur detta sker. 4 12/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.1.2 Java JDBC En API4 som gömmer de leverantörsspecifika accessmetoderna mot databasen, vilket ger ett enkelt gränssnitt för utvecklare, det problem som kan följa med detta är laddandet av drivrutin för databasen[5]. Det finns fyra olika typer av drivrutins som kan användas för kommunikation mot databasen. Innan man väljer vilken typ av drivrutin som skall användas bör man kontrollera vilka typer som tillverkaren tillhandahåller. Det är inte säkert att alla fyra typer tillhandahålls. 8.1.2.1 JDBC-ODBC brygga (Typ 1): - Eftersom ODBC bygger, till viss del, på Call Level Interface (CLI) för att kommunicera med databasen. Kan denna brygga arbeta mot alla databaser som stödjer CLI, vilket är de flesta. - Rent praktiskt blir denna drivrutin inte speciellt effektiv eftersom det blir många steg som anropen skall översättas[5]. Java application JDBC API Databas JDBC-ODBC Brygga ODBC API ODBC lager Fig. 3 Anropsstruktur JDBC-ODBC brygga ”Application program interface” kod som används för att lösa en uppgift utan att behöva veta alla detaljer hur detta sker. 4 13/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.1.2.2 Delvis Java, delvis tillverkar drivrutin (Typ 2): - Använder en blandning av Java implementerad och tillverkar specifik drivrutin. Med denna konstellation blir det ett steg mindre än JDBC-ODBC bryggan. - Man får tillgång till alla de metoder som är tillverkar specifika. - Effektivare än JDBC-ODBC bryggan[5]. Java Applikation JDBC API JDBC Driver Tillverkar Specifik API Databas Fig. 4 Anropsstruktur delvis Java, delvis tillverkardrivrutin 8.1.2.3 Mellanlager databasaccesserver (Typ 3): - Ger möjligheten att koppla flera Javaklienter till flera olika databasservrar - Anropet går genom JDBC drivrutin till en mellanlageraccesserver, vilken slutför anropet via ytterligare en drivrutin. - En av fördelarna med denna typ är att en del detaljerna kring kontakten med databasen kan döljas[5]. Java applikation Databas JDBC API JDBC Driver JDBC Driver Server Fig. 5 Anropsstruktur databasaccesserver 14/41 Native Driver Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.1.2.4 Ren Java drivrutin(Typ 4): - Tillverkarspecifik drivrutin som kopplas direkt mot databasen. - Den effektivaste drivrutinen[5]. Java Applikation Databas JDBC API JDBC DRIVER Fig.6 Anropsstruktur ren Java drivrutin 8.1.3 SQL: SQL är det standardiserade språk som används för att arbeta med en databas, Java tillhandahåller tre olika sätt att sända dessa frågor till databasen. 8.1.3.1 Statement: - En textsträng skickas via kontakten direkt till databasen till exempel. - String fnamn = ”hubba”; java.sql.ResultSet rs = statement.executeQuery(”SELECT LASTNAME ”+ ”FROM USER WHERE FIRSTNAME =”+ ’”+fnamn+”’;”); - Problemet med denna sökning är att varje gång en fråga skall ställas måste strängen kontrolleras mot strukturen på databasen. 8.1.3.2 PreparedStatement - Ett anrop behandlas en gång och frågetecken lämnas för att kunna föra in värden till frågan till exempel. String fnamn = ”hubba”; PreparedStatement prep= c.prepareStatement("SELECT LASTNAME FROM USER”+ ”WHERE FIRSTNAME = ?"); prep.setString(1, fnamn); java.sql.ResultSet rs = prep.executeQuery(); - Är effektivare om man skall skicka flera frågor eller göra ”batch”uppdateringar. - Gränsen när PreparedStatement är effektivare än Statement går vid 65 anrop[5]. 15/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.1.3.3 CallableStatements - Ett anrop lagras på databasen för att snabbt kunna exekveras. - Detta sätt att anropa databasen är dock inte det snabbaste, som man lätt kan tro, detta beror på att man får en extra accesstid för att anropa det lagrade anropet. - Det fall det kan löna sig att använda lagrade anrop är när man skall göra komplicerade anrop som involverar flera del anrop. Då kan lagrade anrop användas för att slippa skicka resultatet från delanrop tillbaka till anropsprogrammet[5]. 8.1.4 Java Mail: Java Mail API fungerar på ett liknande sätt som JDBC. Det abstraherar bort sändandet och mottagandet för ett visst protokoll och tillhandahåller istället ett antal generiska kommandon som fungerar på de flesta protokoll. 8.1.4.1 Session: - Skall inte förväxlas med Servlet Sessions, utan är en helt fristående del från denna. - Innehåller kontakt information till mailservern, dock ingen inloggnings information. 8.1.4.2 Authenticator: - Ger möjligheten att bygga en autentiserare som kan arbeta mot mailservern och/eller en egen inloggnings procedur. Dessa är de två viktigaste för att kunna sätta skicka mail med hjälp av Java. 8.2 Oracle: Som jag har nämnt tidigare så är Oracle en av de största tillverkarna av databasprogram. Vad som gör den extra lämplig för att använda med Java är att den har ett inbyggt stöd genom att tillhandahålla en OracleSQL klass. För att skapa en kontakt i programmet mot databasen krävs en drivrutin, dessa finns av flera olika typer och lämpar sig för olika typer av program. Nedan följer en uppräkning av de olika drivrutiner som finns för Oracle. 8.2.1 JDBC-Drivrutin: Det finns två typer av Javadrivrutin som tillhandahålls av Oracle, dessa är av Typ 2 och Typ 4, d.v.s. delvis Javadrivrutin och ren Javadrivrutin. Oracle har skapat två drivrutin till varje typ, två för klient sidan och två för server sidan. Utöver dessa finns Sun’s egen JDBC-ODBC brygga[6]. Klient: - JDBC delvis Java drivrutin. - JDBC Java drivrutin. Av dessa lämpar sig ren Java drivrutin bäst till de flesta program, eftersom den ger samma, och ibland högre, prestanda mot databasen. Enda tillfället när delvis Java drivrutinen ger bättre prestanda än Java är vid CallableStatements.[6]. 16/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Server - JDBC delvis Java drivrutin. - JDBC server sida Java drivrutin. Om man har möjligheten att få direkt kontakt med databasen är delvis Java drivrutinen effektivast, medan man för program där webbservicen och databasen ligger på olika servrar bör man använda server sida Java drivrutin, av samma orsaker som ovan[6]. JDBC Java Drivrutin JDBC delvis Java drivrutin driver Oracle Call interface ODBC drivrutin JDBC-ODBC drivrutin Oracle Listener Oracle Databas Fig. 7 Anropsstruktur mot Oracle databas Den del som alla drivrutiner måste kommunicera med är Oracle Listener som bland annat lagrar vilka som kontaktar databasen och vilka ändringar som görs. Eftersom man i denna uppgift inte tillåter att klienten direkt ansluter till databasen, utan går via en servlet, och databasservern kommer att finnas på samma dator som webbservern lämpar sig delvis Java drivrutinen (typ 4) för server bäst. 8.2.2 Oracle kontakt strategier: Efter man har hittat den drivrutins typ som passar bäst för just detta program kommer man till frågan: Hur skall kontaken mellan program och databas ske? 8.2.2.1 En kontakt per transaktion: - Varje Servlet öppnar en ny kontakt för varje transaktion som skall göras och stänger den när transaktionen är klar. - Den mest använda transaktionsstrategin, och den mest ineffektiva. 8.2.2.2 Dedikerad kontakt: - Varje Servlet öppnar en ny kontakt och stänger den när servleten stängs. - Den mest kostsamma av alla strategier, eftersom ett stort antal kontakter kommer att vara öppna mot databasen samtidigt. - Ett annat problem som kan uppstå är att lagra vilken användare som har gjort vilka ändringar. 17/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.2.2.3 Sessions kontakt: - Varje ny användare öppnar en kontakt som sedan är öppen till dess att användaren loggar ut. - Kräver även den ganska många kontakter. - Bör användas med ”sessionbinding” för att kunna känna av när en session stängs, detta scenario kan uppstå om en användare går ifrån en sida utan att logga ut. 8.2.2.4 Cached kontakt: - För varje program finns en pool med kontakter till en databas som dynamiskt öppnar och stänger kontakter till en databas, beroende på hur lång tid det var sedan en kontakt senast användes. - Den mest effektiva metoden. - Det problem som kan uppstå med denna strategi är att det blir svårare att identifiera vilka som har gjort ändringar i databasen[6]. Ett av de krav som ställdes på programmet var att alla ändringar som sker i databasen skall lagras. Detta kan tyckas tala emot en Cache med kontakter, men eftersom varje enskilt värde som ändras skall lagras kommer användaren att vara tvungen att sätta en signatur på den data som ändras. Detta kommer att ge en, i värsta fall, fördubblad mängd skrivning till databasen, men det är ett av kraven för systemet. 8.2.3 Oracle detektering och låsning: Ett viktigt avsnitt då man arbetar med databaser är integritet, säkerställa att uppdateringar inte skriver över varandra, t.ex. ”Användare A läser rad 1, var efter också användare B rad 1. Därefter skriver B värdet 37 till raden var efter användare A skriver värdet 15 till raden” Ovan har vi ett scenario där användare B förväntar sig att finna värde 37 på raden, men det har blivit över skrivet. För att rätta till detta problem finns det ett antal möjligheter. 8.2.3.1 Låsning: Implicit låsning: - Hanteras automatiskt av programmet. - Vid varje ändring av databasens innehåll, låser transaktionen databasen mot andra uppdateringar. Vilket betyder att en annan transaction kan läsa innehållet i raden men inte uppdatera det. 18/41 Radlåsning: - Hanteras i SQL-frågorna som skickas mot databasen. - Om en transaction skall läsa en rad, för att sedan uppdatera den, kan användaren skicka med ett ”FOR UPDATE” i SQL frågan. Detta låser hela raden till transaktionen är gjord. - Detta skulle kunna lösa problemet om man lade till alternativet ”NOWAIT”, vilken gör att en transaction inte väntar oändligt länge för att få låsningen. - Det krävs mycket arbete från programmeraren för att få detta att fungera och det finns effektivare sätt. Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Tabellåsning: - Hanteras i SQL frågan. - Väldigt ovanligt sätt att bearbeta databasintegritet och skall bara användas som en sista utväg, eftersom det försämrar prestanda för programmet. Låsning löser problemet som ställts upp ovan, men ett annat problem kan uppkomma. ”Användare A läser rad 1 och låser denna rad för uppdateringar, Användare B läser efter detta, värdet på samma rad försöker skriva uppdatering, det går ej eftersom raden är låst. A skriver efter detta på raden och släpper låsningen varefter även B skriver in ett nytt värde på raden” Detta scenario kan lösas med detektering. 8.2.3.2 Detektering: Uppdateringsräknare - Till varje rad läggs en räknare som visar vilket nummer den nuvarande uppdateringen har i tur ordningen. Detta betyder att en uppdatering kan kontrollera om det skett en uppdatering mellan det att sessionen har läst data till dess den skall skriva data. - Löser problemet kräver dock extra kod för att det skall fungera. - Räknas som ett pessimistiskt angreppssätt. Jämförelse med alla värden - Före varje uppdatering av databasen kontrolleras det om det gjorts några andra uppdateringar genom att jämföra alla värden som lästs in mot de som finns i databasen. - Löser problemet, kräver mindre extra kod. - Räknas också som ett pessimistiskt angreppssätt Jämföra alla värden som skall uppdateras: - Vid en uppdatering kontrolleras endast primärnyckeln och dom fält som skall uppdateras mot databasvärdet. - Detta ger ett mindre antal misslyckande transaktioner. - Svårt för programmeraren att skapa ”WHERE” fältet. För att kunna garantera dataintegritet bör man kombinera detektering och låsning, för denna diskussion finns det två olika sätt att angripa problemet. Pessimistiskt: ”Det finns en stor chans att två transaktioner kommer att skriva över varandra” Optimistiskt: ”Det är inte vanligt att två transaktioner skriver över varandra” 19/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Jag börjar med de två pessimistiska tillvägagångssätten. ”SELECT FOR UPDATE NOWAIT”: - Varje transaktion låser raden den skall behandla och spärrar den för alla andra transaktioner. - Eftersom en transaktion som försöker få tillgång till en rad som är låst får ett ”exception” så finns det ingen möjlighet för den att skriva över en uppdatering. - Kräver mycket kod, alla transaktioner måste följa reglerna för att integriteten skall behållas. - Ett problem som kan uppstå är att en icke avslutad transaktion kan uppehålla en rad i oändlig tid. Pessimistisk detektering och implicit låsning: - Implicit låsning hanteras automatiskt av databasen, det enda som läggs till här är en kontroll som uppdateringsstämpeln. - Detta löser problemet och ger enkla SQL frågor. - Dock tillkommer problemet att underrätta användaren om uppdateringen har misslyckats. Optimistiskt Optimistisk detektering med implicit låsning: - Nyckeln och de värden som skall modifieras sparas och används sedan för att kontrollera om en uppdatering skett på raden. - Man måste fortfarande underrätta användare om att en uppdatering misslyckats, men detta kommer att hållas till ett minimum. Av dessa tre möjliga val passar sig den optimistiska bäst för denna uppgift, eftersom systemet inte kommer att utsättas för hård belastning och det information som hämtas oftast skall användas för att läsas. 8.2.4 OracleSQL: Oracle tillhandahåller ett antal extra funktioner utöver de som redan finns Java SQL. Dessa är dock av mindre betydelse för detta program. Den enda funktion som kan vara intressant att använda är ”defineColumnType”, med vilken man kan definiera hur strukturen ser ut i databasen. Anledningen till att göra detta är att frågorna inte behöver anropa databasen om vilken struktur den har, vilket drastiskt sänker accesstiden för en fråga[5]. 8.3 Mitt förslag till programstruktur: Jag har tidigare berättat vilka programmeringsspråk som skall användas och varför, då undrar säkert vän av ordning vilken struktur programmet bör ha. För att besvara detta börjar vi från början. Det bör påpekas att detta förslag inte är samma som den implementation som förklaras i bilagan, utan endast en förklaring till hur implementation borde se ut för att uppfylla alla krav. 20/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Nedan visas en enkel bild av hur informationsflödet bör sker i programmet. Java Applikation HTML sida Önskemål Respons Data SQL Databas ResultSet Fig. 8 Anropsstruktur i programmet. En användare skickar sina önskemål via en HTML sida till en Java Applikation som lagrar dessa önskemål i databasen, en bekräftelse går sedan tillbaka till användaren. 8.3.1 Användare: Det finns fyra typer av användare som har behörighet till olika nivåer i programmet. Beställare: - Skall kunna söka efter noder där det skulle behövas en SDN-nod. - Ska fylla i en beställning på vad noden skall användas till. - Denna beställning lagras i databasen och ett mail skickas. Mottagare: - Tar emot mail, som är en bekräftelse på att en beställning kommit in. Kontrollerar då med tidigare beställningar om det finns en möjlighet att bygga en grupp med SDN-noder. - Om en sådan grupp existerar samlas dessa under en beställning med ett unikt INP nummer. - Viss konfigurering sker som förhandsjobb innan beställningen går vidare till entreprenören. - När klarrapportering ankommit från entreprenören, kan INP beställningen flyttas till klara jobb. Entreprenör: - Entreprenören tar emot INP beställningen, och ser vilka noder som innefattas i denna beställning. - Om någon av noder inte går att bygga förs detta in i databasen med en kommentar om varför, detta meddelas per mail till mottagaren. - När en beställning är klart, klarrapporteras den till mottagaren. Administratör: - Har möjlighet att skapa nya användare. - Kan gå in i databasen och redigera den. - Har möjligheten att söka fel. - Skall kunna skapa sorterade utdrag ur databasen för utskrift. Eftersom dessa användare kommer att ha olika rättigheter till databasen, bör man implementera fyra olika cache med kontakter för varje användargrupp. Detta betyder att det vid varje tillfälle kommer att finnas minst fyra aktiva kontakter till databasen. 21/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.3.2 HTML-sida: Här sker interaktionen mellan användare och Java-applikationen, dess innehåll bör genereras dynamiskt av Java programmet. För att komma åt behövs ”cookies” eftersom HTML, per definition, är tillståndslöst. ”Cookies” gör det möjligt att skapa en identifikations möjlighet för programmet och därigenom möjligt för applikationen att tilldela användaren resurser som skall vara öppna under hela användarens session i programmet. 8.3.3 Java Applikation: Skall innehålla logiken som behandlar den information som kommer in. Denna har byggts upp på ett Objektorienterat sätt där det existerar ”Handlers”, objekt med data och metoder, för användaridentitet och interaktion med databasen. HTML-sida Önskemål Java Applikation Request Handler Anrop Databas SQL fråga Fig. 9 Anropsstruktur i Java applikation Javaapplikationen i sig består av ett antal servlets som interagerar via HTML-sidan, d.v.s. en servlet skapar dynamiskt en HTML-sida som innehåller information för att anropa andra servlets. Ur säkerhetsaspekt kan detta tyckas vara en mindre bra lösning. Ett sätt att lösa detta är att använda sessions, som jag har nämnt tidigare. Dessa sessions skapas när en användare loggar in i systemet och terminerar när antigen en användare loggar ut eller om en session inte använts under en längre tid. Under programmets exekvering kan inte en användare använda systemet utan att vara tilldelad en giltig session. Nu används inte session enbart till att kontrollera giltigheten för en användare, objekt kan också bindas till en session så att de finns med till nästa servlet som användaren kommer till. 22/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Servlet 1 skapar en Handler (Handler 1). Servlet 1 Marcus Eriksson Handler 1 lagras i session Handler1 17-07-14 Servlet 1 Handler 1 arbetar med databasen och är tillslut klar Användar info Användar info Session Handler 1 Servlet 1 skapar en HTML Sida, och dör sedan. Användaren anropar nästa servlet med hjälp av HTML-sidan. Session Servlet 2 använder handler 1 från session. Servlet 2 skapas Servlet 2 Handler1 Servlet 2 Användar info Användar info Handler 1 Session Session Fig. 10 Förklaring över session Handlers: Olika Handlers bör sköta all kontakt som sker med databasen, detta för att skapa en modularisering av kommunikationen. Om varje servlet skulle kommunicera mot databasen skulle samma kod skrivas flera gånger och ändringar skulle vara svåra att implementera. För handlers skall det implementerat en cache med kontakter mot databasen. Som nämnts tidigare är detta det effektivaste sättet ta tillvara databasresurserna. Mitt angreppssätt för att strukturera handlers går ut på att det finns en övergripande ”search handler” som används för att söka efter flera rader av data, denna data kan sedan sökas igenom för att hitta enstaka rader som lagra i ett objekt av samma typ som tabellens rader. När man väl hittat den rad man söker efter, kan denna laddas in i en Handler som tillhandahåller metoder för att manipulera raden i fråga och lagra den i databasen. Den faktiska lagringen på disk bör inte ske direkt varje gång, utan informationen skall sättas in i en cache, tills tillräckligt mängd data har accumulerats. Detta ger att senare sökningar mot samma mängd data sker snabbare och man får en snabbare exekvering av programmet, dock med nackdelen att data kan gå förlorad, vilket kan rättas till med hjälp av loggning av ändringar i databasen. 23/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 8.3.4 Databas: En av de viktigaste egenskaper som denna databas skall tillhandahålla är loggning av ändringar som sker i databasen, vad som ändrades av vem och när. Detta krav kommer i konflikt med implementationen av kontakter med hjälp av ”cache”. För att lösa detta skall det för varje rad finnas ett uppdateringsfält där användarnamn och datum skall föras in på den person som har gjort ändringen. Detta upplägg skulle ge denna struktur på NOD-databasen. Fig. 11 Nodtabell Detta är dock inte all den information som finns i NOD-databasen, utan bara den mängd som behövs för att skapa programmet. Efter beställaren sökt och hittat noden i NOD-databasen, görs en beställning. Denna beställning lagras i beställnings-tabellen i databasen. Fig. 12 Beställningstabell Det bör påpekas att anledningen till denna mängd av rader, är att beställningsprotokollet för *DSL och SDH inte är lika. 24/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 När ett antal beställningar kommit in skall dessa sammanföras baserat på FOområde5, varefter de skall konfigureras för att sedan skickas till en entreprenör. Tabellen för detta ser ut på följande sätt. Fig. 13 INP-beställningstabell Nästa tabell som finns i denna databas är användartabellen, som innehåller dom personer som har rättigheter att använda programmet. Fig. 14 Användartabell Det som finns kvar nu att förklara är två mindre tabeller. Den första av dessa tabeller innehåller de noder som är sökbara för beställarna. Fig. 15 Tabell över sökbara nodtyper Och den andra vilka företag som är tillåtna att beställa till. Fig. 16 Tabell för godkända entreprenörer Dessa tabeller, som sammantaget blir databasen för programmet, uppfyller de krav som ställs. Alla ändringar kommer att loggas eftersom varje skrivning kommer att ändra stämpeln och tidigare skrivna värden kommer att lagras av databasen som textfil. 5 FO-område är den senaste indelning som Telia har på Sverige, andra typer av indelningar finns också i databasen dessa på region och TLO, alla har dock det gemensamt att de bygger på geografi. 25/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Relationerna i databasen ser ut på följande sätt. Fig. 17 Relationsschema 26/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 9. Utvecklingsverktyg Eftersom en huvudsakliga uppgiften var att utvärdera teknik och struktur för inventariedatabasen, har inte valet av utvecklings verktyg varit det viktigaste. 9.1 Apache Tomcat 4.0.1: Referensimplementation för Servlets och Java Server Page(JSP), vilken på ett enkelt sätt sätter upp strukturen för att skapa Servlets. 9.2 TSW Webcoder International 2: Ett grafiskt verktyg för webbdesign, fungerar väldigt bra. Utveckling sker med hjälp av förprogrammerade knappar eller med hjälp av ren HTML kodning, vilket programmet hjälper till att skapa. Vidare så finns det tre olika ”vyer” som hjälper till under utvecklings arbetet. 27/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Där ”Edit” tillhanda håller plats för HTML-programmering, ”Preview” ger en bild av vad man har programmerat hittills och ”QuickEdit” ger ett grafiskt gränssnitt för att placera komponenter på sidan, denna funktion stöds inte fullt ut av programmet men har, vad jag har märkt, aldrig krånglat. Det finns ytterligare funktioner som förenklar designen, bl.a. en editor för olika Scriptspråk. Och ett val för att skicka webbsidan via FTP. 28/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 9.3 JCreator LE 2.0: En enkel editor för Java som ger en bra överblick på vilka funktioner som ingår i ett program och även vilka program som ingår i ett projekt. Ger också stöd vid kompilering och exekvering av programmen, man kan bl.a. specificera behovet av mer utförliga felmeddelanden. 29/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 10. Sammanfattning: Detta avslutar min rapport på det examensarbete som jag har arbetat med på Skanova, som sista del har jag valt att göra en kort resumé på det arbete jag har gjort. Det förslag till implementation som jag har framfört är byggt med grundtanken att vidare utveckling skall vara möjligt. T.ex. har jag valt Oracle databasen för att den är en av de få databaser som Tibco Integration Manager, som används på Telia för att kommunicera med databaser inom koncernen, arbetar mot. Vidare var ett av kraven att programmet skulle vara webbaserat vilket talade för att använda Java, vilken har ett bra stöd för just sådan programmering, att sedan Oracle har egna bibliotek för interaktion mellan Java och Oracle försämrar inte heller läget. Ser man sedan det sätt, på vilket jag har implementerat programmet i Java ser man att möjligheterna för vidare utveckling är goda eftersom all kommunikation med databasen är modulariserad, så även resultaten från databassökningarna. Som slutord vill jag nämna att arbetet med detta projekt har varit väldigt lärorikt och intressant. Och har givit mig mycket inför ett framtida arbete med liknande projekt. 11. Referenser: 1. Skanova Networks AB [email protected]: Om Skanova: Presentation, www.skanova.com/index.asp?lev=32 (2002-06-25). 2. Ulfhielm, Ulf: KTH/ISK Databasteknik 8p, 2001, http://www2.isk.kth.se/kursinfo/6b4019/FoV-2001/Overhead/DB3OH-Nr04-dbms.ppt (2002-07-02) 3. Elmasri Navathe, Fundamentals of database systems, tredje upplagan, Addison-Wesley, 2000 4. Schach, R. Stephen, Classical and Object-oriented Software engineering, tredje upplagan, McGraw-Hill, 1996 5. Allamaraju, Subrahmanyam et al ,Professional Java Server Programming, J2EE 1.3 Edition, Wrox, 2001 6. Bales, Donald, Java Programming with Oracle JDBC, 1st Edition, O’Reilly, 2002 7. Greenwald, Rick, Oracle Essentials, 1st Edition, O’Reilly, 1999 8. http://wwwinfo.cern.ch/db/aboutdbs/history/industry.html, A Brief History of Databases (2002-08-05) 12. Tack: Jag skulle vilja tacka Jan-Åke Olofsson och alla andra på Skanova som har kommit med värdefulla synpunkter på arbetet som har hjälpt mig att fullborda detta examens arbete. Tack även till Johan Furberg som har hjälpt mig där mina kunskaper i Java inte har räckt till. Vill även tack min handledare på Universitetet Thomas Johansson som har hjälpt mig med denna rapport. 30/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Bilaga 1. Användarhandledning: Innan vi gör djupare in på användarhandledningen bör det på pekas att denna implementation inte har samma funktionallitet som den som beskrivits i rapporten, detta för att tid inte har funnits för att implementera allt. Men det kanske kommer i version 1.1. Inloggning: Vid inloggningen kontrolleras användarnamnet och lösenordet mot dess motsvarighet i databasen, lösenordet i sig kommer ej upp i klar text utan vid fråga mot databasen får man endast ett svar om lösenordet stämmer eller ej. Om lösenordet stämmer skapas en session för användaren, där användarnamnet lagras. Skulle användaren inte göra något under 5 minuter kommer sessionen automatiskt att avslutas, för att en annan användare inte skall kunna göra ändringar i databasen och lagra dessa under annat namn än sitt eget. Profiler: Det finns fyra olika typer av användare som alla har olika vägar genom programmet, jag kommer att gå igenom dessa i tur och ordning. Beställare: Det första sida som beställaren kommer till är sök sidan. 31/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Här kan användaren skiva in en ort för den nod som skall sökas efter, eller klicka på stations signatur för att söka efter nodens betäckning. Eftersom SDN noder endast kan sättas på platser där det finns Ö, ÖK eller ÖS noder är endast dessa sökbara, om man lämnar blankt kommer programmet att returnera alla noder med dessa typer. Jag kommer nu att göra en sökning HJÖ ÖS och blankt för Nod typ betäckning. Man ser här att det finns en ÖS nod i Hörnsjö och man skulle kunna få fram samma resultat om man endast sökte på Hörnsjö. Man kan nu antingen välja att söka efter en ny nod med hjälp av samma sökfält som fanns i de tidigare bilderna eller välja att börja behandla beställningen för Hörnsjö. Vi går vidare och behandlar beställningen för Hörnsjö. Man får nu fram denna bild, den kan tyckas onödig men är väldigt viktig om man vid sökningen fått fram flera olika noder som kan vara rätt. Här ser man den fullständiga adressen för noden. Om det var rätt nod trotts allt går man vidare med hjälp av submittknappen. 32/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Här kan man välja om beställningen gäller ett ADSL-, HDSL-magasin eller ett SDH nätelement. Dessa val kommer nu att gås igenom i tur och ordning. Här ser man att en del av uppgifterna är för tryckta t.ex. Beställarens namn telefon och e-post som har lagrats i sessionen då man loggade in. Vidare är även det objekt som beställningen gäller förtryckt. Beställningsformuläret för HDSL ser ut på samma sätt med samma fält som skall fyllas. SDH formuläret däremot är inte av samma typ. 33/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Mottagare: Mottagaren är den på Skanova som tar emot beställningen från kunden, start sidan för denna person ser ut på följande sätt. Första valet av dessa är samma sökning som för beställare med den skillnad att alla typer är sökbara, detta för att en mottagare skall kunna se om det redan finns en SDN nod på orten6. 6 Från början var det tänkt att programmet automatiskt skulle undersöka om det fanns en SDN nod på noden med hjälp av x och y koordinater. Detta visade sig icke var genomförbart eftersom alla noder inom en stad hade samma x och y koordinater. 34/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Sökning av beställning är den viktigaste funktionen för mottagaren eftersom det är här man hittar dom beställningar som har kommit in och har möjlighet att se hela beställningen. Här har man möjlighet att specificera vilken typ av nod som skall sökas efter och söka efter dessa med hjälp av beställningsnummer, beställare, nod signatur och FOområde. Nedan följer resultatet på en sökning av FO-området NA. Här har man nu möjligheten få mer information om beställaren och, om beställningen ingår i en INP7-beställning, gå till denna. Bilder av hur INPbeställningen ser ut kommer senare. 7 INP-beställning är en samling av beställningar inom samma FO område som satts ihop för att de skall behandlas samtidigt. 35/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Nästa alternativ som existerar för mottagaren är sökning efter användare, detta alternativ finns för att mottagaren skall kunna kontakta beställaren av en speciell order. Man kan här söka efter antigen användarnamn eller namn, där namn inkluderar förnamn och efternamn. Resultatet från denna sökning ser ut på följande sätt. Detta är också den bild man skulle få om man sökte begärde information om en användare från en beställning. Vidare så finns möjligheten för mottagaren att skapa entreprenör- och beställaranvändare, dock kan nya entreprenörer endast komma från företag som sedan tidigare har rättigheter att ta emot beställningar. 36/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Nästa möjlighet som finns för mottagaren är sökning efter INP-beställningar, detta är dock ett något missvisande namn efter som man vid sökning mot en icke existerande INP nummer får möjligheten att skapa en ny INP beställning. Om man gör en ny beställning kommer de beställningar upp som inte är tilldelade något INP-nummer, sorterade efter FO område. Om man lägger till denna beställning får man en kvittens på att registreringen är gjord och möjligheten att gå till beställningen. Här har mottagaren möjlighet att indikera vilken konfigurering som är gjord, se mer ingående på de beställningar som ingår, ta bort enskilda beställningar, ta bort INP numret och även klarrapportera beställningen. 37/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Entreprenör: Entreprenören är den som bygger noderna i en INP-beställning, hur entreprenören får vetskap om beställningen är icke klart i detta skede, dock så bör en funktionsbrevlåda vara en enkel lösning på det problemet. De val som entreprenören har är följande: De olika valen ger följande: Hämta INP - Hämtar de INP-beställningar som är skickade till det företag som entreprenören arbetar på. Sök INP - Ger möjligheten att söka efter INP-beställningar som skickats till företaget, har dock ej implementerats klart ännu. Hämta noder - Har ej implementerats ännu men skall ge möjligheten att hämta de noder som tidigare behandlats av företaget, men ännu ej är klara. Sök noder - Har ej heller blivit implementerat, men skall göra samma som ovan med den skillnad att det man söker efternoder. Det första valet ser ut som följer: Man ser här vilket FO-område INP-beställningen tillhör, när den beställdes och när den klarrapporterades. 38/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Man kan gå vidare och se på beställningen mer i detalj: Här har man nu möjligheten att ändra lovat datum och även att lägga kommentarer till de noder som ingår i beställningen. Systemadministratör: Har följande val: Lägg till användare: - Här har användaren möjlighet att lägga till nya användare, av alla fyra typer. Ta bort användare: - Ta bort någon av de redan existerande användarna. Ändra sökbara nodtyper: - I början kan endast noder av typ Ö, ÖS och ÖK sökas efter, det kan vara aktuellt vid ett senare tillfälle att ändra detta. Sök fel: - Det finns en möjlighet att fel kan uppstå i databasen, här finns en sökning om det finns några fel i databasen. 39/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Det första av dessa val ser ut som följer: Här fyller man i på samma som tidigare dom uppgifter som behövs, märk också att det nu finns fyra val på användartyp i stället för två. Nästa val ser ut som följer: Man markera vilka användare man vill ta bort och trycker sedan ta bort användare. Vidare så har systemadministratören möjligheten att ta bort eller lägga till sökbara nodtyper. 40/41 Examensarbete 20p Inventariedatabas för Systemdatanätet Marcus Eriksson 17-07-14 Det som visas vid valet av någon av dessa möjligheter är en lista med nodtyper. Nästa möjlighet som finns för systemadministratören är sökning av fel, som ovan får man ett antal val att välja mellan. Kort förklaring på de olika val som finns. INP utan noder: - Kontrollerar om det finns en INP-beställning som inte har några noder tilldelade till sig. Nod med icke giltigt INP nummer: - Om man tagit bort ett INP nummer finns möjligheten att ändringen inte är gjord på alla noder. Nod med icke giltig beställare: - Om en beställare blivit fråntagen sina rättigheter, finns möjligheten att en beställning ligger kvar i dennes namn. Samma FO på alla noder i INP-beställning: - Ett av kraven från entreprenörerna är att alla noder som ingår i en INP beställning skall finnas inom samma FO, detta är bara en kontroll för detta. Alla val ovan söker efter fel men det finns inga metoder för att rätta till felen, detta måste göras direkt i databasen. 41/41